2013-12-11 5 views
-3

так у меня есть свой сайт, который я кодирования, в моем login.php, это источник:PHP Мульти Войти Рейтинг

<?php 
    include "out_config.php"; 
    session_start(); 

    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 

    if(!$username) { 
     header("Location: ../index?errormsg=nousername"); 
    } 
    if(!$password) { 
     header("Location: ../index?errormsg=nopassword"); 
    }  

    $sql = "SELECT * FROM users WHERE username='$username' and password='$password'"; 

    if($rankcheck == "Administrator" || $rankcheck == "Client") { 
     $check = 1; 
    } 
    else { 
     $check = 0; 
    } 

    if($_SERVER['REQUEST_METHOD'] == 'POST') { 
     $result = mysql_query($sql); 
     $count = mysql_num_rows($result); 
      if($count==1 && $check == 1) { 
       $_SESSION['username'] = $username; 
       header("Location: ../home"); 
      } 
      else { 
       header("location: ../index?errormsg=invalidlogin"); 
      } 
    } 
?> 

первый: Я знаю, что MySQL амортизируется, но я хочу использовать MySQL, потому что мой Host поддерживает MySQL больше, чем MySQLi/PDO.

2nd: Вы можете видеть, что мой $ rankcheck не будет работать. Мой ранг проверки линии включены в out_config.php, источник для него является:

<?php 
<Removed Details> 
$connect = mysql_connect($host, $username, $password); 
$selectdb = mysql_select_db($db); 

$IP = getenv('REMOTE_ADDR'); 

$sql2 = mysql_query("SELECT `rank` FROM `users` where username='$user'"); 
if(isset($_SESSION['username'])) { 
$user = $_SESSION['username']; 
$rankcheck = mysql_result($sql2,0); 
} 
?> 

Таким образом, вы можете видеть, это выглядит все хорошо. : P

Проблема в том, что я пытаюсь разрешить доступ к этой области только тем людям, которые ранжируются «Администратор» и «Клиент», поэтому это не сработает. Моя структура базы данных:

http://i.stack.imgur.com/AAzr9.png

Это не предоставляет доступ к Пользователю и ожидающим членам групп пользователей. Но он даже не позволяет администраторам и клиентам. (Я уверен, что шифрования паролей еще нет).

Если бы вы могли мне помочь, это было бы очень полезно!

+0

как вы получаете $ пользователя в 'out_config.php' –

+1

Открытые текстовые пароли заставляют меня грустить :-( –

+0

@NicholasKing прав, используйте [сильный алгоритм хэширования пароля] (http://php.net/password) при хранении паролей. –

ответ

0

в данный момент вы в том числе вашего «out_config.php» $ имени пользователя и пароль $ не установлены

изменений этого:

<?php 
    session_start(); 

    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 

    include "out_config.php"; 

    if(!$username) { 
     header("Location: ../index?errormsg=nousername"); 
    } 
    if(!$password) { 
     header("Location: ../index?errormsg=nopassword"); 
    }  

    $sql = "SELECT * FROM users WHERE username='$username' and password='$password'"; 

    if($rankcheck == "Administrator" || $rankcheck == "Client") { 
     $check = 1; 
    } 
    else { 
     $check = 0; 
    } 

    if($_SERVER['REQUEST_METHOD'] == 'POST') { 
     $result = mysql_query($sql); 
     $count = mysql_num_rows($result); 
      if($count==1 && $check == 1) { 
       $_SESSION['username'] = $username; 
       header("Location: ../home"); 
      } 
      else { 
       header("location: ../index?errormsg=invalidlogin"); 
      } 
    } 
?> 
+0

Это через форму action = "inc/login">?, так как пользователь отправляет данные, которые он регистрирует? –

+0

в вашем примере вы сначала включаете «out_config.php», после чего вы заполняете переменные $ username и $ password из массива GET. вы должны сначала установить переменные, а затем включить - см. мой ответ – niyou

+0

Кстати: вы действительно должны улучшить свой код - его абсолютно небезопасный (sql injection ...) – niyou

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