Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизует,но выдаёт много ошибок 
V
    Опции темы
Димос
Дата 27.11.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2009

Репутация: нет
Всего: нет



Скрипт авторизует, но не возвращает обратно и при этом выдаёт ошибки:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 
Notice: Undefined variable: link
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource
Warning: Cannot modify header information - headers already sent by

Вот скрипт:
Код
<?php
error_reporting(E_ALL);
if(isset($_POST['auth_submit'])) {
$db = mysql_connect("localhost", "wmggfg_666","666");
mysql_select_db("wmggfg_666");
$login = $_POST['login'];
$pass = $_POST['pass']; 
$query = "SELECT id, login, pass
FROM admin
WHERE login ='{$login}' AND pass='{$pass}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1)
echo "Авторизованно." ;
else
echo "Доступ закрыт!" ;
}
?>
<?php
session_start();
      $_SESSION['user'] = $login;
      mysql_close($link);
      if (isset($_SERVER['HTTP_REFERER'])) {
         header ("location: ".$_SERVER['HTTP_REFERER']);
      }else {
         header ("location: index.php");
      }
?>
<html>
<head>
<title>Авторизация</title>
</head>
</html>

PM MAIL   Вверх
skyboy
Дата 27.11.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



итак, ошибки:
1.
Код

$db = mysql_connect("localhost", "wmggfg_666","666");
...
mysql_close($link);

идентификатор соединения сохраняем в $db, но закрыть пытаемся по содержимому переменной $link. 
2. если используешь header, то до него не должно быть никакого вывода.
3. если используешь header('Location:..., то после него не должно быть больше вывода. Вообще. Для верности стоит поставить exit() или die().
4. session_start() неявно(для программиста на PHP) отправляет заголовки, потому то же ограничение - до session_start() никакого вывода. И да, сообщения об ошибках, выводимые РНР - это тоже вывод. Потому сначала надо избавиться от ошибок, приводящих к выводу сообщений - и "headers already sent" тоже пропадет, возможно.
PM MAIL   Вверх
Димос
Дата 28.11.2009, 00:46 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2009

Репутация: нет
Всего: нет



так надо?

Код
<?php
error_reporting(E_ALL);
if(isset($_POST['auth_submit'])) {
$db = mysql_connect("localhost", "wmggfg_666","666");
mysql_select_db("wmggfg_666");
$login = $_POST['login'];
$pass = $_POST['pass']; 
$query = "SELECT id, login, pass
FROM admin
WHERE login ='{$login}' AND pass='{$pass}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) == 1)
echo "Авторизованно." ;
else
echo "Отказанно в доступе!" ;
}
?>
<?php
session_start();
      $_SESSION['user'] = $login;
      mysql_close($db, $link);
      if (isset($_SERVER['HTTP_REFERER'])) {
         header ("location: ".$_SERVER['HTTP_REFERER']);
       die("location: index.php");
 exit()
?>
<html>
<head>
<title>Авторизация</title>
</head>
</html>


PM MAIL   Вверх
SneG0K
Дата 28.11.2009, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



Цитата(Димос @  27.11.2009,  23:46 Найти цитируемый пост)
if (mysql_num_rows($sql) == 1)
echo "Авторизованно." ;
else
echo "Отказанно в доступе!" ;

Это полюбому уже вывод до head и session_start()
В идеале решение таких проблем - это использование шаблонизаторов.
Код

mysql_close($db, $link);

Во вторых
Код

mysql_close($db);

PM WWW Skype   Вверх
Димос
Дата 28.11.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.11.2009

Репутация: нет
Всего: нет



А ну да ,всё заработалло. Только почему у меня при вводе в форму авторизации любых букв просто от
балды он авторизует, причём в базе только одна запись, авторизует всё что напишешь??
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.