簡體   English   中英

在PHP表單上使用會話來記住用戶

[英]Using Sessions To Remember User on PHP Form

簡介:我正在嘗試在$ _SESSION上學習PHP。 我想做的是調用通過會話分配的值,當您關閉選項卡時,這些值將保留分配的值,並在瀏覽器中打開選項卡時在瀏覽器中回顯該值。

問題:我的代碼出了點問題,由於某種原因我無法回顯在表單中輸入的值。

該表格如下所示:

Name:_____________
Email:_____________ Remember me? __  SUBMIT

我做到了,只有當用戶單擊“記住我”時,$ _ SESSION ['name'] =“ John”和$ _SESSION ['email'] =“ someemail@email.com”。

如果關閉瀏覽器上的“選項卡”,但瀏覽器本身不應該回顯...

John
someemail@email.com

Here's your download link (some link here)...

但是,當然,如果您關閉瀏覽器,會話將會丟失。 可以使用Cookies,但我正在參加會議以了解更多信息。

下面的代碼運行,但是由於某些原因,我無法從$ _SESSION變量中回顯值。

<?php 

 //Start session
    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 submit validate
    if (isset($_POST['Submit'])) {
    // Santize fields here but FILTER_VALIDATE_STRING isn't necessary as there is no absolute way 
    //to validate names absolutely 
    // Also shows error message if there's error 
    if ($_POST['name'] != "") {
        $_POST['name'] = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
        if ($_POST['name'] == "") {
            $errors .= 'Please enter a valid first name.<br/><br/>';
        }
    } else {
        $errors .= 'Please enter your first name.<br/>';
    }

    // Sanitize and validate email
    // Error message shows if any
    if ($_POST['email'] != "") {
        $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $errors .= "$email is NOT a valid email address.<br/><br/>";
        }
    } else {
        $errors .= 'Please enter your email address.<br/>';
    }


    // If no errors, submitted form is emailed
    if (!$errors) {

        echo "I did something!<br /><br />"; // might add some message
        //downloadLink();
        echo "<br /><br />";



    }




    } else {
        echo '<div id="error">' . $errors . '<br /></div>';
    }



?>

<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 />";

    // echo link.. downloadLink();
  }
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>
</div>

將其放在session_start();的開頭session_start();

if (!isset($_SESSION['name'])) { 
echo "Your session is not good"; 
} else { echo "Session is set"; 
}

然后替換$customer_name = $_SESSION['name']; $_SESSION['name']=$_POST['remember']; 您將開始獲得結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM