使用$ _SESSION来将php变量从一页转移到下一页?

时间:2018-12-23 00:42:11

标签: php html variables session

我创建了一个应用来接收和统计选票。我试图使选民的选择进入确认页面,以便在确认页面上显示他们投票的候选人的姓名。

我试图对投票者提交的所选候选人的变量使用$ _SESSION,然后在确认页面上调用该变量,但是我仍然遇到未定义的变量错误。

voterSubmit.php:

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

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


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

confirmation.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 

我还想提到我已经尝试过相反的方法:

关于confirmation.php:

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

onvoiceSubmit.php:

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

5 个答案:

答案 0 :(得分:1)

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

尝试:

voterSubmit.php:

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

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


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

confirmation.php

<?php

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

include "views/confirmation.php";

答案 1 :(得分:0)

我认为session_start()必须是php标签之后的第一行。

$ _ SESSION是一个数组。因此,您需要为其分配值,例如:
    $_SESSION['keyname'] = $value;

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

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

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

include "views/confirmation.php";

答案 2 :(得分:0)

voterSubmit.php看起来还不错...但是我不明白为什么您在Confirmation.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 :(得分:0)

您的代码中有2个问题:

  1. session_start()定义在错误的位置。
  2. 为会话变量分配值的方式错误。

答案:

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

答案 4 :(得分:0)

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

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

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

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