簡體   English   中英

無法在頁面之間存儲會話數據

[英]Can't store session data between pages

我在所有的php項目中都遇到了一個問題,就是自從我使用OOP以來,就是如果有用戶提交表單

當它要處理它時,如果有錯誤,我在會話中保存一條消息,然后將它們重定向到同一頁面

這是一個示例,當然,當它重定向時,它將擦除那里的所有字段

就像我說我有一個注冊表

<?php if(!empty($message)) { echo $message } ?>
<form action ="forms/register.php">
first name: <input type="text" name="first_name" />
username:<input type="text" name="username" />
<input type="submit" value = "submit" />
</form>

這是forms / register.php中的代碼

  if(isset($_POST['submit'])) {
    $first_name = $_POST['first_name'];
    $username = $_POST['username'];

 if(empty($first_name) || empty($username) {
    $session -> message("please fill in all the fields");
    redirect("../register.php");
 } else {
    // do something else like insert query
 }

 }

我的問題是,如果first_name或user_name為空,並且將其重定向到register.php

它回顯錯誤消息,沒問題

但字段為空,first_name和user_name為空

因此用戶必須再次填充所有內容

所以我的一位朋友建議將其保存在會話中

所以我想知道這是否可能,然后又怎么又是什么意思,所以沒人會把它弄錯,我的意思是不要復制和粘貼代碼的方式

提前致謝

對不起,很長很煩

您可以在頁面重定向會話變量后將要保留在表單中的所有值存儲在表單中,然后在表單頁面上檢索這些值並在表單元素的value屬性中回顯它們。

session_start(); $_SESSION['nick'] = $_GET['nick'];

更多/更好的例子:

http://php.net/manual/en/function.session-start.php

不確定您到底要面對什么問題(工作流程中還包含什么$ session?)。 但是,我建議使用PHP inbuild會話支持。 http://php.net/manual/en/features.sessions.php

從上面的鏈接本身:

<?php
session_start();

if(isset($_SESSION['views']))
{
    $_SESSION['views']=$_SESSION['views']+1;
}
else
{
    $_SESSION['views']=1;
    echo "Views=". $_SESSION['views'];
}
?>

上面的代碼只是跟蹤頁面瀏覽量。 $ _SESSION變量在頁面加載之間保持不變,您應該將其用於所有會話要求。

暫無
暫無

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

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