0

ユーザーがセッションを持っているかどうかをサーバー側 (keep.php) でチェックする次の JavaScript を実行しています。スクリプトはすべてのページで onload を実行しています: handler.js

var server = location.host;
var url = "http://" + server + "/MyHome2/php/";
var page = "keep.php";


document.onload = checkAuth();


function checkAuth()
{
var xmlhttp;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        var response = xmlhttp.responseText;
        if (response != "")
        {
            document.getElementById("linkSign").innerHTML = response + "|" ;

        }
        else
            document.getElementById("linkSign").innerHTML =  "Sign-in|" ;

    }
}

xmlhttp.open("POST",url + page,true);
xmlhttp.send();}

セッションをエコーバックするサーバー側の keep.php は次のとおりです。

<?php


     session_start();

    if (isset($_SESSION['name']))
    {
        echo $_SESSION['name'];
    }

?>

このスクリプトは、各 html ページの冒頭で実行され、ユーザーがセッションを持っているかどうかを確認し、セッションがある場合は彼を怒らせます。このスクリプトが私の他のスクリプトを台無しにしているという問題! 以前は機能していましたが、この handler.js なしで機能しています

たとえば、ユーザーが資格情報を送信しようとすると、ユーザーがログインするログイン スクリプトが機能しません。

var server = location.host;
var url = "http://" + server + "/MyHome2/php/";
var urlmain = "http://" + server + "/MyHome2/index.html";
var page = "authentication.php";


function loginUser(){
var str = "usr=" + encodeURIComponent(document.getElementById("user").value) + "&pwd=" + encodeURIComponent(document.getElementById("password").value);
checkUserExistance(str,str.length);}



function checkUserExistance(data,size){

var xmlhttp;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        var response = xmlhttp.responseText;
        responseHandler(response);
    }
}

xmlhttp.open("POST",url + page,true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",size);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(data);}

各ページの単純なセッション チェック onload が mt other スクリプトの実行を妨げているのはなぜですか?!

4

1 に答える 1

0

さて、間違いを見つけました:)明らかに、スクリプトは異なるファイルにありますが、同じスコープと見なされます。

同じ名前のグローバル変数がありますが、同じ html ページからそれらのスクリプトを参照する場合、これはありません。

于 2013-07-03T11:32:59.650 に答える