基本上我有一个输入studentID的表单,然后我想检查输入的studentID在数据库中的id,如果它是将表单发布到下一页。如果没有,则在您输入studentID的页面上显示错误
不知道从哪里开始 干杯
答案 0 :(得分:3)
这就是你想要的吗?
<form id = "form" action = "./?page=markandfeedback" method = "post">
<br>
Mark for:
<INPUT id="stud" onkeypress="return isNumberKey(event)" type="text" name="stud" value="Enter Student Number">
<input type="submit" value = 'Continue'>
<?
$studID = $_POST['stud'];
$module2 = $_SESSION['module'];
$ex = $_POST['exer'];
$studerr = array();
$sql = 'SELECT * FROM `student`, `modules` WHERE `studentID` = '.$studID.' AND `moduleCode` = '.$_SESSION['module'];
$result = mysql_query ($sql);
// echo $_SESSION['module'];
if ($result == NULL) { // nothing found
echo "the student id you entered is not in the database";
}
else {
$_SESSION['student'] = $studID;
Header("Location: http://www.whereever.com/"); // send the browser where you want
exit();
}
?>
编辑: 我回答了其他的答案。我假设您正确检查了mysql注入。我建议在一切正常并且安全的情况下实施AJAX。我的解决方案背后的想法是尽可能简单地解决问题。如果你想用它做出一些奇特的东西,你可以:
答案 1 :(得分:1)
创建一个单独的控制器来检查用户名。
使用ajax检查用户输入是否有效。
所以你会有这样的事情:
<input id="stud" onchange="checkStudentId(this)" />
<script>
function checkStudentId(inputElement) {
var id = inputElement.value();
$.ajax({
url: "test.html",
context: {id:id}
}).done(function() {
// Check the return result
});
}
</script>
这是对jquery ajax的引用 http://api.jquery.com/jQuery.ajax/
答案 2 :(得分:1)
你实际上必须以某种方式连接到服务器才能弄清楚学生是否存在。在这种情况下,您通常会将表单提交给服务器并进行验证服务器端。如果学生存在,则返回&#34; next&#34;页。如果学生不存在,那么您将再次返回(或重定向到使用位置标题)相同的表单并显示错误消息。
另一种流行的方法是使用AJAX请求异步检查(我看到很多其他人推荐)。 如果您在完成输入学生ID 并且实时有效地显示错误消息后,您实际上正在进行验证,我建议您采用这种方式。通过这种方式, AJAX可以提供快速的用户反馈,但不是真正的解决方案。请记住,无论如何,您需要在表单时检查并处理此问题。无论如何提交,或至少,考虑提交表格时无效ID会发生什么。
在提交AJAX时没有任何意义,因为通过让服务器连续处理两个单独的请求,您实际上可以将工作量增加一倍。这只是问题的错误答案。
这个实现的最大麻烦是PHP代码很快会变得非常毛茸茸,很难跟上,因为你把所有东西混合在一起。
这里你可能会开始使用PHP作为模板语言(混合php代码和html标记),并开始使用一个框架,你的视图(HTML)与你的PHP代码分离(如果你&# 39;重新使用非常填充的MVC pattern,这段代码被称为你的控制器 - 正是因为它控制着服务器的响应方式。这就是任何专业开发人员的工作方式。 Kohana,CakePHP和Zend都是相当流行的MVC框架的例子,所有这些框架都是专业使用的。
答案 3 :(得分:0)
你可以用两种不同的方式做到这一点
您可以将操作转移到另一个页面并返回变量或进行会话以保存错误消息
答案 4 :(得分:0)
试试这个:
<?
if(isset($_POST['stud'])){
$studID = $_POST['stud'];
$module2 = $_SESSION['module'];
$ex = $_POST['exer'];
$studerr = array();
$host="hostname";//your db host
$user="user";//your db user
$pass="pass";//your db pass
$conn=mysql_connect($host,$user,$pass);
$sql = 'SELECT * FROM `student`, `modules` WHERE `studentID` = '.$studID.' AND `moduleCode` = '.$_SESSION['module'];
$result = mysql_query ($sql,$conn);
if(mysql_num_rows($result)>0){//the id was found in the DB, do whatever here...
echo $_SESSION['module'];
$_SESSION['student'] = $studID;
Header("Location: http://www.whereever.com/");//redirect to wherever
$error=false;
}
else{//id was not found
$error=true;}
}//end of isset
?>
<? if($error===true){?> <div> The id was not found.... </div> <?}?>
<form id = "form" action = "<? echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>" method = "post">
<br>
Mark for:
<INPUT id="stud" onkeypress="return isNumberKey(event)" type="text" name="stud" value="Enter Student Number">
<input type="submit" value = 'Continue'>
所以它的作用是:当用户点击提交时,连接到数据库,并检查ID是否存在......如果存在,则将其重定向到wherever.com
(参见注释),如果是不要出现错误信息。请务必将db变量值更改为您自己的($host, $user, $pass
)。