如何在php中包含函数后检索变量

问题描述 投票:-1回答:1

我已经使用include函数向页面添加了用户限制,但此操作清空了我的变量,因此在登录后,因此没有显示结果,如何在脚本中保留变量?我认为会话是这样的,但它不起作用。

<?php
$trim=$_POST['trim'];
$estu=$_POST['estu'];
session_start();
$_SESSION['trim'] = $trim;
$_SESSION['estu'] = $estu;

if($trim == "RJ") {
echo "<h2>Login required!</h2>";
include ("../admin/accesusers.php");
}

$trim = $_SESSION['trim'];
$estu = $_SESSION['estu'];
echo "Your choices are ".$trim." and ".$estu; 
?>

所以最后一个回声的输出是......你的选择是......因为当$trim == "RJ" oterwise结果好时,不会检索变量,例如你的选择是T1和3323

file accesusers.php:

<?php
$db = new mysqli('localhost','usr','pass','Dbase');
include_once("login.php");
$_auth = new auth($db); // Anything past here is logged in
$username = $_auth->getUsername();
?>

在login.php文件中,提到SESSION的唯一变量是这一个,可能是这个弄乱了吗?

define('LOGIN_SESSION_EXPIRED',-8);
....
LOGIN_SESSION_EXPIRED=>'<br /><h3>Your session is outdated!</h3>',
....
die($this->form(LOGIN_SESSION_EXPIRED,'signin'));
php variables session-variables
1个回答
0
投票

好的,我终于解决了。我已经意识到,只有当include()if内部时,变量才会丢失,并且$_SESSION必须从$_POST获得值,而不是从变量($trim)获得值来传播这个值;所以我这样做了一个解决方法:

文件1.php:

<?php
$trim = $_POST['trim'];
$estu = $_POST['estu'];
if($trim == 'RJ') {
        header( 'Location: 2.php' ) ;
        session_start();
$_SESSION['estu'] = $_POST['estu'];
$_SESSION['trim'] = $_POST['trim'];
} else {
echo "<p>Your choices are ".$trim." and ".$estu."</p>";
}
?>

文件2.php:

<?php
session_start();
$estu = $_SESSION['estu'];
$trim = $_SESSION['trim'];
echo "<h2>Login required!</h2>";
include ("../admin/accesusers.php");
echo "<p>Your choices are ".$trim." and ".$estu."</p>";
?>

所以现在的输出是“你的选择是RJ和3323”

© www.soinside.com 2019 - 2024. All rights reserved.