繁体   English   中英

PHP登录系统-通过电子邮件或用户名进行用户登录

[英]PHP Login System - Making user login via email or username

我想问一下如何使用仅一个功能通过电子邮件或用户名登录。 我已经尝试过此代码

    function loginemail($username,$password)
{
    $timestamp = time();
    $time = date("d/m/y h:i:s a", $timestamp);
    $sql = mysql_query("SELECT * FROM users WHERE username ='$username'");
    $sql = mysql_query("SELECT * FROM users WHERE email ='$username'");
    $row = mysql_fetch_assoc($sql);
    $maintenance = mysql_query("SELECT * FROM settings");
    $row2 = mysql_fetch_assoc($maintenance);
    $main = $row2['maintenance'];

if($main == 1)
{
    if($row['password'] == $password && $row['username'] == $username)
    {
        $query = mysql_query("INSERT INTO log (id,username,time,action) VALUES 

(NULL,'$username','$time','Login')");
        if(!$query)
        {
            echo "FAILED";
        }
        else
        {
        $_SESSION['username'] = $row['username'];
        header('Location: /dash');
        }
    }
    elseif($row['password'] == $password && $row['email'] == $username && $row['rank'] == 5)
    {
        $user = $row['username'];
        $_SESSION['username'] = $row['username'];
        $_SESSION['email'] = $row['email'];
        header('Location: /user/chooser');
    }
    else
    {
        header("Location: /index/error");
    }
}
else
{
    if($row['password'] == $password && $row['username'] == $username)
    {
        $query = mysql_query("INSERT INTO log (id,username,time,action) VALUES 

(NULL,'$username','$time','Login')");
        if(!$query)
        {
            echo "FAILED";
        }
        else
        {
        $_SESSION['username'] = $row['username'];
        header('Location: /dash');
        }
    }
    elseif($row['password'] == $password && $row['email'] == $username)
    {
        $user = $row['username'];
        $_SESSION['username'] = $row['username'];
        $_SESSION['email'] = $row['email'];
        header('Location: /user/chooser');
    }
    else
    {
        header("Location: /index/error");
    }
}
}

但这对于用户名部分无效。现在我已更改代码以使用php oop。 所以这是我当前的代码。

class User {

    public function check($uname,$passwd)
    {
            $p=md5($passwd);
            $run=mysql_query("SELECT * FROM users WHERE username='$uname'");
            $user_data = mysql_fetch_array($run);
            $row=mysql_num_rows($run);
            if ($row == 1)
            {
                $_SESSION['login'] = true;                                                  $_SESSION['username'] = $user_data['username'];
                header('Location: /dash');
            }
            else
            {
                return FALSE;
            }
    }

    public function logout()
    {
        $_SESSION['login'] = FALSE;
            session_destroy();
    }
}

改变这个

$sql = mysql_query("SELECT * FROM users WHERE username ='$username'");
$sql = mysql_query("SELECT * FROM users WHERE email ='$username'");
$row = mysql_fetch_assoc($sql);

$sql = mysql_query("SELECT * FROM users WHERE username ='$username' or email = '$username'");
$row = mysql_fetch_assoc($sql);

尝试这个:

$user = mysql_query("SELECT * FROM users WHERE (username = '$username' OR email = '$email') AND password = '$password'");

编辑

由于输入的登录名是用户名或电子邮件,

$user = mysql_query("SELECT * FROM users WHERE (username = '$login_name' OR email = '$login_name') AND password = '$password'");
<form action="login.php" method="post">

    Username* <br/><input type="text" name="login_username" /><br/>
    Password* <br/><input type="password" name="login_pass" /><br/>

    <br/>
    <input type="submit" value="submit" />

</form>

我这样登录。 和后端:

<?php
    $username = $_POST['login_username'];
    $pass = $_POST['login_pass'];

    define(MYSQL_HOST,"localhost");
    define(MYSQL_USER,"youruser");
    define(MYSQL_PASS, "yourpassword");

    include "classes/MySQL.class.php";


    $db = new MySQL();
    $db->Connect("localhost","youruser","yourpassword");
    $db->selectDb("testproject");

    if(!isset($_SESSION)) { session_start(); }

    $result = "SELECT * FROM `registration` WHERE `username` = '".$username."' and `pass` ='".md5($pass)."';";
    $db->Query($result) or trigger_error($db->Error());

    $row = $db->getRow();


    if(!empty($row))
    {
        $_SESSION['error_login']="You are a validated user.";
        header("Location: thx3.php");
    }
    else
    {
        $_SESSION['error_login']="Sorry, your credentials are not valid, Please try again.";
        header("Location: home.php");
    }

?>

希望对您有帮助。 当然,您必须进行更改,但这对我来说非常有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM