![](/img/trans.png)
[英]Can $_SERVER variables in PHP be changed by the user? If so how?
[英]Can php session variable be changed, and if so how?
我完全对会话变量感到困惑。 我想如果我设置了一个会话变量,那么该变量将在任何以 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。我输入“08”,它输出 13。
根据 w3schools,“要更改会话变量,只需覆盖它”
我究竟做错了什么? 请帮忙!
在您的viewA.php
您不会使用$_POST
值存储/覆盖会话变量。
你只需在你的TEST_form.php
执行它,它不会得到任何$_POST
所以你的if(isset(...
是没用的。
你的帖子目的地(动作)是viewA.php
,这意味着你的请求将被发送到viewA.php
。
您仅在form
页面和View_B.php
使用会话View_B.php
。
如果您仔细查看ViewA.php
中的代码,您会发现您只使用POST
变量,而不是会话变量。
这个 php 代码,你在你的form
页面中
<?php
session_start();
if(isset($_POST['hour'])) {
$_SESSION['hour'] = $_POST['hour'];
}
?>
应移至viewA.php
。 这样做, viewA.php
将检查是否设置了 POST 变量“小时”。 在这种情况下,它会覆盖(或创建)会话变量“小时”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.