簡體   English   中英

在php中提交表單后會話丟失其數據或值

[英]Session loses its data or value after form submitting in php

問候高級和初級開發人員,我是 php 的新手。 目前,我面臨着與會話相關的問題。 但在我描述我的問題之前,我也嘗試了其他解決方案,但沒有奏效。 所以這是我的問題: 我有兩個 php 文件 s1 和 s2.php 當我在輸入框中輸入我的名字並單擊提交按鈕時,我希望我的名字顯示在另一個頁面上,即 s2.php。 我想通過使用會話來實現上述結果。 我所做的是我寫了一個條件語句來檢查按鈕是否已提交,如果已提交,則將我放入 url 輸入框中的值分配給我的會話變量。 然后我在我的 html 文檔之上定義了會話開始。 我對 s2 頁面做了同樣的事情,我試圖在頁面上回顯會話變量,但它什么也沒顯示。 然后我試圖檢查會話是否設置,我發現它還沒有設置。

那么如何解決問題呢? 為什么我的會話沒有設置? 如果我嘗試不提交表單,它工作正常。 這是我的 s1.php 代碼:

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
        <form action="s2.php" method="get">
            <input type="text" name="username">
            <input type="submit" name="submit">
        </form>
    

    <?php
        
            if(isset($_GET['submit'])){
                $_SESSION['name']=$_GET['username'];
            }
            
        
        
      
    ?>
</body>
</html>

這是我的 s2.php 代碼:

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php
    

        if(isset($_SESSION['name'])){
            echo "it set"."<br>";
            echo $_SESSION['name'];
        }else{
            echo "it not set";
        }
    ?>
</body>
</html>

s1.php 在服務器上進行處理,並且您的條件為假,因此 html 表單將返回,您可以在瀏覽器中看到它。 當您提交表單時,表單數據將發送到 s2.php。 您正在檢查會話是否已設置,告訴我們並顯示會話 ['name'] 的內容。

所以基本上問題是你在 s1.php 的 setter 代碼段根本沒有改變設置 session['name']。 它在錯誤的地方。 就像羅伯特所說的那樣

if(isset($_GET['submit'])){
   $_SESSION['name']=$_GET['username'];
}

在檢查 session['name'] 是否設置之前到 s2.php

& 如果你在 s1.php 中與 session 無關,你可以刪除

<?php
session_start();
?>

來自 s1.php 的頭部

此致 :)

暫無
暫無

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

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