2015-05-28 4 views
-2

PHP проблемы сеанса:как передать текущие переменные через сессию в PHP

Я использую сеанс пройти несколько varaiables из одной страницы (index.php) на другую страницу (result.php). Значения запрашиваются пользователем для ввода и после нажатия кнопки нажимается страница result.php, которая должна открываться и показывать сводку входных данных.

'//index.php 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data" id="form" name="form" onsubmit="window.open('result.php', '_blank');return true;" > 

Enter Your Email Here: <input name="email" id="email" type="text" placeholder="[email protected]" pattern="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" required title="must be [email protected]" /> 

Input file: <input type="file" name="file" id= "file" maxlength="90" required/> 

cutoff: <input type="text" name="cutoff" placeholder="0.005" maxlength="60" /> 

<input type="submit" name = "submit" id="submit" value="Submit"/> </form>' 

Полученная информация - адрес электронной почты, файл и разрез, также используются для запуска Perl-скрипта с использованием shell_exec. Чтобы запустить полную программу, эти значки должны присутствовать на странице result.php. Для передачи переменной я использовал сеансы php.

<?php 
//session name in index.php 
session_id('testsession'); 
session_start(); 
//pass variables email; file and cutoff 
$_SESSION["email"] = $_POST['email']; 
$_SESSION["file1"] = $filename; 
$_SESSION["cutoff"] = $cutoff; 
?> 

И result.php значения мь как:

<?php 
//start sesstion 
session_id('testsession'); 
session_start(); 
echo session_id(); 

//values recieved by session parameter 

echo '<br> email : '.$_SESSION["email"]; 
echo '<br> File : '.$_SESSION["file1"]; 
echo '<br> cutoff : '.$_SESSION["cutoff"]; 
?> 

Вопросы и проблемы

  1. есть лучший способ справиться с передачи переменных на другую страницу?
  2. Основная проблема в этом скрипте заключается в том, что каждый раз значения сеанса, полученные методом result.php, относятся к предыдущему сеансу. , например: в файле index.php:

электронная почта - [email protected]

файл - "test.txt"

отсечка - 0,002

затем в result.php получит

электронной почты - 0

файл - 0

отсечка - 0


но в следующий раз, если я обновить снова

в index.php

электронной почты - [email protected]

файл - " 95test.txt "

cutoff - 0.52

result.php покажет

электронная почта - [email protected]

файл - "test.txt"

отсечка - 0,002

Как заботиться о сессии значения? Возможно, эта проблема связана с перенаправлением страницы на result.php, любая помощь или предложение приветствуются.

Спасибо!

+0

Рассматривали ли вы просто отправку этих значений в URL-адрес? – OllyBarca

+0

Вы устанавливаете идентификатор сеанса перед началом сеанса. Для ясности обрабатываемых данных мне легче отключить переменные сеанса, как только я закончил с ними. Это предотвращает запутывание данных. Если вы перенаправляете страницу в любом случае, не проще ли указать форму на result.php и обрабатывать данные там? –

+0

Спасибо за предложения, я попробовал session_id после запуска и отключил переменные сеанса, также я попытался перенаправить страницу на result.php. но ничего не работает. он просто не передает текущее значение. есть ли другой способ справиться с этой проблемой? – nikki

ответ

0

Я не уверен, но не было ли это session_name вместо session_id?

<?php 
//session name in index.php 
session_name('testsession'); 
session_start(); 
//pass variables email; file and cutoff 
$_SESSION["email"] = $_POST['email']; 
$_SESSION["file1"] = $filename; 
$_SESSION["cutoff"] = $cutoff; 
?> 
+0

Спасибо за ваше предложение, но это session_id not session_name. Есть ли другие предложения, которые могли бы помочь улучшить этот код. – nikki

Смежные вопросы