0

PHP 応答の問題に直面しています。ユーザーのログを確認するために、3 秒の遅延で Ajax を使用しました。ユーザー アカウントが 2 人のユーザーで同時に使用されている場合は、1 人をキックする必要があります。セッションと等しい場合、dbでログIDを追跡していました。問題は、自分のアカウントを使用している他のユーザーがいない場合でも、一部のユーザーがキックされていることです。クエリステートメントを試してみましprint_rたが、異なる値を返しています。他のユーザーへの応答である可能性があります。

PHP 応答に IIS サーバーと FastCGI を使用しています。

誰かがこれがどのように可能か教えて、この問題を解決するためのアイデアを教えてもらえますか? ありがとう。

コードの一部を次に示します。

Ajax を使用して DB のログを確認する:

public function CheckLogStatus( $name, $email, $sess_code ) { 

    $qry = "Select log from $this->tablename where name='$name' and email='$email'";
    //when I print this statement it returns different values of $name and $email

    $result = mysql_query( $qry ) or die(mysql_error()); 

    if( !$selResult = mysql_fetch_array($result) ) {
        return false;
    }

    if(!isset($_SESSION)) {
        session_start();
    }

    if( !isset( $selResult['log'] ) && $selResult['log'] != '' ) {
        if( $selResult['log'] != $sess_code ) {
            //$_SESSION['LOGS'] = 'USED';
            return false;
        }
    }

    return true;
}
4

1 に答える 1

0
<?php
session_start();
$_SESSION['LOG'] = $log;
setcookie("Log",$log,time()*24*60*60); //expires after 24hrs
?>

関数 CheckLogStatus は上記と同じです。

<?php
public function CheckLogStatus( $name, $email, $sess_code ){
$qry = "Select log from $this->tablename where name='$name' and email='$email'";
$result = mysql_query( $qry ) or die(mysql_error());
if( !$selResult = mysql_fetch_array($result) ){
return false;
}
if(!isset($_SESSION)){ session_start(); }
if( !isset( $selResult['log'] ) && $selResult['log'] != '' ){ 

         if( $selResult['log'] != $sess_code ) {
    return false;
}
}

return true;
}
?>

しかし、通り過ぎる間、

<?php
CheckLogStatus( "Myname", "contact@email.com", $_COOKIE['Log'] );
?>
于 2013-04-04T23:47:55.650 に答える