2013-04-22 113 views
0

我做了網站登錄使用PHP和HTML。代碼:登錄網站和其他網站部分

<?php 

session_start(); 
$user="root"; 
$host="localhost"; 
$password=""; 
$database="mb_dusnionys_login"; 
$usertable="nariai"; 

mysql_connect ($host, $user,$password) or die ("negalima"); 

mysql_select_db ($database)or die (mysql_error()); 


$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 


$sql="SELECT * FROM {$usertable} WHERE username='{$myusername}' AND password='{$mypassword}'"; 

$result = mysql_query($sql); 
$count=mysql_num_rows($result); 

if($count==1){ 

$_SESSION ["username"]=$myusername; 
$_SESSION ["password"]=$mypassword; 
$_SESSION ["userrecord"]=mysql_fetch_assoc($result); 

header ("location: /nariu_turinys/index.html"); 
} 
else { 
echo "Netinkamas vartotojo vardas arba slaptažodis. Grįžkite atgal ir bandykite iš naujo"; 
} 

我的網站的conseption:有一個與主鍵索引文件和登錄form.Button重定向沒有登錄其他索引文件和登錄窗體重定向到與用戶名和PASW的要求,第三個索引文件。在這個目錄是我的網站的主要部分。 當我使用登錄表單登錄網站時,一切都可以,但是如果我在網頁中進行復制並複製網址並粘貼到其他瀏覽器或其他選項卡中,則無需登錄即可訪問此部分。 問題是如何在沒有登錄的情況下使這些部件不可用?

+6

您正在使用[一個** **過時數據庫API](http://stackoverflow.com/q/12859942/19068)和應該使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2013-04-22 13:44:04

+2

不要存儲純文本密碼! [使用散列安全地存儲它們](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)。 – Quentin 2013-04-22 13:47:22

+0

你能告訴我這更詳細的,我該怎麼做? – user2290637 2013-04-22 14:13:05

回答

0

您需要在客戶端上存儲某種形式的身份驗證令牌(您已經在使用session cookie進行此操作),然後檢查訪問每個頁面的用戶是否已通過身份驗證並且有權查看該頁面(並給出403如果它們不是,則使用登錄表單或適當的錯誤消息進行響應)。

+0

你能寫這個 – user2290637 2013-04-22 14:17:53

0

您應該爲每個內部頁面添加一個函數來檢查您登錄時存儲的會話數據。如果此數據與存儲的數據不匹配,則將用戶踢回到登錄頁面並顯示錯誤消息。

CNC中

一個實例函數:

function isLoggedIn() 
{ 
    if(isset($_SESSION['username'])) 
     $sql="SELECT * FROM {$usertable} WHERE username='{$_SESSION['myusername']}' AND password='{$_SESSION['password']}'"; 
    $result = mysql_query($sql); 
    if(!$result) 
    { 
     logout(); 
    } 
} else { 
    logout(); 
}} 
+0

的代碼嗎你能寫這個代碼嗎? – user2290637 2013-04-22 14:12:13