2017-06-17 49 views
-1

我對登錄過程驗證碼:PHP中的會話無法正常工作。爲什麼?

<div id="login"> 
<form action="ButtonClicker.php"> 
<label for="user">User</label> 
<input type="text" id="user" name="user" tabindex="1" autofocus> 
<label for="password">Password</label> 
<input type="password" id="password" name="password" tabindex="2"> 
<input type="submit" value="sing in"> 
</form> 
</div> 
<br> 
<?php 
if(isset($submit)) { 
    $_SESSION["user"] = $_GET["user"]; 
    $_SESSION["password" = $_GET["password"]; 
} 
?> 

和下一頁的我有這樣的:

<?php 
echo $_SESSION["user"]; 
?> 

在這兩個頁面我之前整個代碼:

<?php 
session_start(); 
?> 

當我登錄,所以下一頁寫:

注意:未知變量:_session

有人可以告訴,怎麼了?

+0

你有沒有在所有的PHP文件session_start()? –

+2

我認爲你應該使用大寫字母作爲像$ _SESSION ['user'],$ _GET ['user']這樣的超級全局變量,並且確保你是否開始會話 –

回答

0

會話沒有因爲如果條件正在檢查的變量提交的,而不是$_GET['submit'],你也沒有指定的名稱提交按鈕

<input type="submit" name="submit" value="sign in"> 
<?php 
if(isset($_GET['submit'])) { 
    $_SESSION["user"] = $_GET["user"]; 
    $_SESSION["password"] = $_GET["password"]; 
} 
?> 
保存未定義的變量的

錯誤是由於$_SESSION['user'] & ['password ']沒有設置,因爲$submit爲NULL的變量,你也錯過了關閉方括號中password

2

這可能是因爲你忘了在你的php文件中開始會話。 嘗試添加

session_start(); 

功能在每一頁上。然後只有PHP將能夠存儲您的會話變量。

+0

他沒有提到他在問題中的含義該功能在頂部的兩個頁面上? –

1

您需要調用session_start()函數,並將所有會話變量值存儲在全局變量$_SESSION中。

PHP Documentation: Session examples

+0

他沒有提到他在這兩個頁面上都有這個功能的問題嗎? –

1

你需要用表格的方法來傳遞輸入值。 更改您這樣的代碼:

<div id="login"> 
<form method="post"> 
<label for="user">User</label> 
<input type="text" id="user" name="user" tabindex="1" autofocus> 
<label for="password">Password</label> 
<input type="password" id="password" name="password" tabindex="2"> 
<input type="submit" name="submit" value="sign in"> 
</form> 
</div> 
<br> 
<?php 
if(isset($_POST["submit"])) { 
    $_SESSION["user"] = $_POST["user"]; 
    $_SESSION["password"] = $_POST["password"]; 
} 
?> 
+0

不需要使用POST因爲默認方法是GET,'他爲什麼沒有指定它,但你的想法是好的 –

相關問題