PHP同页回显(使用die函数。)

时间:2010-08-30 17:16:32

标签: 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>

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

5 个答案:

答案 0 :(得分:5)

  1. OR||相同,只是OR的{​​{3}}低于||。当与其他运算符一起使用时,这会导致逻辑错误,优先级高于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)
    

    因此,我建议您使用||而不是OR

  2. precedence会打印传递的字符串并退出当前脚本的执行。就个人而言,我不会使用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>';
    }
    
  3. 如果您对action属性使用空网址,则会引用相同的网址:

    <form name="form1" method="post" action="">
    
  4. 一些进一步的提示:

    • 使用$_SERVER['REQUEST_METHOD'] === 'POST'来测试请求方法,而不是测试!empty($_POST)
    • 避免使用die。因此,如果您想引用POST传递的参数 pass ,请使用$_POST['pass']代替$pass

答案 1 :(得分:1)

将以下表单标记POST用于同一个脚本...如果您重命名该文件,它将继续工作。

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> 

答案 2 :(得分:0)

问题1:|| (管道是OR)

问题2:死亡在被叫的地方停止死亡。找到一种方法将false返回到其他脚本并在那里死去。

问题3:不确定你想要什么。

答案 3 :(得分:0)

  1. 这是logical operator。与||相同,但lower precedence 你是什​​么意思但是OR既没有工作也没有|| ?你有例外吗?结果应该是什么?语法似乎是正确的。
    也许你使用了错误的逻辑表达式。它该怎么办?目前评估为true,如果$pass d41d8cd98f00b204e9800998ecf8427e ,如果$user 不是空。

  2. manual中了解die(),与exit()相同:

      

    输出消息并终止当前脚本

    在这里使用echo是完全有效的,因为你希望脚本继续执行。

  3. 你是什么意思?类似的东西:

    <?php  define('SERVER_PAGE', 'signup.php'); ?>
    // later
    <form name="form1" method="post" action="<?php echo SERVER_PAGE ?>">
    

答案 4 :(得分:0)

第一个和第二个:正如Gumbo所说的

回答第三个问题: 3。<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> @ Mikey1980:谢谢!