2011-05-23 63 views
0

我有一個登錄系統。然後,用戶進行登錄,他可以訪問私人資料(個人資料)。會話的最佳做法 - 登錄

我需要認識到用戶做了登錄才能得到他的東西。所以,我需要這樣的:$nameUser=$_SESSION['u_name']是否正確?那麼我可以做這樣的查詢:

Select photo*from tablePhotos where name= $nameUser

我擁有的代碼已被佔用,還是存在安全問題?
它表明爲每個會話生成一個session_id有意義嗎?什麼是「規則」?

我沒有與會議太多的經驗......

<?php 
    session_start(); 

    if(empty($_SESSION['u_name'])) 
    header("Location:index.php"); 

    if(isset($_GET['logout'])) { 
     session_destroy(); 
     header("Location:emprego.php"); 
    } 

    $name = $_SESSION['u_name']; 
    echo $name ; 

    echo "<a href='secure.php?logout'><b>Logout<b></a>"; 

    ?> 
+0

好,說實話,你的用戶關聯數據應該通過ID關聯,所以不是存儲完整的用戶名,而是存儲一個整數,這在你的表大小上更容易,並且如果索引正確,可以提供更快的查找。 – 2011-05-23 02:48:06

+0

u_name是電子郵件。我認爲當用戶進行登錄時,更容易檢查數據庫中的電子郵件和密碼,然後在會話中存儲電子郵件(這對每個用戶都是唯一的)。 – user455318 2011-05-23 02:52:56

+0

通常在登錄時使用電子郵件和密碼進行獲取用戶標識所需的查找。然後,您使用用戶標識來查找用戶關聯的數據,這是因爲我之前的評論中提到的原因。 – 2011-05-23 03:00:10

回答

1

只要你總是淨化你的數據和使用查詢,如

"Select * from tablePhotos where name= '" . mysql_real_escape_string($nameUser) . "'" 

一切都很好

+0

我將使用mysqli,查詢示例只是爲了解釋目的:) – user455318 2011-05-23 02:45:16

+0

@ user455318:在mysqli中使用預準備語句然後一切都會正常 – zerkms 2011-05-23 02:45:46

+0

session_id()在這種情況下有意義嗎? – user455318 2011-05-23 02:47:01