2014-12-07 81 views
-1

這是我做的,設置變量不是所有的PHP會話變量被設置

<?PHP 
session_start(); 
?> 
<?PHP 
$user_name = $_POST['username']; 
$first_name = $_POST['FirstName']; 
$last_name = $_POST['LastName']; 
$_SESSION['FirstName']=$first_name; 
$_SESSION['LastName']=$last_name; 
$_SESSION['UserName']=$user_name; 

用於測試目的,我在這個文件打印出來之前,我設置會話變量,所以我知道我得到的值從形式。 但是當我去和另一個打印出這樣的

<?PHP 
echo $_SESSION['UserName']; 
echo $_SESSION['FirstName']; 
echo $_SESSION['LastName']; 

崩潰,註釋掉一些打印後,我發現,它不僅是設置用戶名之一,其他人都莫名其妙地失去了

這是從我的形式 登錄 用戶名:  密碼: 

這是我走到哪裏提交時

$user_name = $_POST["username"]; 
$password = $_POST["password"]; 
$_SESSION["UserName"]=$user_name; 
$_SESSION["Password"]=$password; 

這是我嘗試打印出來

<?PHP 
echo "username: " 
echo $_SESSION["UserName"]; //this one works 
?> 
<br> 
<?PHP 
echo "password: " 
echo $_SESSION["Password"]; //does not work 
?> 

我會話變量在只有一個頁面的這樣

頂部聲明
<?PHP 
session_start(); 
$_SESSION["UserName"]; 
$_SESSION["Password"]; 
?> 
+2

只是確保你有'在session_start();'所有 – Ghost 2014-12-07 03:52:18

+0

這些網頁的顯示形式的html代碼和你是否確定其他2有數據並且不是空的? – Darren 2014-12-07 03:57:18

+1

正如@Ghost所說的,正如你所說的那樣*「正在設置用戶名一個,其他人則以某種方式丟失」* - 很可能你的表單的元素不包含name屬性,並且/或者存在拼寫錯誤或lettercase不匹配。用戶名和用戶名或用戶名不一樣。顯示與這些相關的完整代碼。我懷疑你的表單的元素沒有經過都是小寫字母。 – 2014-12-07 04:01:59

回答

4

只是確保你有session_start();在所有這些頁面的 - 鬼

除鬼的評論,這可能是因爲你的表單元素不包含name屬性,和/或有一個錯字,或大小寫不匹配。
UsernameusernameUsername是不一樣的。(PHP)變量區分大小寫。

被設置用戶名之一,其他人都莫名其妙地失去了

要闡述我的意見,我懷疑你的表單元素都在小寫或沒有被命名。

我願意打賭,如果你改變

$first_name = $_POST['FirstName']; // FirstName is not the same as firstname 
$last_name = $_POST['LastName']; // LastName is not the same as lastname 

$first_name = $_POST['firstname']; 
$last_name = $_POST['lastname']; 

,它將開始爲你工作。因爲,那些是兩個沒有通過。

但是,爲了100%確定,您需要發佈您的表單的代碼,但是我的答案只是一定的。

你的表格應包含:

<input type="text" name="firstname"> 

<input type="text" name="lastname"> 

添加error reporting到您的文件(S)的頂部,這將有助於發現錯誤,如果你的系統的設置不自動設置,這反過來將很可能是「未定義的索引...」。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:錯誤報告只應在分期完成,並且從不生產。


現在,如果仍然無法正常工作,那麼您的緩存問題。可以使用session_destroy()。您也可以取消設置會話,然後重新開始。

有關這些的更多信息,請訪問:


編輯:

關注這個,它會工作,經測試。之後你可以修改它。

第一頁:

<html> 
<body> 
<form action="page2.php" method="post"> 
Username: <br><input type="text" name="username"><br> 
First name: <br><input type="text" name="firstname"><br> 
Last name: <br><input type="text" name="lastname"><br> 
<input type="submit" name = 'submit' value= 'Login'> 
</form> 
</body> 
</html> 

使page2.php

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

session_start(); 
$username = $_POST['username']; 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 

$_SESSION['username'] = $_POST['username']; 
$_SESSION['firstname'] = $_POST['firstname']; 
$_SESSION['lastname'] = $_POST['lastname']; 

echo "Username: " . $_SESSION['username'] . "<br>"; 
echo "First name: " . $_SESSION['firstname'] . "<br>"; 
echo "Last name: " . $_SESSION['lastname'] . "<br>"; 
?> 
+1

這應該涵蓋所有的基地。 「它崩潰」真的很模糊。很可能這只是'未定義索引'的另一種情況:' – Ghost 2014-12-07 04:18:23

+1

@Ghost確實含糊不清。但我認爲你是對的,「未定義指數」。 – 2014-12-07 04:21:06

+1

@鬼好吧,我要去啦啦啦。保持堡壘嚴密; *乾杯* – 2014-12-07 04:43:37