PHP死掉所有页面

时间:2012-12-06 03:08:35

标签: php

  

可能重复:
  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");

    }
?>

2 个答案:

答案 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
}