PHP同页回显(使用die funct.)

Sur*_*raj 0 php

    <?php                    //filename signup.php
    ob_start();
 include('dat.php');
    if (!empty($_POST)){


        if ($pass!="d41d8cd98f00b204e9800998ecf8427e" OR $user!="") {       // 1
            $result=mysql_query($sql);
            if(mysql_error()) {
                die('Sorry, this username already exists');                 // 2
            }
        } else {
        echo "Please enter the Password";
        }
    }

    ob_end_flush();
    ?>

<html>
<body>
<form name="form1" method="post" action="signup.php">                <!--3-->
Username<input name="myusername" type="text" id="myusername" />
Password<input name="mypassword" type="text" id="mypassword" />
e-mail<input name="email" type="text" id="email" />
<input type="submit" name="Submit" value="Login" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是一个注册页面(这里缺少所有的mysql细节,它们都包含在dat.php中).如果出现ny错误,则会显示在同一页面中.
问题1:[// 1] OR的运算符是什么,在这种情况下,如果传递或用户为空,我已经使用了条件,但OR不能正常工作|| ,在javascript中使用.
问题2:[// 2]如果使用die,则语句将在新窗口中打印,但我希望它出现在同一个窗口中...我也使用echo,它有效但我觉得我失踪了使用'echo'来'die'的主要功能.
问题3:[ <!--3-->]如何将signup.php替换为SERVER_PAGE或其他类似的动作...

Gum*_*mbo 5

  1. OR是一样的||,只是OR具有较低的优先级||.当与其他运算符一起使用时,这会导致逻辑错误,这些运算符的优先级高于优先级,OR但优先级低于||赋值运算符:

    $var = false OR true;  // ($var = false) OR true;
    var_dump($var);        // bool(false)
    $var = false || true;  // $var = (false || true);
    var_dump($var);        // bool(true)
    
    Run Code Online (Sandbox Code Playgroud)

    所以我建议你宁愿使用||OR.

  2. die确实打印传递的字符串并退出当前脚本的执行.就个人而言,我不会使用use die但实现更好的错误处理,例如将错误消息存储在变量中并将其打印在文档中,如下所示:

    $errors = array();
    if (!empty($_POST)) {
        if ($pass!="d41d8cd98f00b204e9800998ecf8427e" || $user!="") {
            $result=mysql_query($sql);
            if (mysql_error()) {
                $errors[] = 'Sorry, this username already exists';
            }
        } else {
            $errors[] = "Please enter the Password";
        }
    }
    if (!empty($errors)) {
        echo 'There were some errors:';
        echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>';
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您为该action属性使用空URL ,则它引用的是相同的URL:

    <form name="form1" method="post" action="">
    
    Run Code Online (Sandbox Code Playgroud)

一些进一步的提示

  • 使用$_SERVER['REQUEST_METHOD'] === 'POST'测试请求的方法,而不是测试!empty($_POST).
  • 避免注册全局变量.因此$_POST['pass'],$pass如果要引用POST传递的参数传递,请使用而不是.