Реализация функции «Отправить другу».Как передать переменные на следующую страницу, не используя форму, сессию и куки? - PullRequest
3 голосов
/ 27 марта 2011

Я пытаюсь создать страницу "Отправить другу", используя php. Цель этой страницы состоит в том, чтобы пользователи могли делиться страницей, которую они просматривают, со своими друзьями.

Когда пользователь нажимает на ссылку «Поделиться», он перенаправляет пользователя на страницу, которая просит пользователя ввести свой адрес электронной почты и адрес электронной почты получателя. Тема будет заголовком предыдущей страницы, а тело письма будет URL-адресом предыдущей страницы плюс все, что пользователь захочет включить.

У меня есть вся концепция, но я застрял на стадии реализации. Кажется, я не могу понять, как лучше передать заголовок предыдущей страницы и URL-адрес этой страницы.

Вот то, о чем я думал до сих пор.

  • Использование методов POST и GET не кажется, вписываются, потому что нет формы участвуют, когда пользователь нажимает на Поделиться ссылкой.
  • Использование сессии и куки будет очень утомительно, так как требует назначения и изменение cookie / сессии каждый раз, когда пользователь просматривает страницу.
  • Передача переменных в URL сделает просто сделайте URL длинным и немного нежелательны.

Есть ли другой способ, которым я мог бы использовать, чтобы передать заголовок страницы и URL страницы на следующую страницу? Я открыт для других предложений о том, как я мог бы реализовать эту идею по-другому. Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 27 марта 2011

Насколько я вижу, передача URL в качестве параметра GET действительно является идеальным решением.

http://example.com/share.php?url=http%3a%2f%2fwww.example.com

обратите внимание, что

  • Вам необходимо кодировать URL-адрес, который вы передаете, используя urlencode()

  • общий результирующий URL не должен быть длиннее 2-4 килобайт из-за ограничений в некоторых браузерах.

0 голосов
/ 27 марта 2011

Я бы пошел на сессионный подход, даже если вы считаете это утомительным.Это называется "флэш-сообщения", и это довольно распространенным.В Zend Framework они есть прямо из коробки, CodeIgniter имеет удобную библиотеку для этого ... По сути, вам просто нужно написать несколько вспомогательных функций, и все готово.Чтобы получить базовые функции, вам необходимо:

  • добавить новое сообщение
  • получить сообщение / все сообщения
  • очистить сообщения (может быть вызвано после извлечения сообщений)

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

//before redirect:
setFlash('You have successfully logged in!');

//after redirect
echo fetchFlash();
clearFlash(); //if fetchFlash doesn't call it automatically

Так что я бы не назвал это утомительным, правда.Скорее спасатель.

0 голосов
/ 27 марта 2011

Я не понимаю, почему POST и GET не вариант. То, что на странице нет формы, не означает, что вы не можете ее разместить. Можно ли превратить ссылку в кнопку? Если вам не нравится внешний вид кнопки, используйте CSS. Размещение формы на странице займет всего несколько строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...