Консультация № 160966
20.02.2009, 10:59
0.00 руб.
0 9 1
Здравствуйте!

Проблема такая: код в приложении работает в опере и мозилле, не работает в ИЕ и сафари.

Т.е. невозможно получить доступ к админке в последних двух - снова выводится поле для ввода пароля.

В чём может быть дело?

Приложение:
<?php

header("Content-Type: text/html; charset=cp1251");

session_start();

$_SESSION['aaa']="xfgsrbhsbhsdfbnulohjk";

include $_SERVER['DOCUMENT_ROOT']."/../namepass.php";


// если сессия равна выходу - ничего (показать поля для ввода - после)
if ((isset($_SESSION['s_name']))&&($_SESSION['s_name']=='end')) {

// если пост равен выходу - обнулить сессию и пост и перезагрузить
} elseif ((isset($_POST['p_name']))&&($_POST['p_name']=='end')) {
$_SESSION['s_name']="";
$_SESSION['s_pass']="";
header('Location: admin.php');
}


// если есть правильная сессия - войти
// это сюда я не могу попасть в ИЕ и сафари
if ((isset($_SESSION['s_name']))&&($_SESSION['s_name']==$myname)&&(isset($_SESSION['s_pass']))&&($_SESSION['s_pass']==$mypass)) {

$page="";
include "admin.php"; // инклюд с основным содержимым
echo $page;


// иначе если есть правильный пост - переписать в сессию и перезагрузить страницу
} elseif ((isset($_POST['p_name']))&&(sha1($_POST['p_name'])==$myname)&&(isset($_POST['p_pass']))&&(sha1($_POST['p_pass'])==$mypass)) {
$_SESSION['s_name']=sha1($_POST['p_name']);
$_SESSION['s_pass']=sha1($_POST['p_pass']);
header('Location: admin.php');


// иначе предлагать ввести login&password
} else {
echo "<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<body>
<div align='center'>
<form method='post' action=''><table>
<tr><td>Логин:</td><td><input type='text' name='p_name' value=''></td></tr>
<tr><td>Пароль:</td><td><input type='password' name='p_pass' value=''></td></tr>
<tr><td colspan='2'><div align='center'><input type='submit' value='Войти'></div></td>
</table></form>
</div>
</body></html>";
}

$_SESSION['aaa']="";

?>

Обсуждение

Неизвестный
20.02.2009, 11:27
общий
Что-то не могу понять, как редактировать вопрос.

Закачал на сервер - работает.
А в денвере - нет, как и описал.

Странно.
Неизвестный
20.02.2009, 12:36
общий
это ответ
Здравствуйте, Прим Палвер!
а откуда берутся $myname и $mypass в этой строке? уж не из формы ли? проинициализируйте их явно, похоже, что в денвере отключена авторегистрация переменных
=$myname)&&(isset($_SESSION['s_pass']))&&($_SESSION['s_pass']==$mypass))
Неизвестный
20.02.2009, 16:32
общий
Попробуйте вывести содержимое массива $_SESSION[] на экран в различных браузерах и сравните.
давно
Советник
419
1011
24.02.2009, 03:00
общий
попробуйте поменять местами строчки

вот так:

session_start();
header("Content-Type: text/html; charset=cp1251");

Неизвестный
24.02.2009, 08:38
общий
Евгений Иванов, спасибо, учту.
давно
Советник
419
1011
24.02.2009, 12:45
общий
нужно попробовать и сказать, всё ли вышло (-:
Неизвестный
24.02.2009, 12:48
общий
[offtop]
нужно попробовать и сказать, всё ли вышло (-:

спасибо, учту [/offtop]
Неизвестный
24.02.2009, 23:13
общий
Да не прикалывайтесь. Сайт работает на сервере.
А попробовал снова в Денвере сегодня, с впереди идущей сессией, как советовали, снова не получается.
Буду смотреть, что с сессиями в разных браузерах.
Неизвестный
24.02.2009, 23:39
общий
Куки включены?
Форма ответа