Использование $ _SESSION для переноса переменной php с одной страницы на другую? - PullRequest
0 голосов
/ 23 декабря 2018

Я создал приложение для получения и подсчета голосов.Я пытаюсь перенести выбор избирателя на страницу подтверждения, чтобы я мог отобразить имя кандидата, за которого они проголосовали, на странице подтверждения.

Я пытаюсь использовать $ _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];

в файле голосования.

Ответы [ 5 ]

0 голосов
/ 25 декабря 2018

Вы сделали 2 ошибки в своем коде: 1. Сессия должна быть определена в начале страницы, это означает, что вы должны определить ее следующим образом:

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

2. Неправильная инициализация переменной сеанса .youдолжен сделать это так:

<?php
$_SESSION['selectedCandidate']=$selectedCandidate;
?>
0 голосов
/ 23 декабря 2018

В вашем коде есть 2 проблемы:

  1. session_start() определено не в том месте.
  2. Неправильный способ присвоения значения переменной сеанса.

Ответ:

  1. session_start() должен быть первым, что определено после вашего php-тега.
  2. Правильный способ объявления переменных сеанса: $_SESSION["selectedCandidate"] = $selectedCandidate; где $selectedCandidate - это значение, которое будет присвоено вашей переменной сеанса с именем selectedCandidate.
0 голосов
/ 23 декабря 2018

Я думаю, что 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");

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

include "views/confirmation.php";

0 голосов
/ 23 декабря 2018

voterSubmit.php выглядит нормально ... но я не понимаю, почему у вас есть include "views/confirmation.php"; в файле translation.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, чтобы предоставить результаты посетителю вашего сайта.Дать ему шанс.Прокомментируйте это, если это не решит вашу проблему, чтобы мы могли переосмыслить это.

0 голосов
/ 23 декабря 2018

Вы с помощью переменной $ _SESSION неправильно

1002 * Попытка:. 1004 * voterSubmit.php:
<?php
$selectedCandidate = $_POST['candidateid'];

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


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

confirmation.php

1009 *
...