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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Header и exit. Проблемы, ошибки. Проблема в редиректе страницы. 
:(
    Опции темы
frops
  Дата 12.12.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Music / Web / Design



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

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



Проблема такова. Есть код: 

Код

if ([УСЛОВИЕ]) {
     [ВЫПОЛНЕНИЕ_НЕКОГО_СЦЕНАРИЯ]
      
      header("Location: index.php?m=".urlencode("Вход выполнен"));   //Тут редирект
      exit;  //Выход
    }


Со страницы он не выходит, но и дальше ее уже не выполняет. В чем проблема? В другом проекте работала.

P.S. Без exit; переходит на туже страницу, на которой находится. Но это уже не нормально, что не так?

Это сообщение отредактировал(а) frops - 12.12.2011, 13:06
PM MAIL WWW ICQ   Вверх
ayax2005
Дата 12.12.2011, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


echo $smile
**


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

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



exit() - функция.


--------------------
все вопросы - из-за неверной формулировки задачи
PM MAIL ICQ   Вверх
frops
Дата 12.12.2011, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Music / Web / Design



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

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



Цитата(ayax2005 @ 12.12.2011,  13:07)
exit() - функция.

Спасибо за подсказку, но суть дела не меняется. Все так же. Кстати, раньше пользовался exit; и все работало)
PM MAIL WWW ICQ   Вверх
$дмитрий
Дата 12.12.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Покажи целиком код
PM MAIL   Вверх
frops
Дата 12.12.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Music / Web / Design



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

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



Код

<?
if ($act=="" || $act=="login") {  
  if ($_POST["login"]&&$_POST["passw"]) { //Отправленная форма
    $login  = htmlspecialchars($_POST["login"]);
    $passw  = htmlspecialchars($_POST["passw"]);
       
    if ($DB_VAR::getVarDB("SELECT COUNT(*) FROM alcont_users WHERE ((LOWER(login) LIKE LOWER('".$login."')) OR (LOWER(email) LIKE LOWER('".$login."'))) AND passw LIKE md5('".$passw."') LIMIT 1")>0) {
      list($id_user,$login,$email,$name,$rights) = $DB::getRowDB("SELECT id_user, LOWER(login), LOWER(email), name, rights FROM ".DB_PREF."users WHERE ((LOWER(login) LIKE LOWER('".$login."')) OR (LOWER(email) LIKE LOWER('".$login."')))  AND passw LIKE md5('".$passw."')");
      $_SESSION["id_user"]      = $id_user;        
      $_SESSION["name_user"]    = $name;        
      $_SESSION["login_user"]   = $login;        
      $_SESSION["email_user"]   = $email;        
      $_SESSION["rights_user"]  = $rights;
      
      header("Location: index.php?m=".urlencode("Вход выполнен"));
      exit;
    } else {
      header("Location: index.php?em=".urlencode("Неверный логин/email или пароль"));
      exit;
    } 
  } else {
    $auth_act_tpl = new template(TPL."auth/authlogin.tpl",R1, 1);
    $cont = $auth_act_tpl->show_template();
  }
  
} elseif ($act=="exit") {
  unset($_SESSION["idUser_lp"]);
  unset($_SESSION["nameUser_lp"]);        
  unset($_SESSION["loginUser_lp"]);        
  unset($_SESSION["emailUser_lp"]);        
  unset($_SESSION["rightsUser_lp"]);
  unset($_SESSION["rights_lp"]);
  
  header("Location: /?m=".urlencode("Выход выполнен"));
  exit;
} else {
  //Раздела не существует
  header("Location: /");
  exit;
}

?>

PM MAIL WWW ICQ   Вверх
bars80080
Дата 12.12.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



ну, какова проблема? начинаем заниматься отладкой. раставляем везде чекпоинты, вроде echo 1; echo 2; и т.д. и смотрим, где происходит сбой.

да, вопрос №0: показ ошибок включён?
PM MAIL WWW   Вверх
$дмитрий
Дата 12.12.2011, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Смотри
Здесь, в случаи успешной авторизации, перекидываем пользователя на текущию страницу
Код

header("Location: index.php?m=".urlencode("Вход выполнен"));

Однако, благодаря условию $act=="" пользователю все равно будет отображаться форма авторизации. Короче путаница с условиями

С сессиями тоже каша. При авторизации создается сессия с одними ключами, а при выходе прибиваешь совершенно другие ключи

И еще советую подумать над безопасностью скрипта, не исключена SQL-инъекция 
PM MAIL   Вверх
frops
Дата 12.12.2011, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Music / Web / Design



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

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



Цитата($дмитрий @ 12.12.2011,  13:53)
Смотри
Здесь, в случаи успешной авторизации, перекидываем пользователя на текущию страницу
Код

header("Location: index.php?m=".urlencode("Вход выполнен"));

Однако, благодаря условию $act=="" пользователю все равно будет отображаться форма авторизации. Короче путаница с условиями

С сессиями тоже каша. При авторизации создается сессия с одними ключами, а при выходе прибиваешь совершенно другие ключи

И еще советую подумать над безопасностью скрипта, не исключена SQL-инъекция

Это не index.php, это страница auth.php, подключаемая в скрипт в случае адреса: site.ru/auth

Сессия для примера, я их переименовывал. Пока роли не играют.

Он также не перекидывает на главную страницу. (((

Насчет всего, спасибо. Теперь, что-то можете еще предложить?

Добавлено через 2 минуты и 42 секунды
Цитата(bars80080 @ 12.12.2011,  13:35)
ну, какова проблема? начинаем заниматься отладкой. раставляем везде чекпоинты, вроде echo 1; echo 2; и т.д. и смотрим, где происходит сбой.

да, вопрос №0: показ ошибок включён?

Чек боксы ставил! Показывает echo перед header, после уже не показывает. То есть доходит до:

Код

 $_SESSION["rights_user"]  = $rights;
      
      echo "Сюда доходит";
      header("Location: index.php?m=".urlencode("Вход выполнен"));
      exit;
      echo "здесь уже нет";
    } else {




Это сообщение отредактировал(а) frops - 12.12.2011, 14:21
PM MAIL WWW ICQ   Вверх
$дмитрий
Дата 12.12.2011, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вместо
Код

header("Location: index.php?m=".urlencode("Вход выполнен"));

Временно пропиши
Цитата

header("Location: http://ya.ru");

Что бы наглядно было видно

Если при авторизации не перекинуло на http://ya.ru, но при этом выдало надпись "Сюда доходит", значит скрипт отработал с ошибкой "Cannot modify header information", в этом легко убедится включив вывод ошибок на экран
 
PM MAIL   Вверх
frops
Дата 12.12.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Music / Web / Design



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

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



Дима, огромное спасибо! Включил ошибки. Действительно Cannot modify... Дальше как-то Сам ))  smile 

Ответ всегда до безумства прост, если уже долго ищешь причину ошибки )))
PM MAIL WWW ICQ   Вверх
$дмитрий
Дата 12.12.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



И еще, конструкция exit означает "прекратить дальнейшее выполнения скрипта". Поэтому ставить после него какие-либо метки не имеет смысла
Код

exit;
      echo "здесь уже нет";


Добавлено через 1 минуту и 6 секунд
Без проблем, обращайся smile
PM MAIL   Вверх
Evghenusi
Дата 12.12.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



Код
exit('здесь уже нет');

PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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