Php 如何在用户注册后自动登录?

Php 如何在用户注册后自动登录?,php,authentication,session,registration,Php,Authentication,Session,Registration,我在编写注册后如何自动登录用户的代码时遇到问题。我使用的是epoch,当用户通过付款时,它会将他重定向到该站点,但他并没有登录。我已经使用window.location='www.site.com/members/?username={$member.username}'进行了重定向;它会将我重定向到URL中有正确用户名的页面,但用户未登录。我只是需要关于如何编写登录用户的逻辑的帮助。感谢您的帮助。这是我的密码 php(这里是成功注册后的用户重定向,这里我需要编写登录逻辑。目前我只是被重定向到登

我在编写注册后如何自动登录用户的代码时遇到问题。我使用的是epoch,当用户通过付款时,它会将他重定向到该站点,但他并没有登录。我已经使用window.location='www.site.com/members/?username={$member.username}'进行了重定向;它会将我重定向到URL中有正确用户名的页面,但用户未登录。我只是需要关于如何编写登录用户的逻辑的帮助。感谢您的帮助。这是我的密码

php(这里是成功注册后的用户重定向,这里我需要编写登录逻辑。目前我只是被重定向到登录页面。在elseif中,它将遵循该逻辑。)


custom_functions.php(这是我在网站上登录用户的登录函数)

函数登录\u函数(){
会话_start();
需要'connection.php';
$\u会话[“用户名错误”]=$username\u错误;
$\u会话[“密码错误”]=$password\u错误;
$v_username=$_POST['username'];
$v_password=$_POST['password'];
$username=验证($v_username);
$password=验证($v_password);
$memore=isset($_POST['memore']);
if(空($username))
{
$\u会话[“用户名错误”]=“请输入您的用户名!

”; 标题(“Location:login.php”); 退出(); } if(空($password)) { $\u会话[“密码错误”]=“请输入密码!

”; 标题(“Location:login.php”); 退出(); } 如果($username&&$password){ $sql=“从成员身份验证中选择*,其中用户名=:用户名”; $stmt=$pdo->prepare($sql); $stmt->bindValue(':username',$username); $stmt->execute(); $user=$stmt->fetch(PDO::fetch_ASSOC); $cryptpass=$user['cryptpass']; 如果($user==false){ $\u会话[“用户名错误”]=“用户不存在”

”; 标题(“Location:login.php”); 退出(); }elseif($用户){ $newpass=crypt($password,$cryptpass); 如果($cryptpass==$newpass){ $\u会话['loggedin']=TRUE; $\会话['username']=$username; 如果($memory==“on”){ setcookie(“记住”$username,time()+3600); } 标题('Location:login_success.php'); 退出(); }否则{ $\u会话[“密码错误”]=“密码不正确!

”; 标题(“Location:login.php”); 退出(); } } } }
login.php

<?php 

session_start(); 

?>
<!DOCTYPE HTML>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/login_assets/css/style.css">
<link href="https://fonts.googleapis.com/css?family=Raleway:300,400,500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/login_assets/css/media.css">
<script src="/login_assets/js/jquery.min.js"></script>
<script src="/login_assets/js/modernizr.custom.js"></script>
<!-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> -->

</head>

<div id="login_body">
<header class="clear hBlack">
    <div class="jLogo"><a href="/"><img src="/login_assets/images/logo.png" alt=""></a></div>
</header>
<div class="logArea clear">
    <form action="custom_functions.php" method="post" enctype="application/x-www-form-urlencoded">
    <div class="logbox">
    <div class="box clear">
        <h2>Members Area</h2>
        <div class="logTypes">
        <input type="text" name="username" class="logtextbox" placeholder="Username or email">
        <span class="text-danger"><?php if(isset($_SESSION['username_error'])){ echo $_SESSION["username_error"]; unset($_SESSION["username_error"]); }  ?></span>
        <input type="password" name="password" class="logtextbox" placeholder="Password"><br>
        <span class="text-danger"><?php if(isset($_SESSION['password_error'])){ echo $_SESSION["password_error"]; unset($_SESSION["password_error"]); }  ?></span>
        <!-- <input type="text" name="captcha" class="logtextbox" placeholder="Enter the code shown below"><br>
        <img style="margin: 0 auto;" src="captcha.php">
        <span class="text-danger"></span> -->
        <div style="text-align: center">Remember my login: <input name="remember" type="checkbox"></div>
        </div>
    </div>
    <input type="submit" value="submit" class="logBtn" name="submit">
    </div>
    </form>
    <div class="logtext1">

    </div>
    <div class="logtext2">

    </div>
</div>
</div>
<footer class="clear">

</footer>
</div>

</html>

成员区

记住我的登录名:
您的注册逻辑对我来说很好。标头检查用户以前是否登录过,这存储在会话变量中

if(!isset($_SESSION["loggedin"])) {
    header("Location: www.site.com/tour/login.php");
} elseif(isset($_GET["username"])) {
    login_function();
}

我不明白你为什么再次调用login\u函数。如果会话变量“loggedIn”为true,则表示用户已登录。为什么要再次调用登录函数。如果需要获取该用户的数据,则需要将用户id存储在会话变量中,并使用该id发出请求。

您的注册逻辑对我来说很好。标头检查用户以前是否登录过,这存储在会话变量中

if(!isset($_SESSION["loggedin"])) {
    header("Location: www.site.com/tour/login.php");
} elseif(isset($_GET["username"])) {
    login_function();
}

我不明白你为什么再次调用login\u函数。如果会话变量“loggedIn”为true,则表示用户已登录。为什么要再次调用登录函数。如果需要获取该用户的数据,则需要将用户id存储在会话变量中,并使用该id发出请求。

如果要在登录后自动登录,则注册和登录过程应如下所示

  • 用户注册完成后,设置
    $\u会话[“loggedin”]

  • 登录页面应检查是否设置了
    $\u会话[“loggedin”]
    ,如果设置为登录成功页面的标题



  • 注册完成后,您也可以进入登录成功页面,而无需绕过登录页面。

    如果您想在登录后自动登录,注册和登录过程应如下所示

  • 用户注册完成后,设置
    $\u会话[“loggedin”]

  • 登录页面应检查是否设置了
    $\u会话[“loggedin”]
    ,如果设置为登录成功页面的标题



  • 注册完成后,您也可以直接进入登录成功页面,而无需绕过登录页面。

    很好,使用该代码,我将被重定向到登录表单页面(此标题(“Location:www.site.com/tour/login.php”);这意味着用户未登录,我希望他关注registration@Marko我理解。如果他没有登录,他将被重定向到login.php。但是在登录之后,你想回到完全相同的页面吗?或者有什么问题?用户可以从登录表单成功登录,这不是问题所在。我只想在注册成功后(从epoch开始),自动注册的用户就可以登录到site@Marko好的,我明白了,所以注册后你想让它自动登录。不确定,如果这种方法是一种好方法,通常您将被重定向到登录并再次登录。但是如果你想这样做,你只需要在php中注册后设置会话变量。Epoch注册来自其他域。所以我在URL中传递了注册用户的用户名,以便能够获取它,现在基于此,我想完成登录。你能帮忙吗?很好,我现在被重定向到登录表单页面(这个标题(“Location:www.site.com/tour/login.php”);),这意味着该用户没有登录,我希望他在后面registration@Marko我理解。如果他是n
    if(!isset($_SESSION["loggedin"])) {
        header("Location: www.site.com/tour/login.php");
    } elseif(isset($_GET["username"])) {
        login_function();
    }