2011-12-21 203 views
1

我在重定向頁面時遇到問題。我創建了一個表單來檢查用戶。有兩種不同類型的用戶(普通用戶和管理員)。重定向問題

如果是admin,則頁面將轉到loginadmin.php,否則將轉到loginusers.php。它可以在我的計算機上正常工作。但不在線。

當我在用戶名和正常用戶的密碼輸入,我有未錯誤消息通知 :未定義指數:用戶在/homez.55/tzuhuich/www/development/aquarim/loginusers.php第7行

如果我輸入了admin的用戶名和密碼。它保持在同一頁面中。我不知道爲什麼?
我需要手這個謨我在一月初professeur:_( 請幫幫我!謝謝你提前

這裏是我的代碼:

loginvalide.php 

<?php 
session_start(); 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="aquarium"; // Database name 
$tbl_name="client"; // 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"); 

// username and password sent from form 
$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); 
if ($result){ 
       $ligne = mysql_fetch_row($result); 
       $username = $ligne[3]; 
       $password=$ligne[4]; 
       $droits=$ligne[5]; 
       $_SESSION["acces"]="oui"; 
       $_SESSION["username"]=$username; 
       $_SESSION["password"]=$password; 

      } 
// 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 "login_success.php" 
if ($droits ==1) { 


header("location:loginadmin.php"); 
}else { 

header("location:loginusers.php");} 

} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

<? 
session_start(); 
if($_SESSION['acces']!="oui" || $_SESSION["droits"]!=1) { 
    header("Location:main_login.php"); 
} 
else{ 
    $_SESSION['admin']++; 
} 

?> 
loginadmin.php 

<!DOCTYPE html> 
<html lang="fr"> 
<head> 
<meta charset="UTF-8" /> 
<title>page admin</title> 
</head> 
<body> 


    <p> admin </p> 
    <ul> 
     <li><a href="fomulaireajout.php">ajouter poisson</a> </li> 
     <li><a href="modifier.php">modifer</a> </li> 
     <li><a href="suprimpossion.php"> supprimer </a> </li> 
    </ul> 
</body> 
</html> 


<?php 
session_start(); 
if($_SESSION['acces']!="oui") { 
    header("Location:main_login.php"); 
} 
else{ 
    $_SESSION['user']++; 
} 
?> 
loginusers.php 

<!DOCTYPE html> 
<html lang="fr"> 
<head> 
<meta charset="UTF-8" /> 
<title>page poisspns</title> 
</head> 
<body> 

    <p><br /> 
    <ul> 
     <li><a href="pagevisualisation.php">ourfish </a></li> 

    </ul> 
</body> 
</html> 
+0

你試過'header('Location:http://example.com');'?我正在查看大寫'L'和冒號後面的空格,並且包含非相對URL。 – 2011-12-21 23:04:42

+1

停止使用'session_register()',停止在查詢中使用'$ _POST'變量。請使用'session_start()'和[PDO](http://php.net/manual/en/book.pdo.php) – 2011-12-21 23:05:50

+0

感謝您的幫助,我試過header('Location:http://www.google .COM');有用。但如果我將其更改爲標題(「位置:loginadmin.php」);它不起作用,它說在這臺服務器上找不到/main_login.php。這很奇怪,因爲我寫的是loginadmin.php而不是main_login.php – 2011-12-22 08:41:08

回答

1

的第一項檢查就是它,它進入的if語句?嘗試打印出來的東西。

接下來,還有被稱爲任何其他重定向?如果有更多的一個重定向被稱爲大多數瀏覽器都將失敗。

2

第一在$_POST變量上使用mysql_real_escape_string。它的安全缺陷。

標題只能在任何輸出開始之前發送。所以確保沒有輸出開始。有時我們只是在<?php之前加上「」,並且很難找到它。如果所有這些都沒問題,標題應該可以工作。

+0

感謝您的幫助,我嘗試過頭('Location:http://www.google.com');它的工作。如果我將其更改爲header(「Location:loginadmin.php」);它不起作用,並且在此服務器上沒有找到/main_login.php。這很奇怪,因爲我寫的是loginadmin.php而不是main_login。 php。我不明白你的意思是什麼意思輸出et repend「」之前<?php你能解釋更多?謝謝 – 2011-12-22 09:24:33