Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать пересылку.  (Прочитано 13293 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andrweb
Гость
« : 16-09-2009 10:37 » 

Суть такая. Я примерно 2 недели назад начал изучать PHP. Начал делать админку. Язык хороший, но с некоторыми функциями я долго разбираюсь. Мне необходимо сделать пересылку с одной страницы на другую, причем, если не выполняется условие.:

<?
if (($_POST['name']=='admin')
and($_POST['password']=='12345'))
{
echo "Добро пожаловать в административную часть сайта!";
}
else
{
echo "Неверные данные!!!";
___здесь нужна пересылка___;
}
?>

Пробовал через Header(), но ничего не получается.
Помогите, чем сможете.
« Последнее редактирование: 16-09-2009 16:25 от Sel » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-09-2009 10:43 » 

почитай про header

подсказка.. до вызова header ты ничего не должен передавать с сайта, впрочем смотри логи и ошибки, там все должно быть
кроме того, один раз столкнулся

Код:
<?php
...
?>


Код:
<?php
...
?>

Найди одно отличие

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
andrweb
Гость
« Ответ #2 : 16-09-2009 10:50 » 

Код:
<?
if (($_POST['name']=='admin')
and($_POST['password']=='12345'))
{
echo "Добро пожаловать в административную часть сайта!";
}
else
{
echo "Неверные данные!!!";
header("Location: http://www.moysait.ru/admin/index.php");
exit;
}
?>

Ошибку пишет такую

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\moysait.ru\www\admin\case.php:8) in Z:\home\moysait.ru\www\admin\case.php on line 17
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 16-09-2009 11:24 » 

andrweb, do you speak english?

А по-русски читаешь?


Cannot modify header information - headers already sent by
до вызова header ты ничего не должен передавать с сайта,

Сопоставь

и расскажи что ты делаешь в этом куске кода
Код:
else
{
echo "Неверные данные!!!";
header("Location: http://www.moysait.ru/admin/index.php");
exit;
}


Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
andrweb
Гость
« Ответ #4 : 16-09-2009 11:36 » 

У меня нет литературы, которая бы нормально объяснила саму функцию header() и как она работает. Та литература, что у меня - плохая.
Я прекрасно понимаю, что пишет ошибка. Но каким образом header был уже отправлен. Наверняка, должен быть какой-то другой способ сделать пересылку. В unix проще, там всё просто read_link() и всё.
« Последнее редактирование: 16-09-2009 16:26 от Sel » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 16-09-2009 11:49 » 

andrweb, в двух словах

Когда ты пишешь header() и вызываешь, то тем самым ты посылаешь http заголовок браузеру,
впрочем вот http://www.cs.tut.fi/~jkorpela/http.html
там и ссылка на http протокол

еще раз
если хочешь послать заголовок, то до передачи заголовка ничего не предавай

и заметь
что метатеги <head><meta .... \> </head> - это не стопроцентный аналог http header.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 16-09-2009 11:50 » 

http://ua.php.net/manual/en/index.php - а тут мануал на всех языках
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
andrweb
Гость
« Ответ #7 : 16-09-2009 13:03 » 

Есть другой способ сделать пересылку?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 16-09-2009 13:28 » 

andrweb, рассказывай что ты хочешь сделать.

Я понял следующее.
В случае неправильной пары логин/пароль ты должен быть "перенаправлен" на страницу с  сообщением об ошибке


но для этого тебе нужно показать и код формы ввода логин/пароль

т.е. <form action="http......"  method="post">
соответственно, написать скрипт обработки ввода, впрочем ты его показал

если ты перенаправляешь на другую страницу то
Код: (PHP)
else
{
header("Location: http://www.moysait.ru/admin/error.php");
exit;
}
error.php
Код: (PHP)
echo "Неверные данные!!!";

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
andrweb
Гость
« Ответ #9 : 17-09-2009 07:11 » 

Cпасибо я теперь разобрался. Я сделал если не выполняется условие, то идет возврат на index.php.  Плохо ток одно, что надо передать сообщение в браузер типа "неправильный ввод имени и пароля". Теперь буду с этим мудиться.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 17-09-2009 07:40 » 

andrweb, что-то ты мудришь, вернее перемудриваешь

Код:
<?php
if (isset($_POST[&#39;name&#39;]) {
   // авторизация возможно
   // проверяем пару логин пароль
       // в случае совпадения  делаем какие-то действия и принимаем решения о  дальнейших действиях; exit
       // в случае ошибки  подготовить данные вывода ошибки 

// вывод страницы для авторизации
//с выводом ошибки

?>


Приблизительно так....

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
andrweb
Гость
« Ответ #11 : 17-09-2009 08:28 » 

Я сделал всё проще...
Код:
<?
if (($_POST['name']=='admin')
and($_POST['password']=='12345'))
{
if($_POST['radio']=='0')
{
header("Location:news.php");
}
if($_POST['radio']=='1')
{
header("Location:gallery.php");
}
}
else
{
header("Location:index.php");
}
?>
А вообще PHP  сильный язык. Думаю скоро уже и сайт на нём напишу. Осталось отладить БД. Спасиб тебе, если что ещё обращусь... 
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 17-09-2009 10:16 » 

andrweb, описанный тобой подход, как бы это сказать... не совсем корректен.
идея в пересылке на другой url имеет право жить, но не в данном случае, и лично стараюсь такого избегать.

Клиент послал запрос.
Сервер обработал и получает header(location).
Браузер повторно отсылает запрос на location.
И получает уже ответ от нужной страницы.
Увеличивается нагрузка на сервер., увеличивается траф у клиента.

Не проще ли?
Обработать запрос.
Подготовить нужную страницу (используя, например include() или require(), require_once(), include_once() ).
выдать подготовленную страницу.
« Последнее редактирование: 17-09-2009 10:18 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines