0

私の質問に言及する前に、まずログイン スクリプトをここに書き留めておきます。

マイログインページのスクリプト:-

<?php
include_once('core.inc.php'); 
if(loggedin())
{
header('Location:index.php');
} else {
include_once('connection.php');
if($_POST['parse']=="login")
    {
    if(isset($_POST['username']) && isset($_POST['password']))
        {
            $username=$_POST['username'];
            $password=$_POST['password'];
            if(!empty($username) && !empty($password))
            {
            $username=strip_tags($username);
            $username=mysql_real_escape_string($username);
            $password=strip_tags($password);
            $password=mysql_real_escape_string($password);
            $hash_password=md5($password); /* It will encrypt the password enterd by user in to 15 digit combination of character and number. Then the sql command will be generated to find the appropriate user according to their login details. It will search for the user details in the user table. */
            $query="SELECT `id` FROM `user` WHERE `Email`='".$username."' AND `Hash_password`='".$hash_password."' AND `Approved`=1";
            $query_run=mysql_query($query);
            $mysql_num_rows=mysql_num_rows($query_run);
            if($mysql_num_rows == 1)
                {
                $user_id=mysql_result($query_run,0,'id');
                $_SESSION['user_id']= $user_id; 
                header('Location:http://leadstool.net/profile/index.php');
                } else {
                        print "<script type=\"text/javascript\">";
                        print "alert('Email Id and Password Combination is wrong.')";
                        print "</script>";
                }
            }
        }
    }// loop for parse ends here
}// 1st condition ends here
?>

また、core.inc.php ファイルのスクリプトは次のとおりです。

<?php
ob_start();
include_once('connection.php');
session_start();
$current_file=$_SERVER['SCRIPT_NAME'];
if(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))
{
$http_referer=$_SERVER['HTTP_REFERER'];
}
function loggedin()
{
    if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
    {
    return true;
    } else {
    return false;
    }
}

function getfield($field)
{
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id']))
    {
    $query="SELECT `$field` FROM `user` WHERE `id`='".$_SESSION['user_id']."'";
    if($query_run=mysql_query($query))
        {
        if($query_result= mysql_result($query_run, 0,$field))
            {
            return $query_result;
            }
        }
    }

}
?>

まず、上記のコードのプログラム フローを説明します。
ステップ 1: ユーザーはログイン情報を入力します。メール ID とパスワードの組み合わせが一致すると、ユーザー セッションが作成されます。

ステップ-2: ユーザーのセッションを作成すると、ユーザーはすぐに自分のプロフィール ページにリダイレクトされます。

ステップ-3: ユーザーがログインしているので、メニューバーのホームボタンをクリックする場合。その後、ユーザーはプロファイル ページのみにリダイレクトされます。ユーザー セッションは既にアクティブ モードになっているためです。したがって、このユーザーはプロファイル ページのみにリダイレクトされる代わりに、ホームページのコンテンツを表示することはできません。

ただし、ここでの問題は、ユーザーが初めてログインした場合、セッションが適切に作成されないことです。そのため、ユーザーがそのホームボタンをクリックすると、ホーム ページにリダイレクトされます。しかし、それが起こるとは想定されていません。ユーザーは、プロファイル ページのみにリダイレクトされる必要があります。ホームページ スクリプトでは、ユーザー セッションの詳細を確認しているため、セッションがアクティブな場合、ユーザーはプロファイル ページにのみリダイレクトされます。

しかし、主な問題はここから始まります。同じユーザーが同じログイン情報でログインしようとしている場合です。その後、コードに問題はありません。つまり、1 人のユーザーが同時に 2 回ログインできる場合、コードに問題はありません。だから、今私はバグがどこにあるのか知りたかったのですか?

それで、ここに私の質問があります: -
Q1。私のスクリプトに何らかの問題が発生したのか、それともブラウザの互換性の問題なのか? Q2. どちらの場合でも、可能な解決策は何ですか?

私は問題を説明しようとしました。しかし、まだ何か足りない場合は、ウェブサイトhttp://www.leadstool.netにアクセスしてください。登録に成功したら、一度ログインして、メニュー バーの[ leadstool ] ボタンをクリックしてください。そこにバグが見つかると思います。

4

1 に答える 1

0

スクリプトに何らかのエラーがある可能性があります。ホームページのコードをアップロードしておけばよかったです。とにかく、可能な解決策を教えてください。

ホームページに次のコードが含まれているかどうかを確認してください。

    include_once('core.inc.php');         
    session_start();
    if(!loggedin())
    {
        header('Location:[your homepage url]');
    }

または次のコードを使用します。

    session_start();
    if(isset['user_id'])
    {
        header('Location:[your homepage url]');
    }
于 2013-02-20T20:52:00.240 に答える