2011-08-06 21 views
0

好吧我試圖使用戶的登錄系統。但我的用戶無法登錄。而且這是一個問題。用戶無法登錄,出了什麼問題?

我的登錄頁面:

<? 
session_start(); 

include "database.php"; 
?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
<title>Wildsoul</title> 
</head> 

<body> 
    <div id="welcome"> 
     <h3>Log ind.</h3> 
<br><br> 
     <p><form action="login-ok.php" method="post"> 
<input type="text" name="username"><br> 
<input type="password" name="password"><br><br><br> 
<input type="submit" name="login" value="Login"> 
</form></p> 




           <br /><br /> 

    </div> 
        </div> 
    </body> 
</html> 

登錄-OK頁:

<? 
session_start(); 

include "database.php"; 
?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<link href="style.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 
<div id="container"> 
     <div id="welcome"> 
     <h3>Log in</h3> 
     <p><?php // PHP script start. 
require("config.php"); // Variabler til mysql hentes 
$login = &$HTTP_POST_VARS['login']; 
$_SESSION['login'] = $login; //AF rettelse 

if(empty($login)) { 
    echo 'You need to log in'; } 
    else { 

$username = &$HTTP_POST_VARS['username']; // Brugernavn fra form i login.php. 
$password = &$HTTP_POST_VARS['password']; // Password fra form i login.php. 

if(empty($username) OR empty($password)) { //Her tjekkes om ET af felterne er tomme. 
    echo 'Et af felterne er tomme'; } 
    else { // Denne klamme starter alt script der udføres HVIS begge felter er udfyldte. 

// Her åbnes for mysql-serveren og der logges ind med data fra config.php. 
mysql_connect($mysql_host, $mysql_user, $mysql_pw); 
mysql_select_db($mysql_db); // Der åbnes for databasen defineret i config.php. 


$result_pw = mysql_query("select password from users where brugernavn = '$username'") or die (mysql_error()); 
$result_user = mysql_query("select brugernavn from users where password = '$password'") or die (mysql_error()); 


// Her sker det egentlige tjek om brugernavn og password er dem som står i databasen. 
// Der oprettes først et array med de data vi fik fra mysql før. 
$array_user = mysql_fetch_array($result_user); // Først et med brugernavn. 
$array_pw = mysql_fetch_array($result_pw); // Og et med password. 
// Her tjeckes så om både array med brugernavn og password indeholder data 
// magen til dem skrevet i felterne i html-formen 
// PASSWORD KONTROL 
if($array_user['username'] == $username AND $array_pw['password'] == $password) { 
    echo 'correct password. <a href="http://wildsoul.dk/indeks.php">Klik her</a>.'; // Brugernavn og password passede!! 
$_SESSION['username'] = $username; //AF rettelse 
$_SESSION['password'] = $password; //AF rettelse 

} // Her lukker vi condition TRUE fra password kontrol 

else { // Her starter condition FALSE på password kontrol 
echo 'forkert password'; 
} // Her lukkes condition FALSE på password kontrol. 

} // Her lukker vi for condition FALSE på tomme-felter-tjek. 
} 
?> 
</p> 


           <br /><br /> 

    </div> 
        </div> 
    </body> 
</html> 

當我要檢查用戶是否登錄,我有這樣的代碼:

<? 
session_start(); 

include "database.php"; 
?> 

<? if(isset($_SESSION['username']) && isset($_SESSION['password'])){ ?> 

bla bla bla 

<?} 
else{ 
echo 'You have to log in'; } 
?> 

我在哪裏錯了?

+0

只是一個從代碼po的快速概覽中提出sted:$ HTTP_POST_VARS已棄用,請使用$ _POST而不是 – laurac

+0

用戶嘗試登錄時收到什麼訊息?另外它可能不安全的存儲用戶名和密碼在$ _SESSION。更好的選擇是爲他們的訪問創建一個唯一的會話ID並用它來驗證會話是否有效。例如,會話ID可以與訪問者IP地址綁定,以確保會話不會被其他人劫持。 – arunkumar

+0

和...作爲後續,<?也被棄用。然後,如果你不逃避你的輸入,你會得到嚴重的SQL注入問題。最後,引用的分配也是不需要的。 –

回答

0

看起來你有一個邏輯問題,你在實際嘗試驗證用戶之前檢查$ login。刪除它,只是嘗試驗證它們,然後設置你的會話變量。

所以刪除if(空($登錄))...並只是連接到你的分貝等等。如果這不起作用,嘗試編輯你的帖子,除了「你沒有收到什麼問題作品」 :)

0
  • 你之前先<?所以會話空間不能成功啓動 - 這可能是你的整個問題
  • 不要使用短起點PHP標籤<?但使用<?php
相關問題