PHP - Как передать длинную неэкранированную строку с одной страницы на другую? - PullRequest
0 голосов
/ 30 августа 2009

Я хотел бы передать длинную строку на вторую страницу. Обычно я передаю короткие строки как переменные

www.example.php?var=something&var2=somethingelse

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

Есть ли простой способ сделать это, что мне не хватает? Нужно ли повторно запрашивать базу данных?

Спасибо

Ответы [ 5 ]

5 голосов
/ 30 августа 2009

Нет проблем при передаче длинных значений, для этого предназначена функция urlencode():

$link = 'www.example.com?longValue=' . urlencode($arbitraryLengthString);

И вам не нужно декодировать его вручную, это делается автоматически с помощью PHP. Но если это действительно длинное значение, которое вы собираетесь использовать на многих страницах, может быть лучше поместить его в сеанс .

4 голосов
/ 30 августа 2009

Используйте urlencode или http_build_query . Тогда не нужно декодировать сообщение.

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

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

$salt = 'longsecretconstanttexthere'; 
$url .= '?' . http_build_query(array('text' => $str, 'hash' => md5($str . $salt));

Получение конца:

$str = $_GET['text'];
if ($_GET['hash'] !== md5($str . $salt)) {
  //not the original string
}

Для секретного метода сохраните текст в $ _SESSION или дБ с ключом. Отправьте этот ключ на следующую страницу.

4 голосов
/ 30 августа 2009

base 64 кодирует его, а затем декодирует снова, когда другая страница получает параметр GET

$str = "I'm an obnoxious string, meh meh"
$str = base64_encode($str);

** Echo link **

Тогда на принимающей странице

$str = base64_decode($_GET['str']);
2 голосов
/ 30 августа 2009

В зависимости от длины рассматриваемой строки вы можете посмотреть метод базы данных, сеансы или использование POST для отправки данных вместо GET.

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

1 голос
/ 30 августа 2009

использовать массив $ _SESSION

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