0

我正在用 php 编写登录页面,但在设置 $_SESSION 时遇到问题。我是 php 新手,我不知道我做错了什么。该脚本在本地主机上运行良好,但是当我将其推送到远程服务器时,它不起作用。可能是 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

4 回答 4

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'];
   }
于 2013-01-12T05:39:14.150 回答
1

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

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

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

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

于 2013-01-12T05:54:36.583 回答
0

你不应该使用:

session_start();

不是

start_session();

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

session_start() 的参考

于 2013-01-12T05:35:58.083 回答
0

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

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

于 2013-01-12T05:36:51.637 回答