如何为要禁用的多个链接设置会话?

时间:2011-08-25 10:26:18

标签: php session get voting

file of 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更可靠。) (P.P.S。:我需要这个用于投票脚本。)

4 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题,但如果它是如何通过http请求发送具有相同ID的数据数组,则可以使用此语法作为网址

file.php?arr[]=val1&arr[]=val2&arr[]=val3
从您的PHP代码

您将访问值作为常规数组

  

会话变量可以处理多个数字吗?有没有办法做到这一点?

会话变量可以存储数组

答案 1 :(得分:1)

$ _ SESSION ['clicked']此会话变量一次可以存储一个值   如果你想使用2维数组来处理多个值。

$ clicked = $ _GET ['addid'];

Ex:$ _SESSION ['clicked'] [$ clicked];

答案 2 :(得分:1)

要在一个会话变量中保存更多数据,您需要创建一个多维数组,该数组将保持多个$_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!";
}

答案 3 :(得分:1)

首先用字符串中的逗号将所有id汇总为$ var = 1,2,3,4,然后使用GET传递它。

然后在那个页面上,您可以从逗号中将其爆炸并将其存储在数组中,然后数组的foreach循环将为您完成。希望它有效。