Я полностью смущен переменными сеанса. Я думал, что если я установил переменную сеанса, то эта переменная будет доступна в любом php-документе, который начинается с session_start. Но это не работает.Можно изменить переменную сеанса php, и если да, то как?
Форма:
<?php
session_start();
if(isset($_POST['hour'])) {
$_SESSION['hour'] = $_POST['hour'];
}
?>
<!DOCTYPE html>
<html>
<body>
<form action='viewA.php' method='post'>
<input type="text" name='hour' value='24'>
<input type ='submit' name= 'submit' value='submit'>
</form>
</body>
</html>
я отправляю к viewA.php
, и она работает:
<?php
$hour = $_POST['hour'];
echo 'I am view A, and hour is '.$hour;
?>
<html>
<a href='View_B.php'>See View B</a>
<a href='TEST_form.php' >Choose another hour</a>
</html>
Файл viewA.php
имеет ссылку на View_B.php; вот код View_B в:
<?php
session_start();
print_r($_SESSION);
//$hour = $_SESSION['hour'];
//echo '... and in view B, hour is '.$hour;
?>
<html>
<a href='aatestform.php' >Choose another hour</a>
</html>
Независимо от того, что я ставлю на вход в форме, print_r($_SESSION);
View_B выводит только Array ([hour] => 13)
, что первый час я выбрал путь назад, когда. Я набираю «22»; он выводит 13. I типа в "08", он выводит 13.
Согласно W3Schools, "To change a session variable, just overwrite it"
Что я делаю неправильно? Пожалуйста помоги!
вы можете включить error_reporting (E_ALL) и посмотреть, есть ли ошибка «не перезаписать заголовки»? – jdog
Когда вы отправляете форму в 'ViewA.php', она будет выполнять' ViewA.php', поэтому часть PHP в вашей форме не будет оцениваться. – frz3993