2016-02-01 66 views
2

我之前提出过关于允许在以管理员身份登录时打开admin.php网站的问题。这一切现在都有效,但是当我尝试以其他用户身份登录时,它会直接跳转到无效的用户名和密码页面。这里是我的数据库结构:登录后将管理员以外的用户重定向到主页

enter image description here

我输入了一些样本信息判断登录系统。 如果输入用户名:admin并输入密码:admin,则会转到admin.php页面,这非常棒。

如果我尝试输入用户名:Filip和密码:Filip,它只是出现无效的详细信息消息。

我希望它将所有剩余的用户转移到主页login_success.php

这里是PHP代码

<?php 

$hostname = 'hostname'; 
$dbname = 'dbname'; 
$username = 'username'; 
$password = 'password'; 

$con=mysql_connect($hostname,$username,$password) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

$myusername = $_POST['username']; 
$mypassword = $_POST['password']; 

$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 

$query = "SELECT * FROM Client_Information WHERE username='$myusername' and password='$mypassword'"; 
$result = mysql_query($query); 

if (!$result) { 
    echo '<script language="javascript">'; 
    echo 'alert("' . $myusername . '/' . $mypassword . '")'; 
    echo '</script>'; 
} 
    else { 
     $row = mysql_fetch_row($result); 
     $idClientValue = $row[0]; 
     if ($idClientValue == '47') { 
      header("Location: admin.php"); 
     } 
    } 

if($count==1){ 
    $seconds = 5 + time(); 
    setcookie(loggedin, date("F jS - g:i a"), $seconds); 
    header("location: login_success.php"); 
} 

else{ 
    echo '<div class="incorrect">- Incorrect username or password -</div>'; 
} 

?> 
+0

其中$ count已初始化 – jitendrapurohit

回答

1

你得到,因为你没有将0123定义无效细节您的代码中的变量。

变更块:

<? 

$count = mysql_num_rows($result); 

if ($count > 0) { 
    $row = mysql_fetch_row($result); 
    $idClientValue = $row[0]; 
    // if user login is admin than redirect to admin.php 
    if ($idClientValue == '47') { 
     header("Location: admin.php"); 
    } 
    else{ 
     // if not admin redirect login_success.php  
     $seconds = 5 + time(); 
     setcookie("loggedin", date("F jS - g:i a"), $seconds); 
     header("location: login_success.php"); 
    } 
} 
else{ 
echo '<script language="javascript">'; 
     echo 'alert("' . $myusername . '/' . $mypassword . '")'; 
     echo '</script>'; 
} 


?> 

侧面说明:

始终在您的代码添加error_reporting发展和分期不用于生产。

请不要使用mysql_*扩展名,因为它已被弃用,并且在PHP 7中不可用。您可以使用mysqli_*PDO

如果这些是您的生产凭证,请不要在任何地方共享。

+0

真棒,工作很好,谢谢你的回复:)并考虑到侧注: –

+0

其实,进一步检查,它允许每个人都要登录,但它应该只允许数据库上的用户登录 –

+0

@filip接受答案这将有助于其他同样面临同样问题的人 – devpro

1

您的查询应该只检查用户名。

如果用户名不存在,那么显示不正确的用户名/密码

如果用户名存在,则在一侧条件增加一个,如果条件检查密码

如果密码匹配,那么如果管理员添加检查用户角色然后重定向到ADMIN否则login_success

如果密码不匹配,则显示不正确的用户名/密码

+0

您介意为此提供代码吗?它会给我一些东西,视觉研究:) –

+0

在www.naveedramzan.com发送联系请求 –

1

您可以添加一个字段调用user_role并将角色分配给用户而不是使用静态主ID。

为前:

id username role 
1 admin  admin 
2 filip  normal 
3 xyz  normal 

因此,检查如果登录用户的角色是“admin”,而不是ID admin用户重定向到“admin.php的”等人“login_success.php”。

相关问题