[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: авторизация
skater4
всем привет. подскажите плиз кто знает, в чем проблема с авторизацией. при вводе правильного логина и пароля автоматом должно перебрасывать на main.php(если вошел админ то admin.php) и показывать соответствующее меню, но довольно часто бывает так, что при верном вводе после переадрессации показывает "вы не авторизованы". бывает примерно в 70% случаев. если введен не правильный логин\пароль то выводит "неправильный логин\пароль" так что проблема точно не в вводе косячных данных. ниже код login.php

<?php
session_set_cookie_params(180);
session_start();
include('sql_con.php');
if (isset($_POST['login'])) {
$passHash = md5($_POST['pass']);
$login = $_POST['login'];
// Проверка логина на плохие смиволы
if (!preg_match("/^\w{3,}$/", $login)) {
die('Неправильный логин!');
}
connect();
$res = mysql_query("SELECT status FROM users WHERE login='$login' and pass='$passHash'");
// Есть ли пользователь с таким логином?
if (mysql_num_rows($res) < 1) {
die('Неправильный логин/пароль <a href=index.php>На главную</a>');
}
// Стартуем сессию и записываем логин в суперглобальный массив $_SESSION
while($row = mysql_fetch_array($res))
{
if ($row['status']=='admin')
{
$_SESSION['admin'] = $login;
header("Location:admin.php");
echo 'Нажмите на <a href=admin.php>ссылку</a>, если ваш браузер не поддерживает автоматической переадрессации';
die();
}
}

$_SESSION['user'] = $login;
// Если определена страница с которой мы пришли,
// на нее и переадресуем, либо на главну

header("Location:main.php");
echo 'Нажмите на <a href=main.php>ссылку</a>, если ваш браузер не поддерживает автоматической переадрессации';
}
?>

а вот проверка вошел ли пользователь

if (!isset($_SESSION['user']))
{
echo '<a href=index.php>На главную<br></a>';
exit('Вы не авторизованы');
}

проверка на админа

if (!isset($_SESSION['admin']))
{
echo '<a href=index.php>На главную<br></a>';
exit('Вы не авторизованы');
}

сессии открыть не забыл в самом начале, работать работает, но не всегда



Спустя 6 минут, 53 секунды (16.02.2012 - 12:40) inpost написал(а):
session_set_cookie_params(180); - это можно убрать.

Так ты выведи на той странице, где проверка стоит - эти сессионные переменные(!).
В том файле тоже стартует сессия? Не верю.
Если другого кода нет, то всё работать должно!

Спустя 3 часа, 38 минут, 55 секунд (16.02.2012 - 16:19) skater4 написал(а):
session_set_cookie_params(180); это нужно, чтобы сессия разрывалась через 3 минуты неактивности.

<?php
session_set_cookie_params(180);
session_start();
include('menu.php');
include('sql_con.php');

вот начало main.php.
на одном ноутбуке заходило только с фаерфокса, с остальных при правильном вводе показывало, что не авторизован, хотя куки включены, пробовал чистить историю итп - не помогало. с других компов все работало нормально со всех браузеров. на моем ноуте робит когда как. иногда зайдет иногда нет

Спустя 17 часов, 29 минут, 27 секунд (17.02.2012 - 09:49) skater4 написал(а):
убрал session_set_cookie_params(180); и все заработало..)почему он обрубает сессию сразу, а не через 3 минуты?в некоторых браузерах..и можно ли как то без него выставить время жизни сессии, если на хостинге нет доступа к php.ini?

Спустя 4 часа, 16 минут, 38 секунд (17.02.2012 - 14:05) inpost написал(а):
Если на хостинге нет доступа, то пиши админам, чтобы они выставили через настройки свои.

Спустя 2 минуты, 4 секунды (17.02.2012 - 14:08) ADiel написал(а):
через htaccess обычно можно. Я так memory_limit увеличивал на дешевом хостинге и получал дорогой =)

Спустя 19 дней, 1 час, 11 минут, 9 секунд (7.03.2012 - 15:19) Timax написал(а):
<?php
include ("db.php");
?>
<?php
if ($_SERVER["REQUEST_METHOD"]=="POST"){
$login = trim($_POST['login']);
$pass = ($_POST['pass']);
$pass2 = ($_POST['pass2']);


if($login == ""){
die("<b>Login err...!</b><br />\n");
}elseif (!preg_match("/^\w{3,}$/", $login)) {
die ("<b>Login err...!!!</b><br />\n");
}if ($pass =="" || $pass2 =="") {
die ("<b>Password err...!</b><br />\n");
}elseif($pass !== $pass2){
die ("<b>Password err...!</b><br />\n");
}elseif(!preg_match("/^\w{3,}$/", $pass)) {
die ("<b>Password err...!!!</b><br />\n");}

$mdPassword = md5(md5($pass));

//connecting DB

$result = mysql_query("SELECT * FROM users WHERE login='$login'", $link).mysql_error();
$num_rows = mysql_num_rows($result);

if ($num_rows !=1) die ("This Login is Registred!..<br />\n").mysql_error();
else{
mysql_query("INSERT INTO users (login, pass) VALUES ('$login','$mdPassword')",$link);}

echo "User added..<br />\n";
print "<script language='Javascript'>function reload() {location = \"form.php\"}; setTimeout('reload()', 2000);</script>";
mysql_close($link);
}
?>

======================================

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\test.ru\www\login.php on line 27


ПОМОГИТЕЕЕ sad.gif

Спустя 4 часа, 28 минут (7.03.2012 - 19:47) ADiel написал(а):
Без оформления читать не буду
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.