为什么这个会话表单不起作用?

Why isn't this session form working?

我设置了这个将 $_POST 数据转换为 $_SESSION 数据的登录表单。然后我使用这些数据来确定用户是否应该登录,但是它不起作用。我做错了什么?

*** 我检查了浏览器的 cookie,它存储了会话令牌(如果有帮助的话)

login.php:

<?php session_start(); ?>

<form action="page.php" method="post">

        Username: <input type="text" name="username" value="" /><br />
        Password: <input type="password" name="password" value="" /><br />
        <br />
        <input type="submit" name="submit" value="Submit" />

        <?php

        if (isset($_POST['submit'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $submit = $_POST['submit'];

            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            $_SESSION['submit'] = $submit;
        }

        ?>

</form>

page.php:

<?php session_start(); ?>

<?php

        $username = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
        $password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";

        $submit = isset($_SESSION["submit"]) ? $_SESSION["submit"] : "";


        if(($username == "username") && ($password == "password") && ($submit == "Submit")) {
            echo "You are logged in";
        } else {
            echo "Denied access";
        }
?>

我在包含 session_start();

的页面上收到此错误

根据this post,这是一个由Chrome引起的错误,是一个误导性的错误报告,不会影响任何东西。

在页面顶部添加 session_start(); 并修复操作。

<?php session_start();?>
<form action="" method="post">

        Username: <input type="text" name="username" value="" /><br />
        Password: <input type="password" name="password" value="" /><br />
        <br />
        <input type="submit" name="submit" value="Submit" />

        <?php

        if (isset($_POST['submit'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $submit = $_POST['submit'];

            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            $_SESSION['submit'] = $submit;
            header('page.php');
        }

        ?>

</form>

<?php
        session_start();
        $username = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
        $password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";

        $submit = isset($_SESSION["submit"]) ? $_SESSION["submit"] : "";


        if(($username == "username") && ($password == "password") && ($submit == "Submit")) {
            echo "You are logged in";
        } else {
            echo "Denied access";
        }
?>
<form action="page.php" method="post">

    Username: <input type="text" name="username" value="" /><br />
    Password: <input type="password" name="password" value="" /><br />
    <br />
    <input type="submit" name="submit" value="Submit" />


 </form>

page.php

 <?php
    session_start();
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $submit = $_POST['submit'];

        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
        $_SESSION['submit'] = $submit;
    }
    $username = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
    $password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";

    $submit = isset($_SESSION["submit"]) ? $_SESSION["submit"] : "";


    if(($username == "username") && ($password == "password") && ($submit == "Submit"))        {
        echo "You are logged in";
    } else {
        echo "Denied access";
    }
?>

首先,您需要使用 session_start() 格式 page.Also 启动 session 您需要使用 header 将 session 发送到 login.php。使用下面的代码

<?php session_start();?>
<form action="" method="post">

        Username: <input type="text" name="username" value="" /><br />
        Password: <input type="password" name="password" value="" /><br />
        <br />
        <input type="submit" name="submit" value="Submit" />

        <?php

        if (isset($_POST['submit'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $submit = $_POST['submit'];

            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            $_SESSION['submit'] = $submit;
            header('page.php');
        }

        ?>

</form>

希望对您有所帮助

您的表单将 post 发送到 page.php。因此,您需要将会话条件移动到 page.php。

或者,您可以将表单发送给自己,然后再重定向:

<?php session_start();?>

<form action="" method="post">

        Username: <input type="text" name="username" value="" /><br />
        Password: <input type="password" name="password" value="" /><br />
        <br />
        <input type="submit" name="submit" value="Submit" />

        <?php

        if (isset($_POST['submit'])) {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $submit = $_POST['submit'];

            $_SESSION['username'] = $username;
            $_SESSION['password'] = $password;
            $_SESSION['submit'] = $submit;
            header('page.php');
        }

    $username = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
    $password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";

    $submit = isset($_SESSION["submit"]) ? $_SESSION["submit"] : "";


    if(($username == "username") && ($password == "password")) {
        echo "You are logged in";
    } else {
        echo "Denied access";
    }

        ?>

</form>

当您在表单 submit 上向另一个页面 page.php 执行操作时。那么,为什么您在同一页面上获取表单数据?

请试试这个它会起作用:

HTML 形式:

<form action=page.php method="post">

    Username: <input type="text" name="username" value="" /><br />
    Password: <input type="password" name="password" value="" /><br />
    <br />
    <input type="submit" name="submit" value="Submit" />


 </form>

page.php :

 <?php
    session_start();
    if (isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $submit = $_POST['submit'];

        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
        $_SESSION['submit'] = $submit;
    }
    $username = isset($_SESSION["username"]) ? $_SESSION["username"] : "";
    $password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";

    $submit = isset($_SESSION["submit"]) ? $_SESSION["submit"] : "";


    if(($username == "username") && ($password == "password") && ($submit == "Submit"))        {
        echo "You are logged in";
    } else {
        echo "Denied access";
    }
?>