2011-12-21 3 views
1

У меня проблема с перенаправлением страницы. Я создал форму для проверки пользователей. есть два разных типа пользователей (обычный пользователь и администратор).Проблема перенаправления

Если это admin, то страница перейдет на loginadmin.php, иначе он перейдет на loginusers.php. он отлично работает на моем компьютере. но не на линии.

, когда я напечатал в имени пользователя и пароля обычного пользователя, у меня есть сообщение об ошибке ООН Примечание: Не определено индекс: пользователь в /homez.55/tzuhuich/www/development/aquarim/loginusers.php в строке 7

и если я набрал имя пользователя и пароль администратора. он остается на той же странице. Я не знаю почему?
мне нужна рука это PROJET к моему 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 ('Местоположение: 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

Первые пункты для проверки есть, это он получает в если заявление? Попробуйте напечатать что-то.

Далее, есть какие-либо другие переадресовывает называют? большинство браузеров потерпит неудачу, если больше один редирект называют.

2

Первый используйте mysql_real_escape_string на $_POST переменных. Это недостаток безопасности.

Заголовок может быть отправлен только до запуска любого выхода. Поэтому убедитесь, что выход не запущен. Иногда мы просто добавляем «до» <?php и его трудно найти. Если все это нормально, заголовок должен работать.

+0

спасибо за вашу помощь, я попробовал заголовок («Местоположение: http://www.google.com»), он работает. если я изменю его на заголовок («Location: loginadmin.php»), он не работает, и он говорит, что /main_login.php не найден на этом сервере. Это странно, потому что то, что я написал, это loginadmin.php не main_login. php. Я не понимаю, что вы подразумеваете под выходом et repend "" перед тем, как

Смежные вопросы