PHP登录脚本问题

时间:2013-02-20 20:21:48

标签: php mysql

在提到我的问题之前,我先在这里写下我的登录脚本。

我的登录页面脚本: -

<?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:由于用户已登录,因此他/她将点击菜单栏中的主页按钮。然后,用户将仅被重定向回配置文件页面。由于用户会话已处于活动模式。因此,不允许用户查看主页的内容,而不是仅将该用户重定向回配置文件页面。

但问题是,如果用户第一次登录他/她的会话未正确创建。因此,一旦用户点击 主页 按钮,他/她就会被重定向回主页。但它不应该发生。用户必须仅重定向回配置文件页面。因为,在主页脚本中,我正在检查用户会话详细信息,如果会话处于活动状态,则用户将仅被重定向回配置文件页面。

但是主要问题从这里开始,如果同一个用户尝试使用相同的登录详细信息进行登录。然后代码没有问题。这意味着,如果允许单个用户同时登录两次,则代码没有问题。那么,现在我想知道bug在哪里?

所以,我的问题是: - Q1。我的脚本是否出现问题或者是浏览器兼容性问题? Q2。在任何一种情况下,可能的解决方案是什么?

我试图解释这个问题。但如果我仍然遗漏了一些内容,请访问网站 http://www.leadstool.net 。注册成功后,尝试登录一次,然后单击菜单栏中的 leadstool 按钮。我猜你会发现那里的虫子。

1 个答案:

答案 0 :(得分: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]');
    }