2011-12-21 21 views
1

ページのリダイレクトに問題があります。私はユーザーを確認するためのフォームを作成しました。 2つの異なる種類のユーザー(通常のユーザーと管理者)があります。リダイレクトの問題

adminの場合、le pageはloginadmin.phpに行きます。それ以外の場合はloginusers.phpに行きます。それは私のコンピュータ上でローカルに正常に動作します。オンラインではありません。

普通のユーザーのユーザー名とパスワードを入力するとエラーメッセージが表示されます。 Notice:未定義のインデックス:/homez.55/tzuhuich/www/development/aquarim/loginusers.php on line 7

と、管理者のユーザー名とパスワードを入力した場合。それは同じページにとどまります。何故かはわからない?
私は早い1月の私の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の包含を見ています。 –

+1

'session_register()'を使って停止し、あなたのクエリで '$ _POST'変数を使うのを止めてください。あなたの助けを借りて、 'session_start()'と[PDO](http://php.net/manual/en/book.pdo.php) –

+0

を使用してください、私はヘッダーを試みました( '場所:http://www.google .com ');できます。しかし、私はそれをヘッダー( "Location:loginadmin.php")に変更します。それは動作しませんし、/main_login.phpがこのサーバ上に見つかりませんでした。私が書いたものはloginadmin.phpではないので、これは奇妙です。main_login.phpではなく –

答えて

1

最初に確認する項目、それそれはif文になっている?何かを印刷してみてください。

次へ]を、他のリダイレクトがそこと呼ばれている?1つのリダイレクトが呼び出されている多くの場合、ほとんどのブラウザが失敗します。

2

ファースト変数mysql_real_escape_string$_POST個の変数に使用してください。そのセキュリティ上の欠陥。

ヘッダーは、出力が開始される前にのみ送信できます。出力が開始されていないことを確認してください。ときどき<?phpの前に ""をつけて見つけてください。これらがすべて正常であれば、ヘッダーが機能するはずです。

+0

あなたのおかげで、私はヘッダーを試しました( '場所:http://www.google.com');私はそれをheader( "Location:loginadmin.php")に変更しても動作せず、このサーバで/main_login.phpが見つかりませんでした。これは私が書いたものがmain_loginではなくloginadmin.phpなので奇妙です。 PHPの前に出力を返すということはどういう意味なのでしょうか?<?phpもっと説明できますか?ありがとう –