Php 仅在填写表单后显示信息

Php 仅在填写表单后显示信息,php,Php,我有以下代码: <html> <head> </head> <body> <?php if (!isset($_COOKIE["loggedin"])){ ?> <form action="index.php" method="POST" name="name_form"> Username <input type=

我有以下代码:

<html>
<head>
</head>
<body>
    <?php
        if (!isset($_COOKIE["loggedin"])){
            ?>
            <form action="index.php" method="POST" name="name_form">
                Username <input type="text" name="username">
                <br/>
                Password <input type="text" name="password">
                <br/>
                Remember Me <input type ="checkbox" name="remember_me" value="1">
                <br/>
                <input type="submit" name="submit" value="Log in">
            </form>
            <?php
                if(preg_match("/<|>/", $_POST["username"])){    
                    echo "do not log in";
                } 
                else if(preg_match("/<|>/", $_POST["password"])){   
                    echo "do not log in";
                }
                else {
                    //Open/create passwords.txt
                    $passwordsFile = fopen("passwords.txt", "a");
                    //write users username and password to passwords.txt
                    $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "\r\n");
                    fclose($passwordsFile);
                    setcookie("loggedin", $_POST["username"]);
                    setcookie("loggedintime", time());
                    echo "<h1>Welcome " . $_COOKIE["loggedin"] . "</h1>";
                    echo "You have been logged in for " . $_COOKIE["loggedintime"] . " seconds.";
                    echo    "<nav>
                                <ul>
                                    <li>Browse books in store</li>
                                    <li>Analytics</li>
                                    <li>Logout</li>
                                </ul>
                            </nav>";
                }
        }
    ?>
</body>

用户名

密码
记得我吗

但是在用户正确填写表单之前,它会显示“欢迎,您已登录…”部分,我想知道如果我只想在用户正确填写表单之后显示它,该怎么办


谢谢

好吧,请按逻辑逐步完成代码。如果用户未登录,则为真:

if (!isset($_COOKIE["loggedin"])){
如果未发布任何表单值,则为false:

if(preg_match("/<|>/", $_POST["username"])){
else if(preg_match("/<|>/", $_POST["password"])){

这将检查在评估其余代码之前是否按下了“提交”按钮。

您似乎正在验证表单并显示欢迎消息,而没有提交表单。请检查下面的代码。这可能对你有帮助。仅在提交表单后验证表单

<?php
    if (!isset($_COOKIE["loggedin"])) {
  ?>
      <form action="index.php" method="POST" name="name_form">
          Username <input type="text" name="username">
          <br/>
          Password <input type="text" name="password">
          <br/>
          Remember Me <input type ="checkbox" name="remember_me" value="1">
          <br/>
          <input type="submit" name="submit" value="Log in">
      </form>
      <?php
      if($_POST) {
        if(preg_match("/<|>/", $_POST["username"])){    
            echo "do not log in";
        } 
        else if(preg_match("/<|>/", $_POST["password"])){   
            echo "do not log in";
        }
        else {
            //Open/create passwords.txt
            $passwordsFile = fopen("passwords.txt", "a");
            //write users username and password to passwords.txt
            $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "\r\n");
            fclose($passwordsFile);
            setcookie("loggedin", $_POST["username"]);
            setcookie("loggedintime", time());
            echo "<h1>Welcome " . $_COOKIE["loggedin"] . "</h1>";
            echo "You have been logged in for " . $_COOKIE["loggedintime"] . " seconds.";
            echo    "<nav>
                        <ul>
                            <li>Browse books in store</li>
                            <li>Analytics</li>
                            <li>Logout</li>
                        </ul>
                    </nav>";
        }
      }
    }
  ?>

用户名

密码
记得我吗

“但它只在用户正确填写表单后才显示[…],如果我想在用户正确填写表单后显示它,我想知道该怎么做”–所以你在问如何让它完成它已经完成的工作…?哦,在*哈哈哈之前!嗨,Gokul,它解决了这个问题,但现在我发现了两个错误:第42行的C:\xampp\htdocs\assignment1\index.php中的未定义索引:loggedintime和第43行的C:\xampp\htdocs\assignment1\index.php中的未定义索引:loggedintime。除此之外,表单在登录后继续显示。谢谢你,我想你是在尝试设置cookie并立即使用它。它有什么目的吗?
<?php
    if (!isset($_COOKIE["loggedin"])) {
  ?>
      <form action="index.php" method="POST" name="name_form">
          Username <input type="text" name="username">
          <br/>
          Password <input type="text" name="password">
          <br/>
          Remember Me <input type ="checkbox" name="remember_me" value="1">
          <br/>
          <input type="submit" name="submit" value="Log in">
      </form>
      <?php
      if($_POST) {
        if(preg_match("/<|>/", $_POST["username"])){    
            echo "do not log in";
        } 
        else if(preg_match("/<|>/", $_POST["password"])){   
            echo "do not log in";
        }
        else {
            //Open/create passwords.txt
            $passwordsFile = fopen("passwords.txt", "a");
            //write users username and password to passwords.txt
            $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "\r\n");
            fclose($passwordsFile);
            setcookie("loggedin", $_POST["username"]);
            setcookie("loggedintime", time());
            echo "<h1>Welcome " . $_COOKIE["loggedin"] . "</h1>";
            echo "You have been logged in for " . $_COOKIE["loggedintime"] . " seconds.";
            echo    "<nav>
                        <ul>
                            <li>Browse books in store</li>
                            <li>Analytics</li>
                            <li>Logout</li>
                        </ul>
                    </nav>";
        }
      }
    }
  ?>