2012-11-01 133 views
-1

你好,我有問題:在login.php文件我存儲$ _SESSION ['$ myusername']; 我嘗試檢查page.php文件中的SESSIOn用戶名,如果會話不存在,它將重定向回login.php。我嘗試使用有效的用戶登錄,但我重定向到login.php 我不知道問題出在哪裏。

的login.php:

<?php 


$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="2"; // Database name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
if (isset($_POST['formsubmitted'])) { 
    $error = array();//Declare An Array to store any error message 
}; 
// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM `members` WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 

// Register $myusername, $mypassword and redirect to file "login_success.php" 
//store data: 
$_SESSION['$myusername']; 

//next page: 


header("location:page.php"); 
} 

else { 

include 'index.php'; 
$error[] = '<b><h5>Invalid Username or Password!</b>'; 


if(isset($error) && is_array($error)) 
{ 
    echo "<div class='content1'>" . implode("<br />", $error) . "</div>"; 
}; 

}; 
?> 

page.php文件:

<?php 
    ob_start(); 
    session_start(); 
    if(!isset($_SESSION['$myusername'])) 
    { 
     header("Location: login.php") 
    } 


?> 
+0

您是否嘗試過調試代碼?你有什麼錯誤嗎? – ficuscr

+0

你有沒有在login.php中調用'session_start'? – andrewsi

回答

0

在page.php文件檢查會話變量時,你應該不包括$:

if(!isset($_SESSION['$myusername'])) 

應該是:

if(!isset($_SESSION['myusername'])) 

在login.php中必須設置會話變量:

if($count==1){ 
    // Register $myusername, $mypassword and redirect to file "login_success.php" 
    //store data: 
    $_SESSION['$myusername']; 
    //next page: 
    header("location:page.php"); 
} 

應該是:

if($count==1){ 
    // Register $myusername, $mypassword and redirect to file "login_success.php" 
    //store data: 
    $_SESSION['myusername'] = $myusername; 
    //next page: 
    header("location:page.php"); 
} 

login.php中也需要調用在session_start()在頂部。

+0

你幫了我吧!我會在幾分鐘內接受你的答案 –

+0

@KasparasTaminskas - 謝謝,我假設你也有一個調用session_start()在login.php? – SteB

+0

是的,我忘了它。我是php的初學者;) –

0

第一個問題是在您的login.php頁面中,您沒有啓動會話。將session_start()添加到頁面的開頭。

其次,您從不爲會話變量賦值。試試:

$_SESSION['myusername'] = $myusername; 

注意,我也刪除了$裏面的session-key名字。因此,在您的page.php頁面中,您還需要使用isset($_SESSION['myusername'])訪問它。您始終可以保留$,但我不相信這就是您的意思。

+0

Ty求助,問題修復。 –