問候高級和初級開發人員,我是 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>
uj5u.com熱心網友回復:
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 的頭部
此致 :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/342887.html
上一篇:為每次搜索重置Javascript位置搜索而不是追加
下一篇:反轉“dome_view”,未找到任何引數。嘗試了1個模式:['dome2/(?P<id>[0-9] )/$']
