Как установить сеанс для нескольких ссылок, которые я хочу отключить? - PullRequest
0 голосов
/ 25 августа 2011

кусок file1.php:

<a href="file2.php?addid=1">Add this to DB</a>

Это переводит пользователя на страницу, где данные вставляются в базу данных.

file2.php:

 $clicked = $_GET['addid'];
 $_SESSION['clicked'] = $clicked;
 // data gets inserted
 header("Location: file1.php?id=$clicked");

Но у меня есть несколько страниц (например: file1.php? Id = 1 | file1.php? Id = 2 | file1.php? Id = 3 и т. Д.). Может ли переменная сеанса обрабатывать несколько чисел? Есть ли способ сделать это?

Любая помощь приветствуется.

(P.S .: В настоящее время я использую метод GET для отключения ссылок, но я думаю, что SESSION более надежен.) (П.П.С .: Мне нужно это для сценария голосования.)

Ответы [ 4 ]

1 голос
/ 25 августа 2011

сначала объединяет все идентификаторы с запятой в строке как $ var = 1,2,3,4, а затем передает их с помощью GET.

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

1 голос
/ 25 августа 2011

$ _ SESSION ['clicked'] эта переменная сеанса может хранить по одному значению за раз.
Если вы хотите использовать двухмерный массив для обработки нескольких значений.

$ clicked = $ _GET ['addid'];

Пример: $ _SESSION ['clicked'] [$ clicked];

1 голос
/ 25 августа 2011

Чтобы хранить больше данных в одной переменной сеанса, вам нужно создать многомерный массив, который будет содержать кратные значения против $_SESSION['checked'].Вы можете сделать это следующим образом:

$clicked = (int)$_GET['addid'];
$_SESSION['clicked'][$clicked] = true;
// data gets inserted
header("Location: file1.php?id=$clicked");

(кроме того, вы должны проводить санитарную обработку $_GET['addid'].

Затем, чтобы проверить, установлена ​​ли она, вы можете использовать array_key_exists:

if(array_key_exists($clicked,$_SESSION['clicked'])){
  echo "this button should be disabled!";
}
1 голос
/ 25 августа 2011

Я не уверен, что правильно понял ваш вопрос, но если это так, как отправлять массив данных с тем же идентификатором через запрос http, вы можете использовать этот синтаксис для URL

file.php?arr[]=val1&arr[]=val2&arr[]=val3

из вашего php-кода вы получите доступ к значениям в виде обычного массива

Может ли переменная сеанса обрабатывать несколько чисел? Есть ли способ сделать это?

Переменная сеанса может хранить массив

...