1

最近、自分のサイトを自分のウェブサイトのメイン ドメインに移動しました。

サイトにログインするとアカウント ページが表示されますが、更新したり ajax 呼び出しを行ったりするとセッションが失われ、ログアウトされます。アカウント ページに iframe があり、最近 SSL をインストールしました。

セッションが失われる理由はありますか? または、エラーの種類を見つける方法はありますか?

私のphp情報は次のとおりです。

session.auto_start  Off Off
session.bug_compat_42   On  On
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off

エラー報告を行ったときに発生するエラーは次のとおりです。

<b>Notice</b>:  Undefined index:  adminsess in <b>/home/onclick1/public_html/admin.php</b> on line <b>35</b><br />
<br />
<b>Notice</b>:  Undefined index:  secure in <b>/home/onclick1/public_html/admin.php</b> on line <b>36</b><br />
<br />

エラーを発生させるコードは単純です。

<?php 
session_start();
ini_set('error_reporting', E_ALL);
require "connectTo/db.php";

if(!isset($_SESSION['adminsess']) || !isset($_SESSION['secure']) ){
        //exit(); *comment out to give error*
    }

コードを調べたところ、インデックス ページに header() リダイレクトを追加したときにのみエラーが発生する (セッション データを保存できない) ように見えることがわかりました。ログインしたユーザーをリダイレクトするためにサイトにあるコードは次のとおりです。

リダイレクトヘッダーが使用されている場合..ループしてページをロードしません

<?php 
session_start();

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

//print_r($_SERVER);

//exit;
$TheIp=ip2long($_SERVER['REMOTE_ADDR']);
$ip= trim($TheIp);


include('mobile.php'); 
require "db.php";

$_SESSION['secureip'] = $ip;

if(isset($_SESSION['adminsess']))
    {
    $ipVistor = $ip;
    $ipVistorSalt= $ipVistor."28257esfgs";
    $ip=md5($ipVistorSalt);

    $userAgent=$_SERVER['HTTP_USER_AGENT'];
    $userAgentSalt=$userAgent."jk2hgkj22352523s";
    $agent=md5($userAgentSalt);

    if(isset($_SESSION['secure']) && $_SESSION['secure']==$ip)
    {

    if (isset($_SESSION['secure2']) && $_SESSION['secure2'] == $agent) 
    {    
        //header("Location: https://www.site.com/admin?Welcome");
        exit();
    } 
    }
    }

?>

ヘルプ/情報は素晴らしいでしょう。前もって感謝します !


これをページの一番上に置いても、index2.php をロードしようとしますが、ループし続けます...これはサーバーの問題ですか?? (index2 は単に index のコピーです)。

<?php 
header("Location: https://www.site.com/index2.php");
exit;
4

1 に答える 1

1

セッション名を変更してみてください。

session_name("foo");

またはランタイム構成で:

session.name foo

session_start()呼び出していることと、ajax呼び出しが別のドメイン上にないことを確認してください。

于 2012-06-06T00:20:51.110 に答える