仅限会员网站的部分

时间:2011-11-19 07:24:31

标签: php

我正在尝试在网站上仅限会员。用户必须输入用户名和密码才能登录。我已经为用户设置了注册部分,他们可以在我的网站上创建一个帐户。

另外,如下面的代码所示,我可以导航到用户唯一的网站部分。但问题是我需要将值 $ myusername 传递给页面 members_area.php ,以便我可以在该页面上执行一些数据库查询。我该怎么做?

$sql="SELECT * FROM table_name WHERE email= '$myusername' and password='$mypassword'" ;
$result=mysql_query($sql,$ms);

$user_exist = mysql_num_rows($result);

// if the user is there in the database
if($user_exist>0){ 

    //start a session over here
    $_SESSION["valid_user"] = $myusername;
    Header('Location: members_area.php');
}

2 个答案:

答案 0 :(得分:5)

将此添加到members_area.php

的顶部
session_start();
$sql="SELECT * FROM table_name WHERE email= '{$_SESSION['valid_user']}'" ;
$result=mysql_query($sql,$ms);
if( !mysql_num_rows($result) ) die( 'Please log in first' );


// The global variable $_SESSION['valid_user'] will contain the username var (email)

答案 1 :(得分:4)

嗯,你有几种选择。只有少数是好的。

由于您只是将$ myusername存储在会话变量中,因此您可以在members_area.php上引用它:

session_start(); // Don't forget this on each page that uses sessions
$myusername = $_SESSION["valid_user"];

考虑到你在这里提出的建议,这将是更安全的方式。其他选项涉及在URL中使用查询字符串传递值:

header("Location: members_area.php?user=$myusername");

但这不安全,很容易受到愚蠢的影响。仅供参考,我们可以做到。

但是,作为旁注,我可能会建议您为每个用户存储唯一标识符(UID或GUID)。它只是一个只有该用户唯一标识它的数字。你会发现它更强大。