我正在尝试在网站上仅限会员。用户必须输入用户名和密码才能登录。我已经为用户设置了注册部分,他们可以在我的网站上创建一个帐户。
另外,如下面的代码所示,我可以导航到用户唯一的网站部分。但问题是我需要将值 $ 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');
}
答案 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)。它只是一个只有该用户唯一标识它的数字。你会发现它更强大。