2013-02-20 309 views
0

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

我的登录页面的脚本: -

<?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和密码组合匹配,则会创建用户会话。

第二步:现在,在为用户创建会话后,用户将立即重定向到他/她的个人资料页面。

第3步:由于用户已登录,因此他/她将单击菜单栏中的主页按钮。然后,用户将只能重定向到配置文件页面。由于用户会话已处于活动模式。因此,用户不被允许查看主页的内容,而不是该用户将被重定向回到简档页面。

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

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

所以,这里是我的问题是: -
Q1。无论我的脚本是否有问题,还是浏览器兼容性问题? Q2。无论哪种情况,可能的解决方案是什么?

我试图解释这个问题。但如果仍然我在这里失去了一些东西,然后请去网站http://www.leadstool.net。成功注册后,请尝试登录一次,然后单击菜单栏中的铅索盒按钮。我想你会发现那里的错误。

+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。请参阅[**红框**](http:// j。熔点/ Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 – insertusernamehere 2013-02-20 20:26:40

+0

好的.. thanx我会牢记:) – 2013-02-20 20:29:37

回答

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]'); 
    }