2011-05-23 64 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