用户无效登录

时间:2011-11-16 05:28:07

标签: php

我正在创建自己的网站,只是为了获得一些经验。我已经工作了3天,而且我可以注册并登录。

登录时,如果在数据库中找不到用户名和密码的组合,我的代码会显示一条错误消息,告诉用户他没有注册,或者他输入了错误的用户电子邮件或密码

但是,消息显示在新页面中,而不是登录页面。

我在线查看了一些教程,但没有找到合适的解释。有人可以给我一些建议吗?

我正在使用PHP进行数据库连接。

4 个答案:

答案 0 :(得分:2)

我刚输入一个非常基本的例子:

<?php
//login.php

$msg = '';  //to store error messages

//check whether the user is submitting a form
if($_SERVER['REQUEST_METHOD'] == 'POST')    //check if form being submitted via HTTP POST
{
    //validate the POST variables submitted (ie. username and password)

    //check the database for a match
    if($matchfound == TRUE) //if found
    {
        //assign session variables and other user datas

        //then redirect to the home page, since the user had successfully logged in
        header('Location: index.php');
    }
    else
    {
        $msg = 'Error. No match found !';   //assign an error message

        include('login_html.php');  //include the html code(ie. to display the login form and other html tags)
    }
}
else    //if user has not submitted the form, just display the html form
{
    include('login_html.php');
}

//END of login.php
?>

login_html.php:

<html>
  <body>
<?php if(!empty($msg)) echo $msg; ?> <!-- Display error message if any -->
<form action="login.php" method="post">
  <input name = "username" type="text" />
  <input name = "password" type="password" />

  <input name = "submit" type="submit" value="Submit" />
</form>
</body>
</html>

这不是完整的代码。但我刚刚创建它,让你了解如何做到这一点。 :)

祝你好运

答案 1 :(得分:1)

您的初始表单标记应如下所示:<form action="" method="post">。空的“action”属性将使页面回发给自己。只需检查$ _POST的用户名和密码,以确定是测试匹配还是只显示表单。

请务必填写您的密码并清理您的输入!

答案 2 :(得分:0)

你可以在不进入新页面的情况下完成。

   <?php session_start(); ?>
   <?php

   if(isset($_POST) && isset ($_POST["admin_login"])){
        $user_data_row = null;
        $sql="SELECT * FROM table_name WHERE <table_name.field name>='".mysql_real_escape_string($_POST['email'])."'
            and <table_name.field name='".mysql_real_escape_string($_POST['password'])."'
           ;
        $result=mysql_query($sql);
        $user_data_row=mysql_fetch_assoc($result);
        if(is_array($user_data_row)){
            $_SESSION['user_id'] = $user_data_row['id'];
            header("Location: <your page name>");
        }else{
            $_SESSION['message'] = "Valid email and password required";

        }
    }
 ?>



<?php if(isset($_SESSION['message'])){
     echo "<li>{$message}</li>";

 ?>

 <form  action="" method="post"  id="customForm">
               <label>Email:</label>
               <input type="text" id="email" name="email">
               <label>Password:</label>
               <input type="password" id="password" name="password">
                <input type="submit" value="Login" id="send" name="admin_login">
        </form>

    may be its helps you....

答案 3 :(得分:-1)

基本上您需要做的是将表单发布到同一页面。

完成后,只需检查$ _POST:if($_SERVER['REQUEST_METHOD'] == 'POST')

如果是帖子,请检查用户名和密码,然后显示错误或重定向到登录页面。在此之后,显示登录表单。

所以,如果这是一个错误,他们将得到错误,然后是登录表单。如果没有发布,他们只会获得登录表单,如果是有效登录,他们将在显示登录表单之前被重定向到正确的页面。