2012-02-04 137 views
2

我有一个子重定向后PHP登录

accounts.mysite.com

我要的是为子域一个登录面板,然后在用户登录时就引导他们自己的网页(和阻止他们查看“其他帐户”页面)。

所以当他们去accounts.mysite.com这是登录页面。用户使用特定名称登录,传递。成功登录到他们的账户页面后阻止所有其他页面。

这里是我迄今为止

<?php 
ob_start(); 
$host="localhost"; // Host name 
$username="******"; // Mysql username 
$password="*******"; // Mysql password 
$db_name="medpro_test"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 
// Register $myusername, $mypassword and redirect to file 
session_register("myusername"); 
session_register("mypassword"); 
header('Location: user.php?id=' . $_SESSION['user_id']); 
} 

else { 
$result = MYSQL_QUERY($sql) or die('Query failed: ' . mysql_error() . "<br />\n$sql"); 
echo "Wrong Username or Password"; 
} 

ob_end_flush(); 
?> 

,我一个小白所以任何帮助,将不胜感激!

+0

此外,您是否考虑过使用PHP框架来帮助您处理应用程序结构? (其中还包括登录/账户类型等。)如果您决定在未来使用PHP框架,请参阅以下流行PHP框架列表:http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP – summea 2012-02-04 18:04:49

+0

我可以不明白为什么人们仍然在为学习使用mysql_ *函数而烦恼。学习PDO的人,更好! – 2012-02-04 18:06:13

回答

0

包含在每个文件的顶部应该被阻止包含类似文件:

<?php 
if (isset($_SESSION['user_id']) && $_SESSION['user_id']) { 
    header('Location: user.php?id=' . $_SESSION['user_id']); 
    exit; 
} 

这将用户重定向到user.php的每次他们尝试访问其他文件。

编辑:不要忘记在每个请求开始时使用session_start()

2

你的代码看起来很糟糕。
session_register("myusername"); - 从PHP 5.3.0开始,此功能已被拒绝。 将您的数据库配置移动到另一个文件。

$host="localhost"; // Host name 
$username="******"; // Mysql username 
$password="*******"; // Mysql password 
$db_name="medpro_test"; // Database name 
$tbl_name="members"; // Table name 

用头位置http://php.net/manual/en/function.header.php 移动用户的链接。

+1

为了公平对待OP,通常将代码片段减少到最低限度。我宁愿他不开始发布具有单独配置的完整文件集。 – 2012-05-26 11:18:24

2
  1. 你需要摆脱你当前的PHP书,并发现自己是一个现代的,至少发表在本世纪。
  2. 然后根据manual
  3. 重写会话代码,然后使用session_set_cookie_params()设置会话域。