我有两个文件:
的index.php /lib/user.php
索引包含以下形式:
<div class="<? echo $msgclass; ?>">
<? echo $msg; ?>
</div>
<form id="signin" action="/lib/user.php" method="post">
...
</form>
User.php进行所有处理。 它将$ msg设置为'some error message',并将$ msgalert设置为'error'以防出现任何错误。在处理结束时,它使用header()重定向到index.php
但重定向后,$ msg和$ msgalert不再持久,索引只获得空变量。 我该如何解决这个问题?
答案 0 :(得分:1)
编辑:抱歉误读了您的问题。您可以将这些值存储在会话中。
在/lib/user.php
session_start();
$_SESSION['msg'] = $msg;
$_SESSION['msgalert'] = $msgalert;
index.php
中的
session_start();
$msg = $_SESSION['msg'];
$msgalert = $_SESSION['msgalert'];
请注意session_start()
使用标头,因此必须在发送任何输出之前将其放置。
答案 1 :(得分:0)
User.php和index.php是独立的执行,所以变量范围在这里没有多大意义。
您可以通过GET参数或会话变量传递这些值。
尝试使用GET参数重定向:
header('Location: http://www.example.com/index.php?msgalert=error&msg=some%20error%20message');
然后在index.php中使用:
$_GET['msgalert']
$_GET['msg']
访问您的数据。虽然如果可以的话,使用硬编码到脚本中的一些预定义错误消息会更好(仅传递错误代码)。
答案 2 :(得分:0)
网页是无国籍的。如果您想维护状态,请将所需值存储在$_SESSION
变量中,或者将其传递给$_GET
或$_POST
。
答案 3 :(得分:0)
这不是范围问题,而是持久性问题。当您使用header ()
重定向时,您要求浏览器获取完全不同的页面,该页面执行完全不同的脚本。
您需要通过数据库,会话,$ _GET变量等手动持久或传递数据。