PHP - как использовать сессию вместо GET-переменной - PullRequest
0 голосов
/ 03 августа 2009

У меня здесь возникает дилемма. Мне нужно использовать сеанс для навигации по записям в цикле foreach.

foreach($key as $val)
{
  echo '<tr><td><a href="'.$key.'">$val</a></td></tr>';
}

Хорошо, ключ $ в этом выражении - это ключ моей базы данных, и когда пользователь щелкает ссылку, он переносит их на следующую страницу. Эта «следующая страница» анализирует данные и помещает их в строку запроса для URL. Мне не нравится, как он работает со строкой запроса, и я хочу вместо этого использовать сеанс для обработки ключа $, но я не знаю, как заставить это работать для гиперссылки. Может кто-нибудь, пожалуйста, помогите мне?

Спасибо

Суть в том, что я не хочу получать ключ от URL. Это не имеет ничего общего с безопасностью, но я хочу поместить этот ключ в скрытое поле, чтобы потом его можно было проанализировать.

Ответы [ 3 ]

2 голосов
/ 03 августа 2009

Это не очень хорошая идея. URI (или URL, если хотите) идентифицирует УНИКАЛЬНЫЙ ресурс. Краткий пример:

Хорошо (уникальный)
http://example.org/page/1 => GET key = 1
http://example.org/page/2 => GET key = 2

Плохо (не уникально)
http://example.org/page с ключом сеанса = 1
http://example.org/page с ключом сеанса = 2

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

Это скроет ключ и сохранит его в сеансе. Вы также можете использовать числовые индексы вместо md5 и salt, если вам не нравятся длинные строки md5 или функция uniqid.

//store this value in a config file
$salt = 'somelongsecretstring';

foreach($key as $val)
{
  $md5 = md5($salt . $key);
  $_SESSION['keys'][$md5] = $key;
  echo '<tr><td><a href="?key='.$md5.'">$val</a></td></tr>';
}

На следующей странице:

$md5 = $_GET['key'];
if (!isset($_SESSION['keys'][$md5])) {
    //key doesnt exists, redirect to previous page and display error.
}
$key = $_SESSION['keys'][$md5];
0 голосов
/ 03 августа 2009

Если я правильно понимаю, все, что вам нужно сделать, это добавить $key к текущей переменной $ _SESSION.

foreach ($key as $val){
   $_SESSION['key'] = $key;
   echo '<tr><td><a href="'.$key.'">$val</a></td></tr>';
}

Затем все, что вам нужно сделать, это искать $_SESSION['key'], когда вы захотите использовать его снова.

Надеюсь, это поможет.

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