powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Редирект в PHP
25 сообщений из 27, страница 1 из 2
Редирект в PHP
    #32693587
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем!

Блин как в этом PHP осуществить принудительный редирект из скрипта?
Это вообще возможно сделать нормально?

Есть функция header("Location: url");
Эта функция кривовата, она не работает когда уже что-то вывели в браузер.
Есть что-нибудь еще?
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693665
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Эта функция кривовата,
это твой скрипт кривоватый, не выводи ничего до тех пор пока могут быть выведены заголовки.
И разберись наконец с HTTP чтобы такую чушь не нести больше
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693688
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.> Эта функция кривовата,
это твой скрипт кривоватый, не выводи ничего до тех пор пока могут быть выведены заголовки.
И разберись наконец с HTTP чтобы такую чушь не нести больше

Это почему же он кривоват?
Да мне насрать на эти заголовки.
Мне нужен механизм прехода на другие url из php скрипта.

Вот скрипт

html
<?
$data=addslashes(date("d.m.y"));
$subject=addslashes($HTTP_POST_VARS["subject"]);
$sender=addslashes($HTTP_POST_VARS["sender"]);
$email=addslashes($HTTP_POST_VARS["email"]);
$text=addslashes($HTTP_POST_VARS["text"]);

тут не важно, что все работает

//Закрываем соединения////////
mysql_close($db);

if ($result) {echo "<p class=\"red\">Спасибо, ваше сообщение было добавлено в форум. Через несколько секунд вы будете возвращены в форум.</p>"; header("Location: /forum/questions/?page=".$page);}
?>
.....
html
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693729
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть разбираться с протоколом HTTP ты принципиально отказываешься ?
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693733
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе нужен редирект как на форумах типа phpBB/VBulletin ? (который они используют после отправки сообщения)
Если да, то такие редиректы делаются средствами HTML/JavaScript
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693743
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.тебе нужен редирект как на форумах типа phpBB/VBulletin ? (который они используют после отправки сообщения)
Если да, то такие редиректы делаются средствами HTML/JavaScript

Мне нужен редирект на моем форуме, который Я сам пишу сейчас
и понял, что php немного убоговат в этом моменте.

Единственное решение это http-equiv='refresh' <meta http-equiv='refresh' ....

Я на этом HTML/JavaScript не профессионально делать такие веши.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693760
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.То есть разбираться с протоколом HTTP ты принципиально отказываешься ?

Да чего там разбираться-то.
Просто ломает.
Если что-то отудаго надо, то беру и все, а нахер он мне еще нужен.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693768
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убогие твои знания в области веб-программирования.
Это не ограничения ПХП, это ограничения HTTP, стандарта, которому обязаны подчиняться все веб-клиенты (броузеры) и веб-серверы :
заголовки всегда должны идти до вывода содержимого, по стандарту

Решение через <meta http-equiv='refresh' - это и есть решение средствами HTML
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693770
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Да чего там разбираться-то.
ну хотя бы, чтобы впредь не задавать глупых вопросов
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693793
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.Убогие твои знания в области веб-программирования.
Это не ограничения ПХП, это ограничения HTTP, стандарта, которому обязаны подчиняться все веб-клиенты (броузеры) и веб-серверы :
заголовки всегда должны идти до вывода содержимого, по стандарту

Решение через <meta http-equiv='refresh' - это и есть решение средствами HTML

Ну, это все равно убогость php. ASP c этим справляется без проблем и не надо беспокоить таких гуру как вы в области web-программирования.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693801
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ПХП есть возможность сделать так, чтобы можно было слать заголовки после вывода, но пока новички не разбирутся со стандартом HTTP я им про нее не рассказываю
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693819
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно, а то не дай бог, новички станут такими же крутыми знатоками как вы в области маразма. Микрософт избавляет от этого.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693830
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малыш, незнакомый человек не сможет меня обидеть. Можешь даже не стараться
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693867
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.Малыш, незнакомый человек не сможет меня обидеть. Можешь даже не стараться

