Как передать определенную информацию СЕССИИ с одной страницы PHP на другую? - PullRequest
0 голосов
/ 11 ноября 2010

У меня проблемы с выяснением проблемы php, описанной ниже.

У меня есть одна страница PHP, на которой перечислены несколько пользователей в таблице (список генерируется PHP).Рядом с каждым пользователем есть кнопка «удалить».При нажатии на эту кнопку страница будет перенаправлена ​​на новую страницу подтверждения удаления, и поэтому нам нужно передать информацию о специально выбранном пользователе.

Моя идея заключалась в использовании массива $ _SESSION, в котором хранится вся информация.о выбранном пользователе (например, имя, фамилия, идентификатор пользователя и т. д.), но я не могу понять, как массив должен хранить информацию для одного конкретного пользователя.Сейчас я использую цикл while для генерации списка пользователей:

      while ($row = mysqli_fetch_array($data)) { 
  // Display the user data
  echo '<td><strong>' . $row['first_name'] . '</strong></td>';
  echo '<td><strong>' . $row['last_name'] . '</strong></td>';
  echo '<td>' . $row['nickname'] . '</td>';
  ...

  echo '<td><a href="remove.php">Remove</a>'; // button should be here
  echo '</td></tr>';
  }
 echo '</table>';

Как мне убедиться, что эта конкретная ссылка Remove заполняет массив $ _SESSION информацией этого пользователя?Прямо сейчас цикл while создает только несколько идентичных кнопок удаления, которые не различают пользователей, перечисленных в таблице.Любая помощь приветствуется!

Ответы [ 4 ]

3 голосов
/ 11 ноября 2010

Использование сеанса - плохой подход в этой ситуации. Вы, вероятно, просто хотите передать идентификатор пользователя на страницу подтверждения удаления, добавив идентификатор пользователя к связанному URL:

echo '<td><a href="remove.php?user_id='.$row['id'].'">Remove</a>';

На странице подтверждения удаления вы можете получить доступ к переданному идентификатору пользователя с помощью $ _GET ["user_id"]

1 голос
/ 11 ноября 2010

Если вы все равно перенаправляете на новую страницу - может ли «кнопка» не просто включить ссылку / идентификатор в запись и передать ее как часть запроса GET / POST на страницу подтверждения ... которая затем запрашивает БД для нужной информации?

Одним из способов было бы иметь что-то вроде:

  // Display the user data
  echo '<td><strong>' . $row['first_name'] . '</strong></td>';
  echo '<td><strong>' . $row['last_name'] . '</strong></td>';
  echo '<td>' . $row['nickname'] . '</td>';
  echo '<td><form action="confirmationpage.php" method="get"><input type="hidden" value ="'.$row['record_id'].'" name='record_id' /><input type="submit" /> </form>'</td>';

Таким образом, у каждой строки в таблице есть кнопка и скрытое поле с идентификатором этой записи - когда вы нажимаете кнопку отправки, вы переходите на страницу подтверждения, и идентификатор записи передается, вы можете затем захватить этот идентификатор для запросить в БД соответствующие данные.

В качестве альтернативы, вместо использования формы вы также можете использовать гиперссылку (или изображение кнопки с гиперссылкой)

0 голосов
/ 11 ноября 2010

Нет - хранилище сессии не должно использоваться для данных транзакции.Даже если вы можете быть уверены, что пользователи не будут использовать кнопки «Назад» и «Вперед», даже если вы можете быть уверены, что они не откроют несколько окон, ваш код будет завязан в узлы.

echo '<td><a href="remove.php?uid=' . $row['id'] . '">Remove</a>';

не так ли?

Хотя на самом деле такого рода операции должны выполняться в POST, а не в GET (вы можете потерять формы на странице или одну формуи JavaScript, чтобы написать скрытое поле и отправить форму).

0 голосов
/ 11 ноября 2010

Загрузите необходимые результаты вашей базы данных в глобальную переменную $ _SESSION

т.е.

session_start();  
$_SESSION['userData'] = $queryResultsAsAnArray;

Затем укажите ссылку в вашем html, например:

echo '<td><strong>' . $_SESSION['userData']['first_name'] . '</strong></td>';

Или я предпочитаю загружать суперглобальные данные сеанса в новую переменную и использовать их, например: ]

  $userData = $_SESSION['userData'];
echo '<td><strong>' . $userData['first_name'] . '</strong></td>';

Справочник по сеансам PHP

...