使用 WAMP 服务器的 PHP 会话


PHP Session using WAMP Server

我正在尝试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'];
}
?>