header("Location: ... " ) для отделения скрипта от интерфейса - есть ли минусы?..

metton

Guest
header("Location: ... " ) для отделения скрипта от интерфейса - есть ли минусы?..

Здравствуйте!
Вопрос такой: предположим, у меня есть страничка и при нажатии на ней на одну из кнопок, мне, предположим, нужно что-то удалить/добавить/обновить в БД
Если весь ПХП код, отвечающий за данные действия положить в отдельный файл; и в этом же файле после непосредственно кода, исполняющего нужные мне действия поставить header("Location: ... " ) на ту же страничку, с которой вызывался этот скрипт, будут ли в таком способе какие-либо минусы/уязвимости?
 

Barlone

Guest
Это нормально. Все так делают (ну или почти все :) )
 

Larson

Новичок
А ты попробуй так и так, потом потыкай кнопки Back, Refresh - увидишь много интересного.
На мой взгляд, главное не ошибиться в логике, а то может зациклится на хидере (у меня один раз было так)
 

metton

Guest
2Larson
Вот именно об этом я и спрашивал - насчёт back и т.п.
Т.е. браузер реально грузит скрипт как страницу?..
 

RomikChef

Guest
короче.
Делай локейшен и будет тебе щастье.
Вопроса твоего я не понял.
А по-твоему бровзер по телеграфу информацию от скрипта получает?
Почитай-ка вот тут, в [f]na_tanke[/f]
А то подозрения у меня вызывает твой вопрос, что ты чего-то упускаешь в понимании технологии.
 

metton

Guest
2RomikChef
Но по идее, если я тогда после выполнения скрипта и перехода на страницу нажму back, он должен меня перебросить на тот же скрипт с теми же параметрами, и он опять создаст ту же запись в БД...
 

RomikChef

Guest
нет

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

metton

Guest
2RomikChef
Всё я прочитал
Между прочим, много неточностей...

если ты об этом:
> Скрипт, который выполнялся, отдавая пользователю
> страницу, завершил работу. Все данные, которые были в
> нем - пропали.

Ведь броузер хранит ссылку
И если мы передаём данные GET-ом, то ПХП код выполняется с теми же параметрами...
 

RomikChef

Guest
слушай, будь другом - напиши все неточности?
Это очень важно.

А насчет ссылок.
Бровзер не хранит ссылки. он хранит загруженные страницы, чтобы ты на будущее знал.
 

metton

Guest
2RomikChef
Забей - это просто придирки...

Ты можешь просто объяснить, что не так?
В чём я не прав в своих рассуждениях?
(в общем, я так понял - минусов в данном методе нет?)
И всё...

Спасибо.
 

RomikChef

Guest
давай так - ты мне придирки, а я тебе - в чем ты не прав? :)
возможно, ты в своих придирках неправ - тогда я тебя поправлю.
А если прав - я поправлю текст. Он должен быть выверен.

А в чем ты не прав, я тебе объяснил.
Бровзер запоминает не ссылки в которые тыкал, а страницы, которые получал с сервера.
В этом все и дело.
 

metton

Guest
2RomikChef
может я и ошибаюсь, но вроде бы методов GET и POST есть ещё PUT и HEAD
Первый вообще не помню где вычитал, второй - "извлекает данные о документе, а не сам документ" (цитата =))
И ещё GET используется всё же не только в ссылках, ведь это, насколько я знаю, метод форм по умолчанию...

Может, я и не прав...
По этой же теме вопросы:
ты не знаешь, что делает эти методы? (просто самому интересно - нашёл названия, а что они делают не нашёл; определение из цитаты непонятно)

И теперь ещё вопрос по основной теме
В общем, опробовал я способ с хедерами (Location)
И вот такая интересная вещь получается
Насколько я тебя понял (вполне возможно, что просто не понял), ты говоришь, что броузер грузит скрипт как страницу.
После небольшого эксперимента возникает вопрос: почему же тогда при нажатии back в броузере он возвращает меня не на страницу скрипта, а на ту, из которой я посылал данные скрипту?
 

RomikChef

Guest
Знаю.
head получает http-заголовки. Это и есть те самые "данные о документе", про которые ты читал.
PUT - отправляет файлы. Его поддержка по умолчанию выключена в апаче.

Обоими средствами нормальному юзеру очень проблематично воспользоваться.
Потому они и не упомянуты.

Насчет GET исправлю.

По основному вопросу.
возвращайся к ссылке, которую так успешно критиковал...
и читай до просветления. Больше, чем там, я тебе все равно не объясню.
Затем возьми бумажку, и посчитай - какую страницу бровзер принимал последней?

Еще раз. Броузер ничего не грузит. Броузер только запрашивает. И принимает, что ему пошлет сервер.
А теперь расскажи-ка мне, какую страницу посылает сервер броузеру после того, как обработает данные?
 

ForJest

- свежая кровь
2metton
Броузер не знает ничего про скрипты, CGI и т.п. Он просто запрашивает страницу с сервера.
А сервер ему отдает результат - текс, отформатированный по спецификации HTML.

Общение между броузером и сервером происходит по протоколу HTTP. Именно этот протокол имеет методы GET, POST, PUT, HEAD как метод запроса документа у сервера.

header("Location: ") - это ответ сервера по протоколу HTTP. В общем по-моему тебе нужно немного разложить в голове по полочкам где и что. Почитай материалы в Сети - их там довольно много.
 

metton

Guest
2RomikChef && ForJest
Большое спасибо!
Теперь догнал =)
 

metton

Guest
2RomikChef
А можно примерчик использования метода HEAD
Он их получает - и как к ним потом обращаться и есть ли вообще какой-то смысл в этом методе (применяют ли его реально на практике?)
Спасибо.
 

RomikChef

Guest
обращаться - стандартно. Читаем про протокол HTTP.
Кому надо - те применяют.
Сначала, наверное, надо решить - зачем.

Я - не применял. Я использую РНР стандартно - чтобы отдавать страницы, а не чтобы запрашивать.
 

metton

Guest
Т.е. запрашивать? Откуда?

Где читаем про протокол HTTP (имменно с данным контекстом)
если можно - ссылку.
Спасибо =)
 

RomikChef

Guest
по моему ты совсем перестал думать, все в писание ушло.
Ты не можешь ответить, откуда мы запрашиваем www страницы?

Ссылку дам. Очень полезная.
http://www.google.com/search?q=http+protocol
 

metton

Guest
2RomikChef
Да нет =)
Ты говоришь, что ты ипользуешь ПХП, чтобы отдавать страницы, а не запрашивать... Вот я и спрашиваю: откуда запрашивать? В смысле с других серверов?

За ссылку спасибо! =)
 
Сверху