如何让这个2页PHP登录脚本记住第2页上的用户输入

如何让这个2页PHP登录脚本记住第2页上的用户输入,php,Php,我正在努力使用$\u会话创建一个两页表单。我想要实现的是第一个页面(page1.php)要求用户输入他/她的电子邮件地址。第二个页面(page2.php)要求用户输入密码 当用户提交page1.php时,它会将您带到page2.php,在那里将打印提交的电子邮件地址。但不幸的是,电子邮件地址没有按预期打印出来 请注意,我已经尝试采用相关的解析线程,但仍然缺少一些东西 2步登录-第1页 登录 尚未成为会员,请在此处注册 从您的代码中,看起来您在进入第二个表单之前跳过了使用第一个表单中的POST

我正在努力使用$\u会话创建一个两页表单。我想要实现的是第一个页面(page1.php)要求用户输入他/她的电子邮件地址。第二个页面(page2.php)要求用户输入密码

当用户提交page1.php时,它会将您带到page2.php,在那里将打印提交的电子邮件地址。但不幸的是,电子邮件地址没有按预期打印出来

请注意,我已经尝试采用相关的解析线程,但仍然缺少一些东西


2步登录-第1页
登录
尚未成为会员,请在此处注册

从您的代码中,看起来您在进入第二个表单之前跳过了使用第一个表单中的POST值的步骤

提交表单后,在PHP中,一个$u POST变量包含表单名称键中表单内容的值

例如,设置为POST的表单中的
将导致
$\u POST['myinput']
包含您提交的submit中的值

实现所需功能的简单方法是将值从
page1.php
发布到
page2.php
,然后看起来就像是在
login.php
上处理登录。例如:

page1.php

<?php
    if (isset($_GET['invalidEmail'])) {
        echo "Error: Invalid email address entered.";
    }
?>
<form action="page2.php" method="post">
    <input type="email" type="email" />
    <input type="submit" value="Continue" />
</form>
<?php
    $email = htmlentities($_POST['email']);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        // the email address is not valid, redirect them back to page1.php
        header('Location: page1.php?invalidEmail=true');
    }
?>
<form action="login.php" method="post">
    <input type="hidden" value="<?=$email?>" />
    <input type="password" type="password" />
    <input type="submit" value="Continue" />
</form>
<?php
    session_start(); // before any HTML is echoed
    $email = $_POST['email'];
    $password = $_POST['password'];

    // ..do whatever you need todo to validate the email and password
    // now you can use something like $_SESSION['loggedin'] = $email which will persist across any pages 
    // you can check `if (isset($_SESSION['loggedin']))` to check if they're signed in
    // if the validation fails, redirect them back to page1.php with another error
?>
login.php

<?php
    if (isset($_GET['invalidEmail'])) {
        echo "Error: Invalid email address entered.";
    }
?>
<form action="page2.php" method="post">
    <input type="email" type="email" />
    <input type="submit" value="Continue" />
</form>
<?php
    $email = htmlentities($_POST['email']);
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        // the email address is not valid, redirect them back to page1.php
        header('Location: page1.php?invalidEmail=true');
    }
?>
<form action="login.php" method="post">
    <input type="hidden" value="<?=$email?>" />
    <input type="password" type="password" />
    <input type="submit" value="Continue" />
</form>
<?php
    session_start(); // before any HTML is echoed
    $email = $_POST['email'];
    $password = $_POST['password'];

    // ..do whatever you need todo to validate the email and password
    // now you can use something like $_SESSION['loggedin'] = $email which will persist across any pages 
    // you can check `if (isset($_SESSION['loggedin']))` to check if they're signed in
    // if the validation fails, redirect them back to page1.php with another error
?>

您使用的是PHP:只需将其生成到PHP脚本生成的第二、第三页等页面中即可?您的思路是正确的,但实际将电子邮件地址保存到会话中的代码在哪里?因为除非你先把它放在那里,否则在以后的运行中它将无法用于该会话。@Mike'Pomax'Kamermans,我不知道如何将电子邮件保存到会话中。这就是我在这里寻找指针的原因。会话只是一个变量,您可以像分配其他变量一样分配它。在你把东西放进去之前,$\u会话是空的,所以逻辑上的第一步是“如果你想把东西放进去,让用户给你发送数据”。例如,他们发布带有用户名/电子邮件和密码的表单,您处理该帖子并将用户名/电子邮件放入$\会话。在PHP中使用sessions搜索
,你会发现很多教程。非常感谢你的时间和指点。我会按照你的建议去做,然后回来。再次感谢你。