繁体   English   中英

PHP会话使用Submit表单获取输入值

[英]PHP Session for input value with Submit form

我有2页,用户必须在第一页上输入他的电子邮件地址,在第二页上输入他的密码,但是我还要在密码上方显示输入的电子邮件地址。

我已经尝试过PHP Session

电子邮件页面:

<form action="save.php" method="post">
<input id="email" name="email" type="email" value="" placeholder="E-Mail-Adresse">
<button class="button actionContinue" type="submit" id="btnLogin" name="btnLogin" value="Login" pa-marked="1">Einloggen</button></form>

save.php:

    <?php
   header("Location: /password");

    session_start(); 
    $name = $_POST['email'];

    if(!isset($name) OR empty($name)) {
       $name = "Gast";
    }

    $_SESSION['email'] = $name;

    echo "Hallo $name ";

    ?>

密码页(第2页):

<p> Geben Sie ihr Passwort ein:</p>



<?php
session_start(); 

if(!isset($_SESSION['email'])) {
   die("Login first");   
}

$name = $_SESSION['email'];

echo "Your email is: $name";
?>

为什么输入的电子邮件地址没有显示在密码页面上? 怎么了?

必须在任何显示(原始文本,HTML等)之前调用session_start() ,您的密码文件应以以下内容开头:

<?php session_start(); ?>
<p> Geben Sie ihr Passwort ein:</p>
...

同样,您在save.php文件的开头调用header() 该函数之后的行将不执行,这意味着将不会定义$_SESSION['email']
注意,在任何输出之前也需要调用header()


阅读session_start()文档

注意:
要使用基于cookie的会话,必须在将任何内容输出到浏览器之前调用session_start()

因为您在两个地方使用了$name 您应该更改$name = $_POST['email']; $email = $_POST['email'];

因为下面的代码将覆盖您的$name

if(!isset($name) OR empty($name)) {
       $name = "Gast"; //if the name is not empty Gast will store inside $name
    }

使用下面的代码。

save.php页面

 <?php


    session_start(); 
    $email = $_POST['email'];

    if(!isset($name) OR empty($name)) {
       $name = "Gast";
    }

    if($email != NULL){
      $_SESSION['email'] = $email;
       echo "Hallo $name ";
      header("Location: /password");
    }

    ?>

密码页面

<?php
session_start(); 

if(!isset($_SESSION['email'])) {
   die("Login first");   
}

echo "Your email is: $_SESSION['email']";
?>
 <p> Geben Sie ihr Passwort ein:</p>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM