2014-11-27 2 views
0

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

Кто-нибудь знает, где я сделал ошибку?

<?php 
session_start(); 
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){    
$class1 = filter_var($_POST['class1'], FILTER_SANITIZE_STRING); 
$class2 = filter_var($_POST['class2'], FILTER_SANITIZE_STRING); 
$class3 = filter_var($_POST['class3'], FILTER_SANITIZE_STRING); 
$class4 = filter_var($_POST['class4'], FILTER_SANITIZE_STRING); 
$class5 = filter_var($_POST['class5'], FILTER_SANITIZE_STRING); 
$class1C = $class1 * 35; 
$class2C = $class2 * 5; 
$class3C = $class3 * 7.5; 
$class4C = $class4 * 26; 
$class5C = $class5 * 2.5; 
$totaal1 = $class1C + $class2C + $class3C + $class4C + $class5C; 

$res = array($class1C, $class2C, $class3C, $class4C, $class5C, $totaal1); 
foreach($res as $name => $var) { 
$_SESSION[$name] = $var; 
} 


$result = array("error" => false, "html" => null); 
$result["error"] = false; 
$result["html"] = "<h3>Session information: var_dump($_SESSION[$class1C]) ($_SESSION[$class2C]) ($_SESSION[$totaal1])</h3>"; 
} else { 
$result["error"] = true; 
$result["html"] = "<h3>Error</h3>"; 
} 
echo json_encode($result); 
exit; 
?> 
+0

можете ли вы установить session_start(); в верхней части страницы ? –

+0

Сделал это и не работает .. и это также делается уже на другой странице над этой, так что это не проблема, я думаю? – Justin

+0

Да что работает. Вам всегда нужно делать это, когда вы используете сеанс. Также, где вы объявили '$ _SESSION [$ class1C]'? Вы только сваливаете его? –

ответ

0

Вы не можете назвать var_dump внутри двойных кавычках, и var_dump не возвращает ничего: он показывает только вещи.

Даже если вы могли бы, $class1C не является допустимым показателем для $_SESSION

Сохраняя ту же логику, как ваш код, вы можете изменить строку следующим образом:

$result["html"] = "<h3>Session information:"; 
ob_start(); 
var_dump($_SESSION[0]); // contains $class1C 
echo $_SESSION[1]; // contains $class2C 
echo $_SESSION[5]; // contains $totaal1 
$result["html"] .= ob_get_clean(); 
$result["html"] .= "</h3>"; 

EDIT: Если вы хотите использовать индексы «class2C», «totaal1» и т. Д., Вам необходимо инициализировать $res следующим образом:

$res = array(
'class1C' => $class1C, 
'class2C' => $class2C, 
'class3C' => $class3C, 
'class4C' => $class4C, 
'class5C' => $class5C, 
'totaal1' => $totaal1 
); 

Затем ваша петля для установки $_SESSION установит правильные индексы, и вы сможете использовать $_SESSION['class1C'] для получения правильных значений.

+0

Я использую Json, чтобы вернуть $ result ["html"] в DIV, поэтому я предполагаю, что это не будет работать? он не вернет эхо? – Justin

+0

почему бы и нет? просто попробуйте, и вы увидите – Asenar

+0

Забавно, я думал, что все должно быть между $ result ["html"] = "blablahere"; – Justin

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