通常当我们在php中提交表单并显示错误时,错误会在其他页面中发布。 现在我的问题是。
如果我们想在表单页面上显示同一页面上的错误,那该怎么办?
我使用了session,发现它比其他进程更好但是当我想一次显示所有会话变量时它会显示,为什么?
我的代码是:
if(isset($_POST) && count($_POST)>0) {
$user =test_input($_POST['user']);
$pass = test_input($_POST['pass']);
$securepassword=hash('sha512', $pass);
if(empty($user)&&empty($pass))
{
echo 'fill every field';
}
else if(empty($user)||empty($pass))
{
echo 'fill both the field';
}
else
{
$sSQL = "SELECT * FROM signup WHERE Username ='".$user."' AND Password = '".$securepassword."'";
$result = mysql_query($sSQL) or die(mysql_error());
$row=mysql_num_rows($result);
if($row==1)
{
// Set username session variable
$_SESSION['user'] = $user;
// Jump to secured page
header('location:index.php');
}
else
{
header('location:signin.php');
}
}
}
答案 0 :(得分:0)
您最好使用JavaScript来验证表单。假设这是您的HTML代码。
<form method="post" name="loginForm" action="abc.php">
<input type="text" name="user">
<input type="password" name="pass">
</form>
现在,让我们在POST
到abc.php
之前添加验证此表单:
<form method="post" name="loginForm" action="abc.php" onsubmit="return validater()">
<input type="text" name="user">
<input type="password" name="pass">
</form>
JavaScript是:
function validater() {
var a= document.forms["loginForm"]["user"].value;
if (a==null || a=="") {
alert("Fill out the username");
return false;
}
var b= document.forms["loginForm"]["pass"].value;
if (b==null || b=="") {
alert("Enter your password");
return false;
}
}
答案 1 :(得分:0)
逻辑很简单,你可以将php代码和html代码放在同一页面上。按以下顺序。
不需要会话向用户显示错误。