2012-02-04 301 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()設置會話域。