Php 用户注册/登录?

Php 用户注册/登录?,php,mysql,session,login,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"])

我是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";
?>

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

// 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 />";
echo“电子邮件:
”;

这是最快的解决办法。显然,为了更彻底,您需要用电子邮件替换登录脚本中的所有“Username”或
$\u POST['Username']
,因为它是。

更改
标题(“Location:members.php”)
标题(“位置:http://www.php.net");
如果条件不可能,则需要在前两个中同时设置GET和POST信息。如果没有获取信息,您将看到表单,如果有获取信息,
$_POST['username']
将计算为true并执行die()。@baerbjoern,虽然它不是RESTfully正确的,但您只需将
?yourgetvariable=value
放在POST表单方法的末尾即可。@baerbjoern:您可以同时执行GET和POST操作。
echo "Email: <input name=\"username\" size=\"15\"><br />";