[英]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()
!
注意:
要使用基于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.