PHP登录后重定向

时间:2012-02-04 17:56:40

标签: php

我有一个子域名

accounts.mysite.com

我想要的是该子域的一个登录面板,然后在用户登录后将它们引导到他们自己的页面(并阻止他们查看“其他帐户”页面)。

所以当他们去account.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();
?>

我是菜鸟,所以任何帮助都会受到赞赏!

3 个答案:

答案 0 :(得分: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 :(得分:2)

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

答案 2 :(得分:0)

在每个应该被阻止的文件的顶部包含一个文件,其中包含以下内容:

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

每当用户尝试访问另一个文件时,都会将用户重定向到user.php。

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