我正在尝试PHP会话,用户将在第1页输入电子邮件。输入 后,他们将被重定向到第 2 页,电子邮件显示为用户。
这是我的第 1 页 PHP 代码看起来像:
<?php
session_start();
$_SESSION['email']= isset($_POST['email']) ;
if(isset($_POST['submit'])){
header('Location: http://localhost/page2');
}
?>
<form method="post" action="">
Email: <input type="text" name="email" value=""/> <br/><br/>
<input type="submit" name="submit"/> </form>
页 2 :
<?php
session_start();
$email = (isset($_SESSION['email']));
echo $_SESSION['email'];
//print_r($_SESSION);
//var_dump($email);
?>
问题:
问题是,当我输入任何随机电子邮件时,当我回显它时,它会在第 1 页显示数字 2。
那是因为你分配了函数的返回值isset()
!
所以这应该适合你:
if(isset($_POST['submit']) && !empty($_POST['email'])){
$_SESSION['email']= $_POST['email'];
header('Location: http://localhost/page2');
}
同样在您的第二页上,您可以再次分配它,您不必这样做!你必须像这样检查它:
if (isset($_SESSION['email']))
echo $_SESSION['email'];
(顺便说一句:我希望这更像是一个示例:header('Location: http://localhost/page2');
因为您必须添加文件扩展名,例如:header('Location: http://localhost/page2.php');
)
下面的语句将 TRUE 或 FALSE 分配给会话变量,因为isset()
返回布尔值而不是传递的字符串。
但是,您需要为其分配值。
只需更改:
$_SESSION['email']= isset($_POST['email']);
自
if (isset($_POST['email'])) {
$_SESSION['email']= $_POST['email'];
}
第 1 页
<?php
session_start();
if(isset($_POST['submit'])){
header('Location: http://localhost/page2');
}
?>
<form method="post" action="http://localhost/page2">
Email: <input type="text" name="email" value=""/> <br/><br/>
<input type="submit" name="submit"/>
</form>
在第 2 页
<?php
session_start();
$_SESSION['email'] = $_POST['emai'];
echo $_SESSION['email'];
?>
第 1 页
<?php
session_start();
if(isset($_POST['submit'])) {
$_SESSION['email'] = $_POST['email'];
header('Location: http://localhost/page2');
}
?>
<form method="post" action="">
Email: <input type="text" name="email" value=""/> <br/><br/>
<input type="submit" name="submit"/>
</form>
第 2 页
<?php
session_start();
//check if session exist
if(isset($_SESSION['email'])) {
echo $_SESSION['email'];
}
?>