可能重复:
PHP die() clean all page
我检查字段1,如果一切正确,将通过用户检查而不是电子邮件&密码检查...
因此我使用die来阻止代码继续进行
然而当我使用die()时,它会杀死所有页面,任何方式保留所有页面但只回显$ error_message
当我使用die()
时,它看起来像是跳进另一个页面<?PHP
session_start();
if(isset($_SESSION['firstname']) && isset($_SESSION['lastname'])){
header('location:member.php');
}
$firstname=""; $lastname=""; $email=""; $re_email=""; $error_message="";
if(isset($_POST['signup'])){
$firstname=strip_tags(ucfirst($_POST['firstname']));
$lastname=strip_tags(ucfirst($_POST['lastname']));
$email=strip_tags(strtolower($_POST['email']));
$re_email=strip_tags(strtolower($_POST['re_email']));
$password=strip_tags($_POST['password']);
$re_password=strip_tags($_POST['re_password']);
$date=date("Y-m-d");
if($firstname && $lastname && $email && $re_email && $password && $re_password && $age && $gender && $employment){}
else{die($error_message="Please fill in all fields");}
//USERNAME CHECKING////////////////////////////////////////////////////////
$connect=mysql_connect("localhost", "root", "");
$database=mysql_select_db("phplogin", $connect);
$namecheck=mysql_query("SELECT email FROM users WHERE email='$email'");
$count=mysql_num_rows($namecheck);
if($count!=0)
{die("Username already taken");}
//////////////////////////////////////////////////////////////////////////
if($email==$re_email && $password==$re_password){}
else{die("email or password do not match");}
//Checking valid email//
$strpos=strpos($email, "@");
if(!$strpos)
{die("This is not valid email");}
//Password length//////////////////////////////////////////////////////////
if(strlen($password)<6)
{die("Password is too short");}
echo "Register user!";
$password=md5($password);
$SQL="INSERT INTO users (email, password, firstname, lastname, date)
VALUES ('$email','$password','$firstname', '$lastname', '$date')";
$result=mysql_query($SQL);
session_start();
$_SESSION['firstname']=$db_firstname;
$_SESSION['lastname']=$db_lastname;
header("location:member.php");
}
?>
答案 0 :(得分:2)
我相信你的问题在这里:
die($error_message="Please fill in all fields");
这意味着“当我死的时候,将此值赋给此变量”。
它应该是这样的:
if(!isset($firstname) || !isset($lastname) || !isset($email) || !isset($password) || !isset($re_password) || !isset($age) || !isset($gender) || !isset($employment)){
die("Please fill in all fields");
}
答案 1 :(得分:2)
die()
是一种等同于exit()
的语言结构,它们输出一条消息并终止当前脚本。所以,死后的任何东西都不会显示出来。
我认为您可以在保存用户数据之前将消息放入变量,例如$errorMsgs
,其类型为数组。然后,如果$errorMsgs
不为空,则意味着可能存在一些问题。那时你可以将这些错误消息传递给下一步。
代码如下所示:
$errosMsgs = array();
if(!$ok) {
$errosMsgs[] = "Error message";
}
if(empty($errorMsgs)) {
//Data saving and redirect into another page
} else {
//display errors
}