【问题标题】:PHP session array variable issuePHP会话数组变量问题
【发布时间】:2014-10-10 02:50:34
【问题描述】:

我有一个 html 表单,我用它来询问一组多项选择题。访问者回答问题后,他/她将再次被重定向回同一页面。他/她对上一个问题的回答将通过 $_POST 用于从 MYSQL 数据库中查询另一个独特的问题,等等许多问题。所以我想使用 PHP 会话来存储所有已经使用 PHP 数组会话变量查询的问题。我试图 array_push 已经查询过的所有问题 ID。但是,每次我 array_push 最新的问题 id 时,之前的问题 id 都会丢失在会话变量中。我该如何解决这个问题,以便会话数组将保留所有查询的问题 ID?谢谢!

//file name is test.php  
<?php
session_start();
$_SESSION['used_id'] = array ();
array_push($_SESSION['used_id'],$_POST('name')) 
?>

<html>
   <form action ="test.php" method = "post">
       <input type = "radio" name = "name" value = "1"> choiceA </input>
       <input type = "radio" name = "name" value = "2"> choiceB </input>
       <input type = "submit">
</html>

【问题讨论】:

  • $_POST('name') 你应该看到一个错误Function name must be a string 如果没有,你的问题是不是打错字了?建议复制粘贴。
  • 不要为会话user_id分配空白数组。直接使用用户名。

标签: php arrays session post forms


【解决方案1】:

您的代码存在一些问题:

$_SESSION['used_id'] = array (); 每次调用脚本时都会重置您的 used_id 数组。
首先测试是否已经有一个数组! if(is_array($_SESSION['used_id']))

然后使用方括号访问您的 $_POST 数组:$_POST['name']!

【讨论】:

    【解决方案2】:

    您每次都在清空数组。仅第一次设置,使用isset()检查。

    // if not set, create the array
    if (!isset($_SESSION['used_id'])) $_SESSION['used_id'] = array();
    

    这行也有问题,你应该使用方括号并以分号结尾。

    // array_push($_SESSION['used_id'],$_POST('name')) 
    array_push($_SESSION['used_id'], $_POST['name']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多