【问题标题】:PHP Session Variable will not change [duplicate]PHP会话变量不会改变[重复]
【发布时间】:2016-08-16 22:26:22
【问题描述】:

我有一个由 4 个单选按钮组成的表单,每个单选按钮代表不同的形状,长方体、圆锥体、圆柱体或球体,我还为每个形状设置了一个会话变量(每个都设置为 0),当用户选择单选按钮并提交表单时,我希望它将 1 添加到此处选择的任何形状是我的代码

HTML

<form action="question2.php" method="post">
    <input type="radio" name="ans" value="cuboid">
    <input type="radio" name="ans" value="cone">
    <input type="radio" name="ans" value="cylinder">
    <input type="radio" name="ans" value="sphere">
    <input type="submit" value="Submit">
</form>

PHP

<?php
    if(isset($_POST['submit'])) {
        if(isset( $_POST['ans'])) {
             $selected_answer = $_POST['ans'];
             if($selected_answer == "cuboid") {
                 $_SESSION["cuboid"] = ((int)Session["cuboid"]) + 1;
             }
        }
    }
?>

但是这不起作用。 $_SESSION["cuboid"] 保持为 0。谁能告诉我哪里出错了?

编辑 - 我在上一页中定义 Session 变量,像这样

$_SESSION["cuboid"] = 0;

而且我所有页面的顶部都有以下内容

<?php
    session_start();
?>

【问题讨论】:

  • 您是否检查了所有条件是否满足?仅供参考isset() 可以接受多个参数。
  • 您的意思是每个单选按钮都有一个 if 语句吗?我不知道你说它能够接受多个参数是什么意思?
  • 别指望这个if(isset($_POST['submit'])) {...} 会火。
  • @Fred-ii- 非常棒!
  • @Script47 它总是我检查的第一件事,条件。

标签: php html session session-variables


【解决方案1】:

您需要使用session_start,如果您还没有这样做的话。

如果您启用了错误报告,您还应该显示语法错误。

改变,

$_SESSION["cuboid"] = ((int)Session["cuboid"]) + 1;

到,

$_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1;

另一件事...

您的if (isset($_POST['submit'])) 条件检查将永远不会运行,因为您实际上并未为其设置name 属性。

错误报告

要启用错误报告以查看您犯的任何错误,

error_reporting(-1);
ini_set('display_errors', 'On');

【讨论】:

  • 我正在使用 session_start 我只是没有在上面的代码中包含它
  • ^ 并非总是如此。
  • @Fred-ii- 很遗憾,是的。
  • 注意@Dfarrelly 如果您提出的问题包含对$_SESSION 的引用,请始终在示例代码中添加session_start(),否则您将得到cmets 的第一件事,因为它经常发生被初学者遗忘
  • @Script47 您可能想要添加关于没有name="" 属性的输入标签的位不会发送到脚本
猜你喜欢
  • 1970-01-01
  • 2018-01-21
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2013-05-01
  • 2011-06-09
相关资源
最近更新 更多