Ладно, не буду "папаша".
Но в следующий раз ты не наезжай на чужие скрипты и чужой труд.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693883
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если скрипт написан плохо, то наоборот, автор должен это знать, чтобы в дальнейшем писать правильно и не повторять старых ошибок.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693931
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я что-то не въехал, а с чего ты взял, что он плохо написан?
Был вопрос не по скрипту, а одной проблеме.
Причем тут скрипт, в чем должна быть правильность?
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693964
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
последнее мое мообщение было не о тебе лично, а вобщем о чужом, плохо сделаном труде.
По приведенному коду могу у меня есть замечания, но они тебе покажутся несущественными.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32693981
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно какие? могу даже "весь" скрипт положить.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];?>
<?include "$DOCUMENT_ROOT/connect.php"?>
<?
$send=$HTTP_POST_VARS["send"];
$parent_id=$HTTP_POST_VARS["parent_id"];
$type=$HTTP_POST_VARS["type"];
$page=$HTTP_POST_VARS["page"];

$data=addslashes(date("d.m.y"));
$subject=addslashes($HTTP_POST_VARS["subject"]);
$sender=addslashes($HTTP_POST_VARS["sender"]);
$email=addslashes($HTTP_POST_VARS["email"]);
$text=addslashes($HTTP_POST_VARS["text"]);

if ($send=="okey")
{
mysql_select_db(DBName);

if ($type=="answers")
{
$sql="select answers_count from forum_questions_base where id=".$parent_id;
$result=mysql_query($sql); if (!$result) {не важно}
$rs=mysql_fetch_array($result);
$answers_count=$rs["answers_count"];
$answers_count++;
$sql="update forum_questions_base set answers_count='".$answers_count."' where id=".$parent_id;
$result=mysql_query($sql); if (!$result) {не важно}

$sql="insert into forum_answers_base (parent_id,data,sender,email,text) values ('".$parent_id."','".$data."','".$sender."','".$email."','".$text."')";
}
else
{
$sql="insert into forum_questions_base (data,subject,sender,email,text) values ('".$data."','".$subject."','".$sender."','".$email."','".$text."')";
}

$result=mysql_query($sql); if (!$result) {не важно}
}

mysql_close($db);
?>
<html>
<head>
<meta http-equiv="refresh" content="1; url=<?echo "/forum/questions/?page=".$page?>">
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694088
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. строку
Код: plaintext
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
как и любой другой ХТМЛ лучше писать в конце скрипта, чтобы не сталкиваться с ошибками описанными в http://phpfaq.ru/headers

2. код
Код: plaintext
1.
2.
3.
$send=$HTTP_POST_VARS["send"];
$parent_id=$HTTP_POST_VARS["parent_id"];
$type=$HTTP_POST_VARS["type"];
$page=$HTTP_POST_VARS["page"];
здесь есть несколько недочетов.
Во-первых, в послкеднее время все пользуются массивом $_POST (вместо $HTTP_POST_VARS).
Во-вторых, если POST-запросе не будет какой-то из переменных будет сгенерирован Notice, более чистый код выглядит например так:
Код: plaintext
 $send = emtpy($_POST['send']) ? '' : $_POST['send']; 

В-третьих запомни строку $parent_id=$HTTP_POST_VARS["parent_id"]; я к ней позже вернусь.

3. код
Код: plaintext
1.
2.
3.
4.
$data=addslashes(date("d.m.y"));
$subject=addslashes($HTTP_POST_VARS["subject"]);
$sender=addslashes($HTTP_POST_VARS["sender"]);
$email=addslashes($HTTP_POST_VARS["email"]);
$text=addslashes($HTTP_POST_VARS["text"]);
читаем http://phpfaq.ru/slashes
правильно здесь будет использовать mysql_real_escape_string

4. код
Код: plaintext
 $rs=mysql_fetch_array($result); 
Во-первых, более производительными являются mysql_fetch_row, mysql_fetch_array
Во-вторых, при таком использовании этой функции ты зря трантишь память (хотя в данном примере это не играет большой роли). Если используешь ее то лучше так:
Код: plaintext
1.
2.
 $rs = mysql_fetch_array($result, MYSQL_ASSOC);
// или так 
$rs = mysql_fetch_array($result, MYSQL_NUM);
вообще почитай в мане про второй параметр этой функции

