[英]php $_GET loses value after submitting form, so i m failing to update a database table using it
[英]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.