我对会话变量感到困惑。我想如果我设置一个会话变量,那么该变量将在任何以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;
我做错了什么?请帮忙!
答案 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”。