Я модифицировал систему аутентификации пользователей, и у меня возникли проблемы с настройкой сеанса для администратора. Сессия reguser
устанавливается очень хорошо, но я не могу понять, почему admin
не будет установлен.Установка переменной сеанса из результата запроса
Пользователь с userlevel
из 9 - администратор. Да, я знаю, как защитить от SQL-инъекции. Я просто стараюсь держать его таким простым и легким для чтения. Это, вероятно, не будет использоваться ни для чего, я просто получаю некоторый опыт работы с PHP.
Привет всем, спасибо вам за помощь! Я заработал. Я так долго смотрел на него, что мой разум не был ясен. Вчера вырвался из него, вернулся к нему сегодня и смог понять это менее чем за 5 минут! Вы, ребята, потрясающие, я люблю stackoverflow!
function checklogin($email, $pass) {
$server = 'localhost';
$user = 'root';
$password = '';
$connection = mysql_connect($server, $user, $password) or die(mysql_error());
mysql_select_db(udogoo, $connection) or die(mysql_error());
$pass = md5($pass);
$result = mysql_query("SELECT userid from users WHERE email = '$email' AND password = '$pass'");
$user_data = mysql_fetch_array($result);
$no_rows = mysql_num_rows($result);
if ($no_rows == 1)
{
$_SESSION['reguser'] = true;
$_SESSION['userid'] = $user_data['userid'];
$userid = $user_data['userid'];
$isadmin = mysql_query("SELECT userlevel FROM users WHERE userid = '$userid'");
$isadmin2 = mysql_fetch_array($isadmin);
$isadmin3 = $isadmin2['userlevel'];
if ($isadmin3 == "9"){
$_SESSION['admin'] = true;
return true;
}
}
else
{
return FALSE;
}
}
Ну, для начала, '$ result' является [ресурс вернулся из' mysql_query() '] (HTTP: // PHP. net/manual/en/function.mysql-query.php), поэтому ваше включение его в 'SELECT userlevel ...' на самом деле не ищет 'userid', как вы думаете. Вероятно, он ищет идентификатор ресурса # XX или что-то в этом роде. –
Вместо использования простого значения 'md5()' для пароля вы можете посмотреть в ['crypt()'] (http://php.net/manual/en/function.crypt.php), используя 'CRYPT_BLOWFISH 'hash type with salt value, что значительно упрощает сохранение паролей. –