可以更改 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>
我 post 到 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
有一个link到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,“To change a session variable, just overwrite it”
我做错了什么?请帮忙!
在您的 viewA.php
中,您没有使用 $_POST
值存储/覆盖会话变量。
你只是在你的 TEST_form.php
中这样做,它没有得到任何 $_POST
所以你的 if(isset(...
是无用的。
您的 post 目的地(操作)是 viewA.php
,这意味着您的请求将发送至 viewA.php
。
您在 form
页面和 View_B.php
.
中仅 使用会话变量
如果您仔细查看 ViewA.php
中的代码,您会发现您只使用 POST
变量,而不是会话变量。
您在 form
页面中的 php 代码
<?php
session_start();
if(isset($_POST['hour'])) {
$_SESSION['hour'] = $_POST['hour'];
}
?>
应移至 viewA.php
。
这样做,viewA.php
将检查是否设置了 POST 变量 "hours"。在这种情况下,它会覆盖(或创建)会话变量 "hours".
我对会话变量一头雾水。我认为如果我设置一个会话变量,那么该变量将在任何以 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>
我 post 到 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
有一个link到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,“To change a session variable, just overwrite it”
我做错了什么?请帮忙!
在您的 viewA.php
中,您没有使用 $_POST
值存储/覆盖会话变量。
你只是在你的 TEST_form.php
中这样做,它没有得到任何 $_POST
所以你的 if(isset(...
是无用的。
您的 post 目的地(操作)是 viewA.php
,这意味着您的请求将发送至 viewA.php
。
您在 form
页面和 View_B.php
.
如果您仔细查看 ViewA.php
中的代码,您会发现您只使用 POST
变量,而不是会话变量。
您在 form
页面中的 php 代码
<?php
session_start();
if(isset($_POST['hour'])) {
$_SESSION['hour'] = $_POST['hour'];
}
?>
应移至 viewA.php
。
这样做,viewA.php
将检查是否设置了 POST 变量 "hours"。在这种情况下,它会覆盖(或创建)会话变量 "hours".