好的我有一个导航栏链接,点击后会转到 language.php 。
我的导航栏代码,位于单独的视图文件夹views/header/header2.php
。
<?php
$_SESSION['from'] = $_SERVER['REQUEST_URI'];
?>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation" style="position:top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" class="sr-only"><img src="images/dp.png"></button>
<a class="navbar-brand" href="index.php">
<img src="views/images/cp.png" title="###.###" alt="logo" width="90px" height="48px" style="padding-top:2px"></a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li><a href="profile.php?id=<?php echo $_SESSION['user_id'] ?>"><span class="glyphicon glyphicon-user" ></span> <?php echo HEADER_PAGE; ?></a></li>
<li><a href="search.php"><span class="glyphicon glyphicon-search"></span> <?php echo HEADER_SEARCH; ?></a></li>
<li><a href="post.php"><span class="glyphicon glyphicon-plus"></span> <?php echo HEADER_POST; ?></a></li>
<li><a href="community.php"><span class="glyphicon glyphicon-edit"></span> <?php echo HEADER_COMMUNITY; ?></a></li>
<li><a href="edit.php"><span class="glyphicon glyphicon-cog"></span> <?php echo HEADER_EDIT; ?></a></li>
<li><a href="language.php"><span class="glyphicon glyphicon-flag"></span> <?php echo HEADER_LANGUAGE; ?></a></li>
<li style="background-color:white"><a style="color:black" href="index.php?logout"><?php echo WORDING_LOGOUT; ?></a></li>
</ul>
</div>
<!-- Collapse -->
</div>
</nav>
我的language.php代码,位于主目录中。
<?php
session_start();
if(isset($_SESSION['lang'])){
$from = $_SESSION['from'];
$langSession = $_SESSION['lang'];
if($langSession == "th"){
$_SESSION['lang'] = "en";
//header('Location:http://www.###.###'.$from);
echo $from;
} elseif ($langSession == "en"){
$_SESSION['lang'] = "th";
//header('Location:http://www.###.###'.$from);
echo $from;
}
if(!(isset($langSession))){
$_SESSION['lang'] = "en";
//header('Location:http://www.###.###'.$from);
echo $from;
}
}
?>
问题出在我的language.php文件中:
我注释了标题(位置:&#34; www。###。###&#34;。$ from)并使用echo $from ($from = $_SESSION['from']
(为了找到变量正在读取的内容)一旦我&# 39; m location.php
之前redirect. $from
读为3
。当我在location.php执行之前检查时,index.php
显示$ from为/index.php
这是正确的。
问题:点击language.php
的链接后,$from
会更改为 3 整数。
使用header()
它会将我发送给http://www.###.###3
(数字3来自另一个会话变量用户ID $_SESSION['id']
,它来自{{1}数组中的下一个索引变量)。
我尝试使用其他用户登录,并根据该用户的ID更改了号码,以便确认以下$_SESSION
变量正在覆盖之前的$_SESSION
变量。我不知道为什么会这样做并更改$_SESSION['from']
变量。
现在它正在处理除index.php
以外的所有其他页面。
我的index.php
<?php
ob_start();
// check for minimum PHP version
if (version_compare(PHP_VERSION, '5.3.7', '<')) {
exit('Sorry, this script does not run on a PHP version smaller than 5.3.7 !');
} else if (version_compare(PHP_VERSION, '5.5.0', '<')) {
// if you are using PHP 5.3 or PHP 5.4 you have to include the password_api_compatibility_library.php
// (this library adds the PHP 5.5 password hashing functions to older versions of PHP)
require_once('libraries/password_compatibility_library.php');
}
// include the config
require_once('config/db/config.php');
// include translation
session_start();
if(isset($_SESSION['lang'])){
$lang = $_SESSION['lang'];
} elseif(!(isset($_SESSION['lang']))) {
$_SESSION['lang'] = "en";
$lang = $_SESSION['lang'];
}
$_SESSION['from'] = $_SERVER['REQUEST_URI'];
require_once("translations/$lang.php");
// include the PHPMailer library
require_once('libraries/PHPMailer.php');
// load the login class
require_once('classes/Login.php');
// create a login object. when this object is created, it will do all login/logout stuff automatically
// so this single line handles the entire login process.
$login = new Login();
// ... ask if we are logged in here:
if ($login->isUserLoggedIn() == true){
// the user is logged in. you can do whatever you want here.
// for demonstration purposes, we simply show the "you are logged in" view.
include("views/logged_in.php");
} else {
// the user is not logged in. you can do whatever you want here.
// for demonstration purposes, we simply show the "you are not logged in" view.
include("views/landing.php");
}
PS。我通过 .htaccess
关闭了注册的全局广告非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
我通过将$ _SESSION [&#39;]从&#39;重命名为$ _SESSION [&#39; link&#39;]来修复此问题,并且它再次正常工作。我假设$ _SESSION [&#39;来自&#39;]试图通过别的东西设置。我浏览了所有涉及这些操作的代码,但没有任何内容。任何人都有解释为什么它将$ _SESSION [&#39;从&#39;]的值更改为$ _SESSION [&#39; user_id&#39;]的值?
在$ from = $ _SESSION [&#39; from&#39;]中,然后为其分配$ _SESSION [&#39; user_id&#39;] ...
的值