5. по поводу SQL-запросов :
Код: plaintext
1.
2.
3.
$sql="select answers_count from forum_questions_base where id=".$parent_id;
$sql="update forum_questions_base set answers_count='".$answers_count."' where id=".$parent_id;
$sql="insert into forum_answers_base (parent_id,data,sender,email,text) values ('".$parent_id."','".$data."','".$sender."','".$email."','".$text."')";
Я во втором пункте писал про то как ты $parent_id получаешь.
Представь, что будет если тебе в ПОСТ-запросе пришлют
$_POST['parent_id'] = '1 or 1=1';
тогда у тебя получаться запросы :
Код: plaintext
1.
2.
select answers_count from forum_questions_base where id= 1  or  1 = 1  << то есть все строки в твоей таблице
update forum_questions_base set answers_count='".$answers_count."' where id= 1  or  1 = 1  << так ты внесешь изменения во все строки твоей таблицы
а последний вопрос просто вернет ошибку
Отсюда правило, никогда не доверяй пришедшим данным, должно быть в $parent_id число, проверь чтобы там было число.

И замечения по всему скрипту в целом.
У тебя нет проверки данных. А если юзер не введет ничего в форму а просто нажмет кнопку ? Будет просто пустая запись. Короче нужно проверять данные и если какие-то поля не введены или в какие-то поля введена неверная информация - просить юзера исправить ошибку.
В большинстве случаев, скрипт с формой для ввода данных и скрипт заносящий в тбалицу данные - это один и тот же файл. Так удобнее делать проверку данных и выводить форму с текстами ошибок и введенным данными.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694193
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не плохо!

На счет этого - если POST-запросе не будет какой-то из переменных будет сгенерирован Notice , то нет его.
Идет просто пустота типа "" и я не стал лишний код писать.
Можно было и так написать $HTTP_POST_VARS["send"]."";

А вот про parent_id - это круто, это действительно круто за это спасибо не додумал.

У тебя нет проверки данных. Есть на клиенте, а если что-то не так то БД ошибку сгенерит.
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694241
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет нотайса.
у тебя просто не все ошибки выводятся.
вставь в начало кода:
Код: plaintext
1.
 error_reporting(E_ALL);
ini_set('display_errors','On'); 
только это надо включать на время тестирования а потом делать display_errors == Off

По поводу проверки данных.
Проверку у клиента всегда можно обойти, можно например ручками в telnet-е создать ПОСТ-запрос, который вызовет ошибку.
Правильно написанный скрипт не должен выдавать никаких ошибок, ни ПХП ни БД
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694263
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
SpookiНа счет этого - если POST-запросе не будет какой-то из переменных будет сгенерирован Notice , то нет его.В начале скрипта пишем error_reporting (E_ALL) и ini_set ('display_errors',1) и убеждаемся в правоте Макс а (так же на будущее читаем FAQ: debug ). И вообще, то, что ошибки "задавлены" ещё не значит, что их нет.Можно было и так написать $HTTP_POST_VARS["send"]."";Это ничего не изменит.У тебя нет проверки данных. Есть на клиенте, а если что-то не так то БД ошибку сгенерит.Наивный - тебе только что показали на примере БД, что ты не прав. Надеяться на проверку на клиенте вообще бессмысленно.
До кучи - читай FAQ: Самые основы. Как работает PHP. , чтобы больше не писать больше такой лажи типаРешение через <meta http-equiv='refresh' - это и есть решение средствами HTML
Ну, это все равно убогость php. И последнее - дай ссылку на сайт, где это сделано средствами ASP - посмотрю, как это могло быть сделано без HTML/JS ;)
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694369
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, вы особо-то не кричите вы месье *
Максу спасибо за parent_id.

А всю остальную лажу, которую вы пишете про ошибки я и сам знаю.
В asp этого Request.Form("name")+"" достаточно в php нет.
Ну и чё так орать про эту хрень!
Ну не знал я, что этот php одновременно и прост и убог. И делает лишние движения касающиеся этого error_reporting(E_ALL); ini_set('display_errors','On');
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694383
Spooki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вам *

Форумы я еще не реализовывал. Вот сейчас этим занят.

И последнее - дай ссылку на сайт, где это сделано средствами ASP - посмотрю, как это могло быть сделано без HTML/JS ;)

Делается это так- Response.Redirect("../error.asp");
...
Рейтинг: 0 / 0
Редирект в PHP
    #32694421
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 звездочка
скорее всего их редирект реализован примерно так же как и в пхп в случае буферизации вывода
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Редирект в PHP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]