【发布时间】:2012-08-23 13:15:03
【问题描述】:
我正在编写一个应用程序,允许用户为潜在员工上传推荐信。
每个引用都会发送一封电子邮件,其中包含 URL 末尾的唯一字符串。因此,例如,地址类似于:www.mywebaddress?url=503241a20b5085_18720621。
要确定唯一字符串是否有效(即存在于数据库中),我需要进行查询搜索。但是,当引用尝试访问 URL 时,他需要回答安全问题。所以,我还需要检查答案是否有效,他之前是否上传过等,以确定将他重定向到哪个页面。
但是因为查询,我的代码要求用户点击“提交”两次。这真的很烦人,但我不知道如何解决它。
这是我的代码的相关摘录:
if ( isset ($_GET['url']) ) {
$query = "SELECT * FROM ref_info WHERE url='" . $_GET['url'] . "'";
$result = $db->execute($query);
if ( empty ($result) ) {
//error message
} else {
$url = $_GET['url'];
if ( $_SESSION['validated'] ) {
if ( $result[0]['uploaded'] ==1 ) {
$_SESSION['uploaded'] =true;
} else {
$_SESSION['uploaded'] =false;
}
include_once("process_upload.php");
} else {
if ( empty($result[0]['answer']) ) {
include_once("security.php");
} else {
include_once("security_check.php");
}
}
}
}
有什么办法可以让表单只需要提交一次吗?
提前感谢您的任何建议!
【问题讨论】:
-
第一次查询使用ajax,看看是否有效。
-
您可以为这个问题添加一个要点工作流程吗?我不确定我是否理解为什么用户必须点击两次提交。
-
您的代码非常容易受到 SQL 注入的影响。阅读准备好的陈述。另请阅读:stackoverflow.com/a/60496/871050
-
如果参考号作为
$_GET变量在查询字符串中,为什么不将其值作为隐藏输入包含在表单中,然后将其与安全问题的答案一起传递? -
同意@Matt - 没有理由点击两次提交。你说一些查询。你的意思是什么查询?