|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Привет Всем! Блин как в этом PHP осуществить принудительный редирект из скрипта? Это вообще возможно сделать нормально? Есть функция header("Location: url"); Эта функция кривовата, она не работает когда уже что-то вывели в браузер. Есть что-нибудь еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 13:13 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
> Эта функция кривовата, это твой скрипт кривоватый, не выводи ничего до тех пор пока могут быть выведены заголовки. И разберись наконец с HTTP чтобы такую чушь не нести больше ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 13:37 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Макс М.> Эта функция кривовата, это твой скрипт кривоватый, не выводи ничего до тех пор пока могут быть выведены заголовки. И разберись наконец с 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 13:44 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
То есть разбираться с протоколом HTTP ты принципиально отказываешься ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 13:58 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
тебе нужен редирект как на форумах типа phpBB/VBulletin ? (который они используют после отправки сообщения) Если да, то такие редиректы делаются средствами HTML/JavaScript ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:00 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Макс М.тебе нужен редирект как на форумах типа phpBB/VBulletin ? (который они используют после отправки сообщения) Если да, то такие редиректы делаются средствами HTML/JavaScript Мне нужен редирект на моем форуме, который Я сам пишу сейчас и понял, что php немного убоговат в этом моменте. Единственное решение это http-equiv='refresh' <meta http-equiv='refresh' .... Я на этом HTML/JavaScript не профессионально делать такие веши. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:04 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Макс М.То есть разбираться с протоколом HTTP ты принципиально отказываешься ? Да чего там разбираться-то. Просто ломает. Если что-то отудаго надо, то беру и все, а нахер он мне еще нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:09 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Убогие твои знания в области веб-программирования. Это не ограничения ПХП, это ограничения HTTP, стандарта, которому обязаны подчиняться все веб-клиенты (броузеры) и веб-серверы : заголовки всегда должны идти до вывода содержимого, по стандарту Решение через <meta http-equiv='refresh' - это и есть решение средствами HTML ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:11 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
> Да чего там разбираться-то. ну хотя бы, чтобы впредь не задавать глупых вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:12 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Макс М.Убогие твои знания в области веб-программирования. Это не ограничения ПХП, это ограничения HTTP, стандарта, которому обязаны подчиняться все веб-клиенты (броузеры) и веб-серверы : заголовки всегда должны идти до вывода содержимого, по стандарту Решение через <meta http-equiv='refresh' - это и есть решение средствами HTML Ну, это все равно убогость php. ASP c этим справляется без проблем и не надо беспокоить таких гуру как вы в области web-программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:20 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
в ПХП есть возможность сделать так, чтобы можно было слать заголовки после вывода, но пока новички не разбирутся со стандартом HTTP я им про нее не рассказываю ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:24 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Это понятно, а то не дай бог, новички станут такими же крутыми знатоками как вы в области маразма. Микрософт избавляет от этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:31 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Малыш, незнакомый человек не сможет меня обидеть. Можешь даже не стараться ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:35 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Макс М.Малыш, незнакомый человек не сможет меня обидеть. Можешь даже не стараться Ладно, не буду "папаша". Но в следующий раз ты не наезжай на чужие скрипты и чужой труд. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:49 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
если скрипт написан плохо, то наоборот, автор должен это знать, чтобы в дальнейшем писать правильно и не повторять старых ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 14:54 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Я что-то не въехал, а с чего ты взял, что он плохо написан? Был вопрос не по скрипту, а одной проблеме. Причем тут скрипт, в чем должна быть правильность? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 15:10 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
последнее мое мообщение было не о тебе лично, а вобщем о чужом, плохо сделаном труде. По приведенному коду могу у меня есть замечания, но они тебе покажутся несущественными. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 15:23 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
интересно какие? могу даже "весь" скрипт положить. <!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?>"> ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 15:31 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
1. строку Код: plaintext
2. код Код: plaintext 1. 2. 3.
Во-первых, в послкеднее время все пользуются массивом $_POST (вместо $HTTP_POST_VARS). Во-вторых, если POST-запросе не будет какой-то из переменных будет сгенерирован Notice, более чистый код выглядит например так: Код: plaintext
В-третьих запомни строку $parent_id=$HTTP_POST_VARS["parent_id"]; я к ней позже вернусь. 3. код Код: plaintext 1. 2. 3. 4.
правильно здесь будет использовать mysql_real_escape_string 4. код Код: plaintext
Во-вторых, при таком использовании этой функции ты зря трантишь память (хотя в данном примере это не играет большой роли). Если используешь ее то лучше так: Код: plaintext 1. 2.
5. по поводу SQL-запросов : Код: plaintext 1. 2. 3.
Представь, что будет если тебе в ПОСТ-запросе пришлют $_POST['parent_id'] = '1 or 1=1'; тогда у тебя получаться запросы : Код: plaintext 1. 2.
Отсюда правило, никогда не доверяй пришедшим данным, должно быть в $parent_id число, проверь чтобы там было число. И замечения по всему скрипту в целом. У тебя нет проверки данных. А если юзер не введет ничего в форму а просто нажмет кнопку ? Будет просто пустая запись. Короче нужно проверять данные и если какие-то поля не введены или в какие-то поля введена неверная информация - просить юзера исправить ошибку. В большинстве случаев, скрипт с формой для ввода данных и скрипт заносящий в тбалицу данные - это один и тот же файл. Так удобнее делать проверку данных и выводить форму с текстами ошибок и введенным данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 16:09 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Не плохо! На счет этого - если POST-запросе не будет какой-то из переменных будет сгенерирован Notice , то нет его. Идет просто пустота типа "" и я не стал лишний код писать. Можно было и так написать $HTTP_POST_VARS["send"].""; А вот про parent_id - это круто, это действительно круто за это спасибо не додумал. У тебя нет проверки данных. Есть на клиенте, а если что-то не так то БД ошибку сгенерит. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 16:43 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
насчет нотайса. у тебя просто не все ошибки выводятся. вставь в начало кода: Код: plaintext 1.
По поводу проверки данных. Проверку у клиента всегда можно обойти, можно например ручками в telnet-е создать ПОСТ-запрос, который вызовет ошибку. Правильно написанный скрипт не должен выдавать никаких ошибок, ни ПХП ни БД ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 16:57 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
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 ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 17:05 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Ладно, вы особо-то не кричите вы месье * Максу спасибо за parent_id. А всю остальную лажу, которую вы пишете про ошибки я и сам знаю. В asp этого Request.Form("name")+"" достаточно в php нет. Ну и чё так орать про эту хрень! Ну не знал я, что этот php одновременно и прост и убог. И делает лишние движения касающиеся этого error_reporting(E_ALL); ini_set('display_errors','On'); ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 17:33 |
|
Редирект в PHP
|
|||
---|---|---|---|
#18+
Это вам * Форумы я еще не реализовывал. Вот сейчас этим занят. И последнее - дай ссылку на сайт, где это сделано средствами ASP - посмотрю, как это могло быть сделано без HTML/JS ;) Делается это так- Response.Redirect("../error.asp"); ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 17:41 |
|
|
start [/forum/topic.php?fid=23&msg=32693819&tid=1479372]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 154ms |
0 / 0 |