-1

可能重复:
PHP die() 清理所有页面

我检查字段 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");

    }
?>
4

2 回答 2

2

die()是一种等效于 的语言结构exit(),它们输出一条消息并终止当前脚本。因此, die 之后的任何内容都不会显示。

$errorMsgs我认为您可以在保存用户数据之前将消息放入变量中,例如哪种类型是数组。然后如果$errorMsgs不为空,则表示可能有一些麻烦。那时您可以将这些错误消息传递到下一步。

代码如下所示:

$errosMsgs = array();
if(!$ok) {
  $errosMsgs[] = "Error message";
}
if(empty($errorMsgs)) {
    //Data saving and redirect into another page
} else {
    //display errors
}
于 2012-12-06T03:27:29.190 回答
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");
}
于 2012-12-06T03:17:21.123 回答