4

これが私がすることです:

私のログインフォームは www.mysite.com/login.html にあります: (サブドメイン www!)

 function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'http://server.mysite.com/ajax/auth.php',
        dataType: 'json',
        async: false,
        cache: false,
        data: 'vardas='+userName+'&psw='+password,
        success: function (data) {
                {
                    window.location.replace('/main.html');
                }
        }
    })
    }

ここに私の ajax/auth.php があります:

header('Content-type: application/json');
header ("Access-Control-Allow-Origin: http://www.mysite.com");
header('Expires: ' . gmdate('r', 0));

session_start();
$_SESSION["ok"] = 1111; <- test value

main.php は次のとおりです。

<script>
  $(function() {
    $('#home').load('http://server.mysite.com/ajax/loader.php', function() {
    })
  });
</script>
<div id=home></div>

ここに私の ajax/loader.php があります:)

<?
    header ("Access-Control-Allow-Origin: http://www.mysite.com");
    header('Expires: ' . gmdate('r', 0));

    session_start();

    var_dump ($_SESSION); <---- OUTPUT IS (0) EMPTY!! Why ?
?>

なぜこれが機能しないのですか?私は常に $_SESSION を空にします。

4

4 に答える 4

2

session_start(); 出力を生成するための最初のものでなければなりません。あなたはあなたのheader()ものの下にそれを持っています。最初に行く必要があります。

ここで最初のメモを参照してください:http ://www.php.net/manual/en/function.session-start.php

于 2012-05-21T20:19:39.330 に答える
2

すべてのドメインが同じサーバー上にある場合は、session_startを呼び出す前に、これらの3行をどこでも使用してください

$session_name = session_name("somename");
ini_set('session.cookie_domain', '.mysite.com');
ini_set('session.save_path', 'C:\tmp');
session_start();
于 2012-06-18T12:43:00.793 に答える
0

auth.phpを呼び出してセッション変数を設定するために、ajaxリクエストを実行する認証を呼び出すことはありません。session_startを呼び出すhttp://server.mysite.com/ajax/loader.phpを.loadしますが、セッションがいっぱいになることのないように、どの時点でもauthenticate()を呼び出さないでください。

また、Access-Control-Allow-Originはまだ完全にはサポートされていないため、ブラウザによっては、クロスドメインリクエストをブロックしている可能性があります。

于 2012-05-21T20:20:26.693 に答える
0

login.html があり、ajax の実行後にこの main.php リダイレクト ページが表示される理由がわかりません。私は正しいですか?この場合、フォーム送信後にユーザーをリダイレクトし、サーバーがページをレンダリングする前に認証を検証するようにしないのはなぜでしょうか?

そうでない場合は、ajax で設定して現在のページでセッション データを呼び出すと、セッション データが有効にならないことに注意してください。それは間違いなくうまくいきません。

于 2012-06-01T16:08:08.813 に答える