2012-04-18 112 views
1

我有一個網站需要用戶名和密碼。如果輸入正確,則會創建用戶名會話變量。但是,當我進入另一個頁面並檢查是否設置了變量時,我得到了錯誤信息。會話變量未被取消設置

這是我設置變量的代碼。

$ username = $ _POST [「username」]; $ password = $ _POST [「password」];

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

然後我有一個PHP腳本來檢查,如果一個用戶登錄,如果用戶在登錄,然後它去到一個網頁,如果沒有它去到另一個網頁。但是,它要到頁面,它應該去,如果用戶沒有然而,用戶登錄被記錄下來。

<?php session_start(); 

    if(!isset($_SESSION["username"])){ 

     header('Location:http://website.com/page1.php'); 

    } else { 

     header('Location:http://website.com/page2.php'); 

    } 

?> 

所以我登錄後我點擊但是運行此腳本的鏈接。而不是帶我到第2頁,它把我帶到第1頁。它不應該。

任何想法?

+0

僅供參考'$用戶名== 「正確的用戶名」 || $ password ==「rigthpassword」'。我想你想''&&'不''' – 2012-04-18 04:06:41

+0

謝謝你。但是這不會導致問題。 – user541597 2012-04-18 04:07:42

+0

看起來你的2頁在不同的域名。 'website.com'和'webpage.com'。這只是一個錯字嗎?還是他們真的在不同的領域。 – 2012-04-18 04:08:34

回答

0
  1. session_start();功能使用頂部的頁面(PHP的一個踏歌后不換行)

2如果($用戶名== 「rightusername」 & & $密碼== 「rigthpassword」){

$_SESSION["username"] = "aadsj2als378909382lkklja"; 
$_SESSION["password"] = "ajklsd89798798jlk09779023"; 

}

改變這樣的代碼,測試$用戶名,密碼$內容..

+1

添加換行符不會改變任何'<?php session-start()'是完全可以接受的PHP代碼。 – 2012-04-18 04:17:46

+0

這也沒有工作。 – user541597 2012-04-18 04:22:33

+0

當這些變量已經設置好後,你在print_r($ _ SESSION)'時會返回什麼?你拼寫正確嗎? – Phix 2012-04-18 04:29:00

0

好吧,這可能會有點明顯,但機智h這...

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

你如何檢索這些值?我假設你正在使用post方法。這意味着它應該是更多的性質...

if ($_POST['username'] == "right username" || $_POST['password'] == "rigthpassword"){ 
session_start(); 

     $_SESSION["username"] = "aadsj2als378909382lkklja"; 
     $_SESSION["password"] = "ajklsd89798798jlk09779023"; 
    } 

我的猜測是,你必須不正確地發送變量。你可以發佈你的登錄表單的代碼嗎?

的login.html

<form method="POST" action="http://mysite.com/login.php"> 
<input type="text" name="username"> 
<input type="password" name="password"> 
<input type="submit"> 
</form> 

的login.php

<?php 
session_start(); 
if ($_POST['username'] == "password" && $_POST['password'] == "password") { 
$_SESSION['username'] == "aadsj2als378909382lkklja"; 
$_SESSION['password'] == "ajklsd89798798jlk09779023"; 
} 
?> 

otherpage.php

<?php 
session_start(); 
if (!isset($_SESSION['username'])){ 
header("location: http://website.com/page1.php"); 
} else { 
header("location: http://website.com/page1.php"); 
} 
?> 
+0

登錄工作正常。這不是問題。 – user541597 2012-04-18 05:08:54

+0

基於你的代碼,它應該工作得很好。所以我唯一的假設是,不知何故變量沒有被正確發送。如果情況並非如此,那麼我認爲你不會發布哪些內容會導致問題。 – Ian 2012-04-18 05:12:12

+0

我發現當我執行session_start()而不是繼續上一次會話時,會創建不同的會話。 – user541597 2012-04-18 05:16:18