|
|
|
| Вот делал авторизацию для новостной ленты и почемуто она работать не хочет :(
Короче делал я так enter.php (код ниже) выдаёт пользователю форму для авторизации, а handler.php её принимает, вот только на 4 строчке второго скрипта всегда ошибка, а если проверку на отправку данных с другого хоста убрать, то всегда пароль не верный.... Хотя уже точно и в базе и вводимый верный =) Помогите, а?
//////////////////////////////////////////////////////////// ////////////////////////////////////////
// enter.php
/ //////////////////////////////////////////////////////////// ////////////////////////////////////////
<?php
session_start();
?>
<html>
<head>
<title> Вход в панель администратора </title>
</head>
<body>
<CENTER>
<H2>.:: Заполните данные поля ::. </H2>
<br>
<FORM METHOD=POST ACTION="admin/handler.php">
Имя: <INPUT TYPE="text" NAME=name>
<br>
Пароль: <INPUT TYPE="PASSWORD" NAME=pass>
<br>
<INPUT TYPE="hidden" NAME="session_id" VALUE=<?php echo session_id(); ?>>
<INPUT TYPE="submit" VALUE=Войти>
</FORM>
</CENTER>
</body>
</html>
|
///////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////
// hadnler.php
///////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////
<?php
include "data_all.php";
$conn = mysql_connection();
if ($_POST('session_id') != session_id()) {
exit("Попытка передачи данны с другого хоста. Скрипт остановлен...");
}
$query= "SELECT pass=MD5('$_POST[pass]') FROM users WHERE name='$_POST[name]'";
$nme = mysql_query($query);
if (!$nme) {
exit ("ошибка выполнения запроса");
}
If (mysql_num_rows($nme)>0){
if(session_start()) {
$_SESSION['user'] = $_POST['name'];
$_SESSION['pass'] = $_POST['pass'];
header("location: index.php");
} else {
exit ("неверный пароль");
}
} else {
exit ("неверный логин");
}
?>
|
Вот кажиться и всё.... Жду ответа | |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 12:30)
| | Так 1 ошибка отпала.... =)
Осталось вторая, вот что мне пишет денвер:
Notice: Array to string conversion in z:\home\news\www\admin\handler.php on line 4
[Денвер: показать возможную причину ошибки]
Fatal error: Call to undefined function: array() in z:\home\news\www\admin\handler.php on line 4
|
| |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 13:22)
| | Предлагаю заменить
<?if ($_POST('session_id') != session_id()) { ?>
| на
<?if ($_POST['session_id'] != session_id()) { ?>
|
Есть шанс, что поможет. | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.12.2005 в 13:26)
| | сча попробую | |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 14:10)
| | Us теперь постоянно вылетает, что Попытка передачи данны с другого хоста. Скрипт остановлен... | |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 14:13)
| | Если я не ошибаюсь, то на handler.php - session_start(); тоже нужен. В самом начале. | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.12.2005 в 15:09)
| | В таком случае выкидывает
Notice: A session had already been started - ignoring session_start() in z:\home\news\www\admin\handler.php on line 14
[Денвер: показать возможную причину ошибки]
Warning: Cannot modify header information - headers already sent by (output started at z:\home\news\www\admin\handler.php:14) in z:\home\news\www\admin\handler.php on line 17
|
| |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 15:22)
| | Но эту строку... с сессией - надо выше любого вывода в браузер, даже пробелов. | |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 15:22)
| | notice является своеобразным советом и выводится, когда выставлена максимальная чувствительность PHP к ошибкам - её следует понизить, как это сделано на всех хостингах, иначе они не дадут работать. Для этого, следует выставить соответствующее значение для директивы error_reporting http://www.softtime.ru/info/articlephp.php?id_article=23, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE
|
Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
?>
|
В качестве параметра, которой передать соответствующий уровень обработки ошибок.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4985 | |
|
|
|
|
|
|
|
для: cheops
(19.12.2005 в 15:50)
| | А еще можно собачку поставить перед session_start ... Только, задача введь не в подавлении ошибки, а в работе с сессией, для авторизации... Если я правильно понял. | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.12.2005 в 15:59)
| | Notice я просто так скапировал, меня больше интересует вторая ошибка, и вопрос почему меня постоянно определяют как с друго хоста? | |
|
|
|
|
|
|
|
для: krollik
(19.12.2005 в 16:01)
| | А по какому признаку вы это видите? Ошибка какого-то яваскрипта? | |
|
|
|
|
|
|
|
для: cheops
(19.12.2005 в 15:50)
| | Кто вам сказал что нотис это не ошибка?) Это тоже ошибка и ошибка которую надо обязательно исправить, игнорируя их можно получить неправильную работу системы или несколько уязвимостей. | |
|
|
|
|
|
|
|
для: isset
(19.12.2005 в 16:26)
| | 1. Вопрос снят... Проблема уже отпала...
2. Isset - далеко не всегда это ошибка приводит к неправильной работе сервера. | |
|
|
|