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

时间:2018-08-06 08:17:29

标签: php

我有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";
?>

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

2 个答案:

答案 0 :(得分:0)

<?php session_start(); ?> <p> Geben Sie ihr Passwort ein:</p> ... 必须在任何显示(原始文本,HTML等)之前调用,您的密码文件应以以下形式开头:

$_SESSION['email']

此外,您正在 save.php 文件的开头调用header()。该函数之后的行将不执行,这意味着将不会定义header()
请注意,{{1}}也需要在任何输出之前被调用!


阅读session_start() documentation

  

注意:
  要使用基于cookie的会话,必须先调用 session_start(),然后再向浏览器输出任何内容。

答案 1 :(得分:-1)

因为您在两个地方使用了$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>