【问题标题】:Using $_SESSION to carry a php variable from one page to the next?使用 $_SESSION 将 php 变量从一页传送到下一页?
【发布时间】:2018-12-25 13:39:44
【问题描述】:

我创建了一个应用来接收和统计选票。我正在尝试将选民的选择转移到确认页面,以便我可以在确认页面上显示他们为之投票的候选人的姓名。

我正在尝试在选民提交的所选候选人的变量上使用 $_SESSION,然后在确认页面上调用该变量,但是我继续收到未定义变量错误。

voterSubmit.php:

<?php
$selectedCandidate = $_POST['candidateid'];

session_start();
$selection = $_SESSION[$selectedCandidate];


//Redirect to results page
header("Location: views/confirmation.php");

确认.php

<?php

session_start();
$_SESSION[$selectedCandidate] = $selection;

include "views/confirmation.php";

确认视图:

<?php include "../partials/header.php"; ?>

<h1>Thanks For Your Vote!!</h1><br>
 //This is where the error occurs (on my selection variable):
<h2>You voted for <?=$selection?> 

<a href="results.php">View Results</a>


<?php include "../partials/footer.php"; ?>  

我希望所选候选人的姓名通过 $selection 变量出现在确认页面上。但是,我在前端收到的只是“未定义变量”错误。我还想指出,我没有在会话中使用 $selectedCandidate 变量,而是尝试直接使用单选按钮选择的名称来获取名称:

$_SESSION['candidateid'] = $selection 

我还想提一下,我已经尝试了相反的方法:

关于确认.php:

session_start();
$selection = $_SESSION[$selectedCandidate];

在 voteSubmit.php 上:

session_start();
$_SESSION[$selectedCandidate] = $selection;

【问题讨论】:

    标签: php html variables session


    【解决方案1】:

    您错误地使用了 $_SESSION 变量。

    试试:

    voterSubmit.php:

    <?php
    $selectedCandidate = $_POST['candidateid'];
    
    session_start();
    $_SESSION['selectedCandidate'] = $selectedCandidate;
    
    
    //Redirect to results page
    header("Location: views/confirmation.php");
    

    确认.php

    <?php
    
    session_start();
    $selection = $_SESSION['selectedCandidate'];
    
    include "views/confirmation.php";
    

    【讨论】:

    • @GabrielLuciano 你能不能 var_dump($_SESSION);在两个文件中的 session_start() 之后?
    • 我想通了。我在页面顶部包含了错误的文件路径。
    【解决方案2】:

    voterSubmit.php 看起来不错...但我不明白为什么您在确认.php 文件中有include "views/confirmation.php";

    <?php
    
    session_start();
    $_SESSION[$selectedCandidate] = $selection;
    
    include "views/confirmation.php";
    

    尝试以这种方式编码您的 HTML/PHP:

    <?php
    /* confirmation.php */
    
    session_start();
    $_SESSION[$selectedCandidate] = $selection;
    
    require_once("../partials/header.php");
    
    //This is where the error occurs (on my selection variable):
    echo <<<_STRT
        <h1>Thanks For Your Vote!!</h1><br>
        <h2>You voted for $selection</h2>      
        <p><a href="results.php">View Results</a></p>
    _STRT;
    
    require_once("../partials/footer.php");
    ?>
    

    我基本上消除了很多启动/停止代码。 PHP 的启动会调用会话和变量。然后我进入 HTML 部分,将结果提供给您的网站访问者。试一试。如果它不能解决您的问题,请发表评论,以便我们重新考虑。

    【讨论】:

    • 我在顶部错误地包含了路径。谢谢!
    【解决方案3】:

    我认为 session_start() 需要在 php 标签之后的第一行。

    $_SESSION 是一个数组。所以你需要给它赋值:
    $_SESSION['keyname'] = $value;

    voterSubmit.php:
    &lt;?php
    session_start();
    $_SESSION['selectedCandidate'] = $_POST['candidateid'];

    //Redirect to results page
    header("Location: views/confirmation.php");

    confirmation.php
    &lt;?php
    session_start();
    $selection = $_SESSION['selectedCandidate'];

    include "views/confirmation.php";

    【讨论】:

      【解决方案4】:

      您的代码中有 2 个问题:

      1. session_start() 定义错误。
      2. 为会话变量赋值的方式错误。

      答案:

      1. session_start() 应该是你的 php 之后定义的第一件事 标记。
      2. 声明会话变量的正确方法是:$_SESSION["selectedCandidate"] = $selectedCandidate; 其中,$selectedCandidate 是要分配给会话变量的值,名为 selectedCandidate

      【讨论】:

        【解决方案5】:

        您在代码中犯了 2 个错误: 1. 会话应该在页面开始时定义,这意味着你必须像这样定义它:

        <?php 
        session_start();
        //php code goes here.
        ?>
        

        2.会话变量初始化错误。你应该这样做:

        <?php
        $_SESSION['selectedCandidate']=$selectedCandidate;
        ?>
        

        【讨论】:

          猜你喜欢
          • 2012-11-26
          • 2015-12-02
          • 2023-03-30
          • 2010-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多