可以改变php会话变量,如果是这样的话怎么样?

时间:2015-09-27 20:07:52

标签: php session-variables

我对会话变量感到困惑。我想如果我设置一个会话变量,那么该变量将在任何以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 ),这是我选择的第一个小时。我输入&#34; 22&#34 ;;输出13.我输入&#34; 08&#34;,输出13。

根据w3schools,&#34; To change a session variable, just overwrite it&#34;

我做错了什么?请帮忙!

2 个答案:

答案 0 :(得分:1)

viewA.php中,您不会使用$_POST值存储/覆盖会话变量。

您只是在TEST_form.php中执行此操作,而$_POST没有if(isset(...,因此您的.content-1 { position: relative; height: 500px; border: 1px solid red; } #to-first { position: absolute; width: 100%; bottom: 10px; color: #000; font-size: 50px; text-align: center; cursor: pointer; border: 1px solid green; } 无效。

答案 1 :(得分:1)

您的发布目的地(操作)为viewA.php,这表示您的请求将发送至viewA.php

您在form页面和View_B.php中使用会话变量

如果仔细查看ViewA.php中的代码,您会发现您只使用POST个变量,而不是会话变量。

这个PHP代码,您在form

<?php
session_start();
if(isset($_POST['hour'])) {
$_SESSION['hour'] = $_POST['hour'];
} 
?>

应移至viewA.php。 执行此操作,viewA.php将检查是否设置了POST变量“hours”。在这种情况下,它会覆盖(或创建)会话变量“hours”。