在PHP表单上使用$ _SESSION

时间:2013-10-10 22:25:42

标签: php forms session

如何显示仅使用$ _SESSION显示“名称”和“电子邮件中保存的变量”(意味着不使用$ _COOKIE)?

我使用$ _COOKIE创建了这个程序,但是(我知道)它的设计并不是很好。我只是在学习。但我正在尝试转换使用$ _SESSION而不是$ _COOKIE收集数据的表单。我所做的只是用$ _SESSION(更少的setcookie等)替换$ _COOKIE。我的目标是,如果您点击“记住我”,它会记住您的“姓名”和“电子邮件”,以便您可以在重新打开浏览器时直接点击“链接”下载内容。

<?php
session_start();
    // session
    if (isset($_POST['remember'])) {
$customer_name = $_SESSION['name'];
if (!($customer_name)) {
$customer_name = $_POST['name'];
}
$customer_email = $_SESSION['email'];
if (!($customer_email)) {
$customer_email = $_POST['email'];
}

//If Form submitted
//I.e. Email validation that will check if field is empty or doesn't 
//If there is no error
echo 'Here's the <a href="http://www.google.com/something">link.<br />';
//else there's error

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Name:
<?php
  if (isset($_SESSION['name'])) {
    echo $_SESSION['name']."<br />";
  }
else {
?> 
<input type="text" name="name" value="<?php echo $_POST['name']; ?>" size="25" /><br />
<?php } ?>

Email:
<?php
  if (isset($_SESSION['email'])) {
    echo $_SESSION['email']."<br /><br />";
  }
else {
?>  
<input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="25"/> 
<input type="checkbox" name="remember" /> Remember me
<input type="submit" name="Submit" />
<?php } ?>


</form>

2 个答案:

答案 0 :(得分:0)

使用Cookie代替。例如,使用电子邮件设置cookie,它将被记住,直到cookie过期。如果您使用会话,它将取决于服务器配置,但通常较低(少于一天)。

无论如何,我在这里根本没有看到任何问题:P

答案 1 :(得分:0)

试试这个:

if (isset($_POST['remember'])) {
    if (!isset($_SESSION['name'])) {
        $_SESSION['name'] = $_POST['name'];
    }
    if (!isset($_SESSION['email'])) {
        $_SESSION['email'] = $_POST['email'];
    }
    $customer_name = $_SESSION['name'];
    $customer_email = $_SESSION['email'];
    ...

在您的代码中,您设置了$customer_XXX,但从未设置$_SESSION['XXX']