10/10/2018, 11:37
Làm sao để khi nhấn F5 không bị insert dữ liệu nưã
Khi lập trình PHP để insert dữ liệu vào table, thường có 1 trang có form nhập liệu và 1 trang action.php để thực hiện việc insert dữ liệu, vđề là khi nhấn submit -> action.php, xong xuôi mình nhấn F5 tại trang submit thì dữ liệu lại dc chèn vào table 1 lần nưã...cho mình cách giải quyết vđề này.
Bài liên quan
hoặc dùng session để kiễm tra.
private bool _refreshState;
private bool _isRefresh;
protected void btnAdd_Click(object sender, EventArgs e)
{
if (!_isRefresh)
{
//Thực hiện công việc nào dó.
}
}
protected override void LoadViewState(object savedState)
{
try
{
object[] AllStates = (object[])savedState;
base.LoadViewState(AllStates[0]);
_refreshState = bool.Parse(AllStates[1].ToString());
_isRefresh = _refreshState ==
bool.Parse(Session["__ISREFRESH"].ToString());
}
catch
{ }
}
protected override object SaveViewState()
{
Session["__ISREFRESH"] = _refreshState;
object[] AllStates = new object[2];
AllStates[0] = base.SaveViewState();
AllStates[1] = !(_refreshState);
return AllStates;
}
Chúc vui vẻ
================================================== ==
vào đây tải mã nguồn kèm theo sách của nhà sách Minh Khai và mã nguồn khác (luôn cập nhật).
chi tiết tại www.nguyenlan.com/down.aspx hoặc liên kết góc bên phải của www.nguyenlan.net
================
Khóa học, làm đề tài tốt nghiệp, hỗ trợ: www.nguyenlan.net
Hỗ trợ đọc và mua sách, chia sẻ lâu dài: www.nguyenlan.com
Nick YH: nguyenlansach
Có thể dùng session đặt cái timeout để giới hạn lại
còn mình mình quên để actt=insert trên query string. Khi insert kiểm tra có phải action insert hay không ? nếu phải mới insert. khi insert xong redirect về trang nào đó để thoát khỏi sự kiện submit
// Proc part
if($_POST***91;'rock'***93; == $_SESSION***91;'mywork'***93; && $_POST***91;'rock'***93; != "") {
// Accept action
}
// Reset/create action sesion
$_SESSION***91;'mywork'***93; = rand(000000, 999999);
....
// Form part
<form method=POST>
<input type=hidden name=rock value="<?=$_SESION***91;'mywork'***93;?>">
....