服务器上的PHP会话问题,但本地主机上没有 [英] PHP Sessions issues while on server but no on localhost

查看:81
本文介绍了服务器上的PHP会话问题,但本地主机上没有的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过会话传递用户变量.它在localhost上可以正常工作,但是一旦在Web服务器上它就会做一些奇怪的事情.

I'm passing the user variable through sessions. It works fine on the localhost but once on the web server it does weird things.

登录后,会话变量应能正常工作.....直到您单击大约三页,然后突然变成POOF!

After logging in, the session variable works as should.....until you click on about three pages and it suddenly goes POOF!

注意"Welcome, jordan.",而不是左上角的"Welcome, .".

Notice the "Welcome, jordan." as opposed to the "Welcome, ." Also the top left corner.

会话功能: http://imageshack.us/photo/my-images/32/loggedins. png/

会话POOF! http://imageshack.us/photo/my-images/515/loggedinno. png/

登录/创建会话变量代码:

Login/Create session variable code:

<?php
        if (!isset($_SESSION['user']))
        {
        if (isset($_POST['user']))
        {
        $user = sanitizeString($_POST['user']);
        $pass = sanitizeString($_POST['pass']);
        if (preg_match($txtMatch,$user))
        {
        if ($user == "" || $pass == "")
        {
        $error = "Please enter all required fields";
        }
        else
        {
        $query = "SELECT * FROM gtmembers WHERE user='$user'";
        $result = queryMysql($query);
        $rank = mysql_result($result, 0, 'rank');
        if (!mysql_num_rows($result))
        {
        $error = "Username does not exist.";
        }
        else
        {
        $getPass = mysql_result($result, 0, 'pass');
        $salt = substr($getPass, 0, 64);
        $hash = $salt . $pass;
        for ($i = 0; $i < 100000; $i++) 
        {
        $hash = hash('sha256', $hash);
        }
        $hash = $salt . $hash;
        if ($hash == $getPass)
        {
        if ($rank != "Banned")
        {
        $userLow = strtolower($user);
        $_SESSION['user'] = $userLow;
        $_SESSION['rank'] = $rank;
        echo <<<_END
        <script type="text/javascript">
        window.location.href='index.php';
        </script>
        _END;
        echo "Successfully logged in. Click <a href='index.php'>here</a> to continue.";
        }

标题代码:

        <?php //gtheader.php
        session_start();
        include_once 'gtfunctions.php';
        $loggedIn = FALSE;

        if (isset($_SESSION['user']))
        {
        $user = $_SESSION['user'];
        if ($user) echo "Current User: $user<br />";
        else echo "Current User: None<br />";
        $rank = $_SESSION['rank'];
        $loggedIn = TRUE;
        echo "is set SESSION['user']? Yes";
        }
        else echo "is set SESSION['user']? No";

        echo "<div id='header'><a class='header' href='index.php'> <h1 id='headerTitle'>$appname</h1></a>";
        if ($loggedIn == TRUE)
        {
        $query = "SELECT * FROM gtmessages WHERE recip='$user' AND status='0'";
        $result = queryMysql($query);
        if (mysql_num_rows($result) == 0) $num = "";
        else $num = "[".mysql_num_rows($result)."]";
        if ($rank == 'Owner' || $rank == 'Admin')
        {
        echo "Welcome, <a class='header' href='gtmembers.php?view=$user'>$user</a><a     class='header' href='gtmessage.php'>$num</a>. [<a class='header'     href='gtlogout.php'>Logout</a>] | <a class='header' href='gtadmin.php'>Admin</a><br />";
        }
        else
        {
        echo "Welcome, <a class='header' href='gtmembers.php?view=$user'>$user</a><a     class='header' href='gtmessage.php'>$num</a>. [<a class='header'     href='gtlogout.php'>Logout</a>]<br />";
        }
        }
?>

推荐答案

已解决.

这里的问题是Host Gator注册全局变量.因此,由于我使用$ user,并且$ _SESSION ['user']被注册,因此它被覆盖.

The issue here is that Host Gator registers global variables. So since I use $user, and $_SESSION['user'] gets registered, it gets overwritten.

我通过将所有文件中的$ _SESSION ['user']更改为$ _SESSION ['myUser']

I fixed the issue by changing $_SESSION['user'] in all files to $_SESSION['myUser']

感谢您的帮助.

这篇关于服务器上的PHP会话问题,但本地主机上没有的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