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