我有这个页面,当打开时只是读取一些会话变量,并将它们分配给新的变量,然后取消它们,我这样做,所以他们不能被转移到另一个页面。这一切都很好。提交按钮正在运行会话验证,而不是
但是,我也有一个表单在同一页上的提交按钮。出于某种原因,当我按提交按钮时,它没有完成它应该的查询,只是重用了会话检查代码。这是因为会话变量未设置,然后未通过验证。
为什么重新运行该会话验证和不运行我的提交按钮的代码/
这是在页面的最顶端的会话验证,并且是出于某种原因是重新运行该代码对提交按钮点击
$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