繁体   English   中英

可以更改 php 会话变量吗,如果可以,如何更改?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM