0

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

4 に答える 4

1

それは単なる見落としかもしれませんが、コード内の関数が正しくありませstart_session()session_start()

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

それ以外に、あなたのphp.ini設定には、セッションが機能しない原因となるものは何もありません。これらの行を php.inierror_reporting = E_ALL | E_STRICTおよびdisplay_errors = On. これにより、できるだけ多くのエラー メッセージを表示できます。

最後に、Apache エラー ログをチェックして、意味のあるエラー メッセージが見つかるかどうかを確認します。Linux のデフォルトでは、/var/log/apache2/error.log または /var/log/httpd/error.log にあります。

于 2013-01-12T05:54:36.583 に答える
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 に答える
0

あなたが使用していないべきではありません:

session_start();

いいえ

start_session();

その関数が適切に呼び出されない場合、ブラウザーは実際にはセッション データを保存しません。

session_start() のリファレンス

于 2013-01-12T05:35:58.083 に答える
0

それはあなたのセッションの始まりでしょうか?

あなたはstart_session()を持っていますが、私はそれがsession_start()であるべきだと思います

于 2013-01-12T05:36:51.637 に答える