我有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";
?>
为什么输入的电子邮件地址没有显示在密码页面上?怎么了?
答案 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>