用户注册/登录?

时间:2014-03-06 23:52:16

标签: php mysql session login

我是PHP新手,login.php让您使用您的用户名而不是您的电子邮件。如何通过电子邮件,密码代替他们使用用户名和密码登录用户登录的位置。

的login.php

<?php
session_start();
// Header file
require_once "views/template/header.php"; 

if ($_GET["op"] == "login")
{
if (!$_POST["username"] || !$_POST["password"])
{
die("You need to provide your e-mail and password.");
}

// Create query
$q = "SELECT * FROM `users` "
."WHERE `username`='".$_POST["username"]."' "
."AND `password`=PASSWORD('".$_POST["password"]."') "
."LIMIT 1";
// Run query
$r = mysql_query($q);

if ( $obj = @mysql_fetch_object($r) )
{
// Login good, create session variables
$_SESSION["valid_id"] = $obj->id;
$_SESSION["valid_user"] = $_POST["username"];
$_SESSION["valid_time"] = time();

// Redirect to member page
Header("Location: members.php");
}
else
{
// Login not successful
die("Sorry, could not log you in. Wrong login information.");
}
}
else
{
 //If all went right the Web form appears and users can log in
 echo "<form action=\"?op=login\" method=\"POST\">";
echo "Username: <input name=\"username\" size=\"15\"><br />";
echo "Password: <input type=\"password\" name=\"password\" size=\"8\"><br />";
echo "<input type=\"submit\" value=\"Login\">";
echo "</form>";
echo "Don't have account <a href='register.php'>create account now!</a>";
}
require_once "views/template/footer.php";
?>

Register.php

     <?php
    // dbConfig.php is a file that contains your
    // database connection information. This
    // tutorial assumes a connection is made from
    // this existing file.
        require_once "views/template/header.php"; 

        //Input vaildation and the dbase code
    if ( $_GET["op"] == "reg" )
        {
        $bInputFlag = false;
        foreach ( $_POST as $field )
        {
        if ($field == "")
      {
      $bInputFlag = false;
      }
        else
      {
      $bInputFlag = true;
      }
        }
    // If we had problems with the input, exit with error
    if ($bInputFlag == false)
        {
        die( "Problem with your registration info. "
      ."Please go back and try again.");
        }
      $profile=$_POST['profilename'];
      $password=$_POST['password'];
      $email=$_POST['email'];
      $fname=$_POST['firstname'];
      $lname=$_POST['lastname'];
    // Fields are clear, add user to database
    //  Setup query
    $q = "INSERT INTO users (`profilename`,`password`,`email`,`firstname`,`lastname`) 
          VALUES ('$profile','$password','$email','$fname','$lname')";
    //  Run query
    $r = mysql_query($q);

    // Make sure query inserted user successfully
    if ( !mysql_insert_id() )
        {
        die("Error: User not added to database.");
        }
    else
        {
        // Redirect to thank you page.
        Header("Location: register.php?op=thanks");
        }
    } // end if


     //The thank you page
    elseif ( $_GET["op"] == "thanks" )
    {
    echo "<h2>Thanks for registering!</h2>";
    }

    //The web form for input ability
    else
    {
    echo "<form action=\"?op=reg\" method=\"POST\">\n";
    echo "Profile Name: <input name=\"profilename\" MAXLENGTH=\"16\"><br />\n";
    echo "Password: <input type=\"password\" name=\"password\" MAXLENGTH=\"16\"><br />\n";
    echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n";
    echo "First Name: <input name=\"firstname\" MAXLENGTH=\"25\"><br />\n";
    echo "Last Name: <input name=\"lastname\" MAXLENGTH=\"25\"><br />\n";
    echo "<input value='Submit' type=\"submit\">\n";
    echo "</form>\n";
    }
    // EOF
    require_once "views/template/footer.php";
?>

1 个答案:

答案 0 :(得分:1)

只需查找电子邮件而不是用户名:

// Create query
$q = "SELECT * FROM `users` "
."WHERE `email`='".$_POST["username"]."' "
."AND `password`=PASSWORD('".$_POST["password"]."') "
."LIMIT 1";

并更改表单标签:

echo "Email: <input name=\"username\" size=\"15\"><br />";

这是最快的解决方案。显然,为了更加彻底,您需要使用电子邮件替换登录脚本中的所有“用户名”或$_POST['username']实例,并you should stop using the mysql_* library,因为它是deprecated and soon to be removed