登录php无法正常工作

时间:2015-09-18 04:13:07

标签: php sql login

我有这组登录代码。当我输入正确的密码时,我将能够进入网页。但我不确定为什么,当我输入错误的密码时,我仍然可以进入网页。

我不确定错误在哪里。

这是我的PHP代码:

<?php

//define page title
$title = 'Sign In';

session_start();
include_once 'dbconnect.php';


if(isset($_SESSION['user'])!="")
{
 header("Location: home.php");
}
if(isset($_POST['btn-login']))
{

  $UserEmail = isset($_GET['UserEmail']) ? $_GET['UserEmail'] : '';

  $Password = isset($_GET['Password']) ? $_GET['Password'] : '';


 $result=mysql_query("SELECT * FROM tbl_user WHERE UserEmail='$UserEmail'");
 $row=mysql_fetch_array($res);
 if($row['Password']=md5($Password))
 {
  $_SESSION['user'] = $row['Password'];
  header("Location: home.php");
 }
 else
 {
  ?>
        <script>alert('wrong details');</script>
     <?php
     }

    }
    ?>

5 个答案:

答案 0 :(得分:0)

您没有检查用户密码,这就是为什么它允许您访问包含错误凭据的页面。

试试这个,

<?php

//define page title
$title = 'Sign In';

session_start();
include_once 'dbconnect.php';


if(isset($_SESSION['user'])!="")
{
 header("Location: home.php");
}
if(isset($_POST['btn-login']))
{

  $UserEmail = isset($_GET['UserEmail']) ? $_GET['UserEmail'] : '';

  $Password = isset($_GET['Password']) ? $_GET['Password'] : '';


 $result=mysql_query("SELECT * FROM tbl_user WHERE UserEmail='$UserEmail' and password='$Password'");
 $row=mysql_fetch_array($res);
 if($row['Password']=md5($Password))
 {
  $_SESSION['user'] = $row['Password'];
  header("Location: home.php");
 }
 else
 {
  ?>
        <script>alert('wrong details');</script>
     <?php
     }

    }
    ?>

答案 1 :(得分:0)

您正在发布表单,然后您会在$_POST而不是$_GET中获取变量。

$UserEmail = isset($_POST['UserEmail']) ? $_POST['UserEmail'] : '';

$Password = isset($_POST['Password']) ? $_POST['Password'] : '';

答案 2 :(得分:0)

用以下内容替换您的查询:

<?php
//define page title
$title = 'Sign In';
session_start();
include_once 'dbconnect.php';

if (isset($_SESSION['user']) != "") {
    header("Location: home.php");
}
if (isset($_POST['btn-login'])) {
    $UserEmail = isset($_GET['UserEmail']) ? $_GET['UserEmail'] : '';
    $Password = isset($_GET['Password']) ? $_GET['Password'] : '';
    $result = mysql_query("SELECT * FROM tbl_user WHERE UserEmail='$UserEmail' AND Password='" . md5($Password) . "'");
    $row = mysql_fetch_array($result);
    if (count($row) > 0) {
        $_SESSION['user'] = $row['Password'];
        header("Location: home.php");
    } else {
        ?>
        <script>alert('wrong details');</script>
        <?php
    }
}
?>

答案 3 :(得分:0)

我注意到的第一件事就是

if($row['Password']=md5($Password))

使用&#39; ==&#39; (双等)用于等式检查。单一等于分配

if($row['Password']==md5($Password))

答案 4 :(得分:0)

if(isset($_SESSION['user'])!="")
那个人也是无意义的。我几乎可以肯定它会永远过去因为&#34; false&#34;!=&#34;&#34;

所以将其改为

if(isset($_SESSION['user']) && !empty($_SESSION['user']))