我有這個頁面,當打開時只是讀取一些會話變量,並將它們分配給新的變量,然後取消它們,我這樣做,所以他們不能被轉移到另一個頁面。這一切都很好。提交按鈕正在運行會話驗證,而不是
但是,我也有一個表單在同一頁上的提交按鈕。出於某種原因,當我按提交按鈕時,它沒有完成它應該的查詢,只是重用了會話檢查代碼。這是因爲會話變量未設置,然後未通過驗證。
爲什麼重新運行該會話驗證和不運行我的提交按鈕的代碼/
這是在頁面的最頂端的會話驗證,並且是出於某種原因是重新運行該代碼對提交按鈕點擊
$ahid="";
$bid="";
$np="";
$nt="";
if (isset($_SESSION['ahid'])) {
$ahid = $_SESSION['ahid'];
unset($_SESSION['ahid']);
if (isset($_SESSION['bid'])) {
$bid = $_SESSION['bid'];
unset($_SESSION['bid']);
if (isset($_SESSION['nt'])) {
$nt = $_SESSION['nt'];
unset($_SESSION['nt']);
if (isset($_SESSION['np'])) {
$np = $_SESSION['np'];
unset($_SESSION['np']);
}else{
header('Location: builders.php?hi=1');
exit();
}
}else{
header('Location: builders.php?hi=2');
exit();
}
}else{
header('Location: builders.php?hi=3');
exit();
}
}else{
header('Location: builders.php?hi=4');
exit();
}
這是提交時應該運行按鈕的代碼,而是甚至沒有觸及
if(isset($_POST['build_chk_finish'])){
$construction_insert = mysql_query("INSERT INTO construction (user_id, estate_id, addon_h_id, builder_id, con_total_price, con_total_time, con_time_started, con_time_ending, con_completed)
VALUES('$user_id', '$estate_id', '$ahid', '$bid', '$np', '$nt', now(), '$future_date', '0')", $general)
or die (mysql_error());
$construction_id = mysql_insert_id();
$con_error="";
$con_error = "Congratualtions! Your Builder has been hired and has begun work.";
$_SESSION['error'] = $con_error;
header("Location: houses.php");
}
只是爲了補充信息,我按下提交按鈕,它在第一次會話驗證builders.php?hi=4
上失敗。
這裏是提交按鈕
<input name="build_chk_finish" type="submit" class="build_chk_finish" id="bc_submit"/>
所以,就讓我和你談談SQL注入.. – dbf
@dbf由於這僅僅是腳本的一部分,使用你怎麼可能是肯定的變量在查詢中沒有正確逃脫? – Jocelyn
@Jocelyn,讓我只是說我有一個非常大的感覺,那些變量是沒有逃脫的。其次,任何有一點知識的人都會早已拋棄了mysql_ *年齡.. – dbf