<?php
include "scripts/connection.php";
function quote_smart($value)
{
if (get_magic_quotes_gpc()) { $value = stripslashes($value);}
if (!is_numeric($value)) {$value = "'" . mysql_real_escape_string($value) . "'"; }
return $value;
}
session_start();
$query = sprintf("SELECT id_user FROM accounts WHERE login=%s AND pass=%s",
quote_smart($_POST['name']),
quote_smart($_POST['pass']));
$result=mysql_query($query);
if(mysql_num_rows($result) > 0)
{
$data = mysql_fetch_assoc($result);
$_SESSION['name'] = $data['id_user'];
header('Location: cabinetinfo.php');
} else
{
echo "Извините! Такой пользователь не зарегистрирован, либо логин или пароль введены неверно!";
// exit();
}
?>
Задача:
При правильном вводе логина и пароля,должна загружаться страничка "cabinetinfo.php" где определенные поля заполняются остальными данными пользователя с БД.
При данном варианте кода,при верной авторизации,в текущую страницу "cabinet.php" загружается "cabinetinfo.php".Тоесть в одном окне 2 странички(((
ЗЫ Прошу спецов обратить внимание на код и сообщить если в нем присутствуют серьезные огрехи со стороны безопасности.
Заранее благодарен.С уважением,Дмитрий.
Спустя 38 минут, 3 секунды (8.05.2011 - 18:06) kovaldm написал(а):
Кавычки лучше отключить, а затем их самому экранировать.
Пароль храни в захешированном виде.
Числовые значения обрабатывай с помощью (int).
Переход как не работает - ошибки есть какие-то?
Страничка должна загружаться, или должна происходить переадресация?
Пароль храни в захешированном виде.
Числовые значения обрабатывай с помощью (int).
Переход как не работает - ошибки есть какие-то?
Страничка должна загружаться, или должна происходить переадресация?
Спустя 5 минут, 23 секунды (8.05.2011 - 18:11) Floyd написал(а):
Цитата |
Переход как не работает - ошибки есть какие-то? |
Страница грузится в текущую.Тоесть,в данном случае в див с формой загружается страница "cabinetinfo.php".
Спустя 2 минуты, 14 секунд (8.05.2011 - 18:13) Floyd написал(а):
Цитата |
Страничка должна загружаться, или должна происходить переадресация? |
Переадресация
Спустя 1 минута, 44 секунды (8.05.2011 - 18:15) kovaldm написал(а):
Тогда так наверное
header('location:www.host.ru/cabinetinfo.php');
Спустя 5 минут, 58 секунд (8.05.2011 - 18:21) Floyd написал(а):
Цитата (kovaldm @ 8.05.2011 - 15:15) |
Тогда так наверноеheader('location:www.host.ru/cabinetinfo.php'); |
Если так,то выдает ошибку "Fatal error: Cannot redeclare quote_smart() (previously declared in"
Спустя 4 минуты, 36 секунд (8.05.2011 - 18:26) inpost написал(а):
Floyd
Нельзя функцию так назвать, давай ей другое имя. Тебе говорят, что она была создана ранее с таким же именем.
Нельзя функцию так назвать, давай ей другое имя. Тебе говорят, что она была создана ранее с таким же именем.
Спустя 1 минута, 7 секунд (8.05.2011 - 18:27) kovaldm написал(а):
Цитата |
Если так,то выдает ошибку "Fatal error: Cannot redeclare quote_smart() (previously declared in" |
Это явно к header() не относится.
Спустя 7 минут, 27 секунд (8.05.2011 - 18:34) Floyd написал(а):
Цитата (inpost @ 8.05.2011 - 15:26) |
Floyd Нельзя функцию так назвать, давай ей другое имя. Тебе говорят, что она была создана ранее с таким же именем. |
Спасибо,ошибку исправил,но переход не работает.После введенных данных просто ничего не происходит.
Спустя 1 минута, 39 секунд (8.05.2011 - 18:36) kovaldm написал(а):
Пропиши первой строкой скрипта вот это.
Ошибки есть?
error_reporting(E_ALL);
Ошибки есть?
Спустя 13 минут, 11 секунд (8.05.2011 - 18:49) Floyd написал(а):
Цитата (kovaldm @ 8.05.2011 - 15:36) |
Пропиши первой строкой скрипта вот это.error_reporting(E_ALL); Ошибки есть? |
Три ошибки:
1)" Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent b"
2)"Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent"
3)"Warning: Cannot modify header information - headers already sent by"
Спустя 1 минута, 8 секунд (8.05.2011 - 18:50) kovaldm написал(а):
О! Где-то ранее есть вывод в поток. Или BOM мешает.
И не должно быть никаких пустых строк или пробелов перед <?php. Так же в подключаемых файлах не должно быть вывода или пустых строк "вне кода".
И не должно быть никаких пустых строк или пробелов перед <?php. Так же в подключаемых файлах не должно быть вывода или пустых строк "вне кода".
Спустя 11 минут, 30 секунд (8.05.2011 - 19:02) Floyd написал(а):
Цитата (kovaldm @ 8.05.2011 - 15:50) |
О! Где-то ранее есть вывод в поток. Или BOM мешает. И не должно быть никаких пустых строк или пробелов перед <?php. Так же в подключаемых файлах не должно быть вывода или пустых строк "вне кода". |
Пустых строк и пробелов нет.
Спустя 1 минута, 45 секунд (8.05.2011 - 19:04) kovaldm написал(а):
Кодировка какая?
Спустя 9 минут, 34 секунды (8.05.2011 - 19:13) Floyd написал(а):
Цитата (kovaldm @ 8.05.2011 - 16:04) |
Кодировка какая? |
utf-8
Спустя 13 минут, 54 секунды (8.05.2011 - 19:27) kovaldm написал(а):
С BOM или без? Если с ним, то отключай.
Спустя 2 минуты, 54 секунды (8.05.2011 - 19:30) Floyd написал(а):
Цитата (kovaldm @ 8.05.2011 - 16:27) |
С BOM или без? Если с ним, то отключай. |
Прошу прощения за глупый вопрос,но что есть ВОМ?
Спустя 4 минуты, 39 секунд (8.05.2011 - 19:35) kovaldm написал(а):
Цитата |
Прошу прощения за глупый вопрос,но что есть ВОМ? |
Почитай про юникод.
Спустя 8 минут, 17 секунд (8.05.2011 - 19:43) Игорь_Vasinsky написал(а):
Сессия и заголовок необходимо делать ло любого вывода, т.е. первыми строками до любого echo, print, html.
При этом ошибка, нотис проскочить успеет, т.к. сессия и хеадер -не дружат.
т.е. если первой строкой стартанёшь сессию - хеадер не средиректет, т.к. не заголовок не пошлётся.
если стартанёшь хеадер, то сессия не успеет стартануть, да даже еслиб успевала - то всё равно не стартанула бы, т.к. первой строкой стартанул редирект и у них будет конфуз.
как выход - использование буфер, или реирект на JS , а так как JS может быть отключён, то можно нарисовать ссылку для перехода
При этом ошибка, нотис проскочить успеет, т.к. сессия и хеадер -не дружат.
т.е. если первой строкой стартанёшь сессию - хеадер не средиректет, т.к. не заголовок не пошлётся.
если стартанёшь хеадер, то сессия не успеет стартануть, да даже еслиб успевала - то всё равно не стартанула бы, т.к. первой строкой стартанул редирект и у них будет конфуз.
как выход - использование буфер, или реирект на JS , а так как JS может быть отключён, то можно нарисовать ссылку для перехода
Спустя 13 минут, 1 секунда (8.05.2011 - 19:56) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 16:43) |
Сессия и заголовок необходимо делать ло любого вывода, т.е. первыми строками до любого echo, print, html. При этом ошибка, нотис проскочить успеет, т.к. сессия и хеадер -не дружат. т.е. если первой строкой стартанёшь сессию - хеадер не средиректет, т.к. не заголовок не пошлётся. если стартанёшь хеадер, то сессия не успеет стартануть, да даже еслиб успевала - то всё равно не стартанула бы, т.к. первой строкой стартанул редирект и у них будет конфуз. как выход - использование буфер, или реирект на JS , а так как JS может быть отключён, то можно нарисовать ссылку для перехода |
Ссылка не устраивает,нужно авто редирект делать.
Как вообще такая задача правильно реализовывается???Может я пошол не тем путем?
Вот собственно ТЗ:
На главной(index.php) странице есть кнопка "Личный кабинет".Когда человек на нее нажимает
загружается страничка(cabinet.php) c полями ввода логина и пароля.
И вот собственно последнее над чем ломаю голову.Если авторизация прошла успешно,загружается страничка(cabinetinfo.php) с данными пользователя,которые скрипт тянет с БД.
Спустя 10 минут, 10 секунд (8.05.2011 - 20:06) Игорь_Vasinsky написал(а):
Цитата |
Если авторизация прошла успешно,загружается страничка(cabinetinfo.php) с данными пользователя,которые скрипт тянет с БД |
зачем каждый раз показывать профиль, что он не забал кто он? лучше просто делать вывод того что юзеру нужно, и что можно только авторизированному юзеру.
Спустя 4 минуты, 10 секунд (8.05.2011 - 20:10) kovaldm написал(а):
Не, там что-то должно идти первым, а что-то вторым.
Спустя 2 минуты, 6 секунд (8.05.2011 - 20:12) Игорь_Vasinsky написал(а):
если хеадер с редиректом - то сессия не стартанёт, только если хеадер с кодировкой - то проканает
Спустя 15 минут (8.05.2011 - 20:27) Floyd написал(а):
Так как же мне решить эту проблему?
Спустя 1 минута, 50 секунд (8.05.2011 - 20:29) Игорь_Vasinsky написал(а):
почитай про использование буфера ob_flush() здесь есть тема - показано как решить проблему с зоголовками и сессия
Спустя 3 минуты, 10 секунд (8.05.2011 - 20:32) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 17:29) |
почитай про использование буфера ob_flush() здесь есть тема - показано как решить проблему с зоголовками и сессия |
Тоесть,получается что у меня не работает редирект из-за сессий ?
Спустя 24 минуты, 10 секунд (8.05.2011 - 20:56) Игорь_Vasinsky написал(а):
а у тебя нотисы не выскакивают?
Цитата |
$_SESSION['name'] = $data['id_user']; header('Location: cabinetinfo.php'); |
$_SESSION['name'] == $data['id_user'];
Спустя 12 минут, 26 секунд (8.05.2011 - 21:09) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 17:56) | ||
а у тебя нотисы не выскакивают?
$_SESSION['name'] == $data['id_user']; |
Нет.Даже если я отключаю вообще сессии.1 ошибка остается "Warning: Cannot modify header information - headers already sent by",мол данные отправлены уже.На пробелы и пропуски уже проверил и Byte Order Mark тоже выключен.
Ппц просто(((
Спустя 5 минут, 29 секунд (8.05.2011 - 21:14) Игорь_Vasinsky написал(а):
Цитата |
Warning: Cannot modify header information - headers already sent by |
Цитата |
Нет.Даже если я отключаю вообще сессии. |
заголовок должен отправлятся до любого вывода.
прикрепика файл к посту.
Спустя 7 минут, 9 секунд (8.05.2011 - 21:22) Floyd написал(а):
Файл кабинета
Спустя 2 минуты, 42 секунды (8.05.2011 - 21:24) Floyd написал(а):
скрипты
Спустя 52 секунды (8.05.2011 - 21:25) Floyd написал(а):
скрипты
Спустя 2 минуты, 28 секунд (8.05.2011 - 21:28) Игорь_Vasinsky написал(а):
ты прикрепи файл в котором конфуз, т.е. не работает редирект
Спустя 11 минут, 1 секунда (8.05.2011 - 21:39) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 18:28) |
ты прикрепи файл в котором конфуз, т.е. не работает редирект |
enter.php
Спустя 14 минут, 1 секунда (8.05.2011 - 21:53) Игорь_Vasinsky написал(а):
у тя enter.php (а может и остальные тоже) сохранены с BOM, нужно без
Спустя 6 минут, 17 секунд (8.05.2011 - 21:59) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 18:53) |
у тя enter.php (а может и остальные тоже) сохранены с BOM, нужно без |
Странно,я открывал нотпадом++ вроде нет ВОМ...
Спустя 3 минуты, 11 секунд (8.05.2011 - 22:02) Игорь_Vasinsky написал(а):
скачай на irbis-team.ru прогу для удления bom, или разберись со своим нотпадом
Спустя 3 минуты, 57 секунд (8.05.2011 - 22:06) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 19:02) |
скачай на irbis-team.ru прогу для удления bom, или разберись со своим нотпадом |
Точно,2 скрипта было с ВОМ.Теперь везде "кодировать без ВОМ" +пересохранил,но проблему не решило(.Ошибка так и осталась.
Спустя 2 часа, 57 минут, 37 секунд (9.05.2011 - 01:04) Игорь_Vasinsky написал(а):
connection.php тоже подправил? он у тебя в enter.php инклудится
Спустя 1 день, 22 часа, 5 минут, 15 секунд (10.05.2011 - 23:09) Floyd написал(а):
Цитата (Игорь_Vasinsky @ 8.05.2011 - 22:04) |
connection.php тоже подправил? он у тебя в enter.php инклудится |
Все подправил.Вот вылаживаю повторно.
Ребята помогите пожалуйста решить проблему.Все что мог перепробовал уже.
Спустя 2 минуты, 11 секунд (10.05.2011 - 23:11) Floyd написал(а):
второй файл. connection.php запихнул в enter.php
Спустя 5 минут (10.05.2011 - 23:16) Kumirska написал(а):
utf-8 с BOM может повлиять,попробуй через блокнот сохранить скрипт убрав галочку с бума,мне помогало от ошибки ...already sent
Спустя 10 минут, 43 секунды (10.05.2011 - 23:27) Floyd написал(а):
Цитата (Kumirska @ 10.05.2011 - 20:16) |
utf-8 с BOM может повлиять,попробуй через блокнот сохранить скрипт убрав галочку с бума,мне помогало от ошибки ...already sent |
Уже пробовал,спасибо.
Спустя 1 день, 19 часов, 55 минут, 6 секунд (12.05.2011 - 19:22) Floyd написал(а):
Все уже свел к минимуму.Вот одна страничка при загузке которой просто должен сработать редирект,но даже так отказывается работать.Одна и таже ошибка "Warning: Cannot modify header information - headers already sent by".
ОЧЕНЬ прошу,просмотрите пожалуйста файлик и скажите где ошибка.Сколько времени уже прошло,а я так и не могу разобраться.
ОЧЕНЬ прошу,просмотрите пожалуйста файлик и скажите где ошибка.Сколько времени уже прошло,а я так и не могу разобраться.
Спустя 2 часа, 58 минут, 16 секунд (12.05.2011 - 22:20) Floyd написал(а):
Цитата |
utf-8 с BOM может повлиять,попробуй через блокнот сохранить скрипт убрав галочку с бума,мне помогало от ошибки ...already sent |
Убирал таким способом + прогой antibom.Безрузультатно((((
Спустя 11 часов, 48 минут, 23 секунды (13.05.2011 - 10:09) Floyd написал(а):
ап