$ _SESSION未在远程服务器上设置

时间:2013-01-12 05:33:07

标签: php session

我在php中写了一个登录页面,我在设置$ _SESSION时遇到了麻烦。我是php的新手,我不知道我做错了什么。脚本在localhost上工作正常,但是当我将它推送到远程服务器时,它不起作用。它可能是php.ini文件吗?谢谢你的帮助。

         <?
         start_session();

            $dbc = mysqli_connect($host,$name,$dpassword,$database) or die('Error can not connect to corp database');
                $q="SELECT * FROM corporate WHERE (email='$theemail' AND password='$md5pass' AND activated = '1')";

                $result= mysqli_query($dbc,$q) or die("Error: ".mysqli_error($dbc));;

                if(@mysqli_num_rows($result) == 1)
                {
                    //get the entire row
                    $getrow = mysqli_fetch_array($result);
                    //also tired 
                    //$_SESSION = mysqli_fetch_array($result, MYSQLI_ASSOC);

                    //set session, but does not get set!
                    $_SESSION['lname'] = $getrow['lname'];
                    $_SESSION['fname'] = $getrow['fname'];


                        //set cookie for an hour
                        setcookie("lname", $getrow['lname'], time()+60*60,"/","http://www.limozoor.com",1);
                        setcookie("fname",$getrow['fname'],time()+60*60,"/","http://www.limozoor.com",1);

                        //if no header is not sent, send it.
                        if(!headers_sent())
                        {
                            header('Location: http://www.limozoor.com/login/homepage.php'); 
                            exit();
                        }//inner

                }//outter
         }
        ?>

的php.ini

          [Session]
          session.save_handler = files

          session.save_path = /tmp

          session.use_cookies = 1

          session.name = sid

          session.auto_start = 0

          session.cookie_lifetime = 0

          session.cookie_path = /

          session.cookie_domain =

          session.serialize_handler = php

          session.gc_divisor     = 100

          session.gc_maxlifetime = 1440

          session.bug_compat_42 = 1
          session.bug_compat_warn = 1

          session.referer_check =

          session.entropy_length = 0

          session.entropy_file =

          session.cache_limiter = nocache

          session.cache_expire = 180

          session.use_trans_sid = 1

4 个答案:

答案 0 :(得分:1)

尝试更改这些代码段

 start_session();

session_start();

$_SESSION['lname'] = $getrow['lname'];
$_SESSION['fname'] = $getrow['fname'];

进入

if($getrow['lname']!='' && $getrow['fname']!=''){
   $_SESSION['lname'] = $getrow['lname'];
   $_SESSION['fname'] = $getrow['fname'];
   }

答案 1 :(得分:1)

这可能只是一种疏忽,但代码中的功能不正确:它不应该是start_session()而是session_start()

http://php.net/manual/en/function.session-start.php

除此之外,我在php.ini设置中没有看到任何可能导致会话无法工作的内容。 您应该将这些行放在php.ini error_reporting = E_ALL | E_STRICTdisplay_errors = On中。它将允许您查看尽可能多的错误消息。

最后,您可以检查apache错误日志,看看是否可以找到任何有意义的错误消息。默认情况下,它位于/var/log/apache2/error.log或/var/log/httpd/error.log

答案 2 :(得分:0)

你不应该使用:

session_start();

不是

start_session();

如果没有正确调用该功能,您的浏览器实际上不会存储任何会话数据。

Reference for session_start()

答案 3 :(得分:0)

这可能是你的会话开始吗?

你有start_session(),但我认为它应该是session_start()