我创建了一个包含电子邮件和密码的登录表单,但我希望它在下一页显示用户名而不是电子邮件,例如欢迎“samuel”。我如何申请会话。
我试图创建会话名称,但它不接受。我可以做什么才能显示一个完整的用户名,而不必在登录表单上包含用户名输入文本框
session_start();
如果(isset($_POST['登录'])){
$email = mysqli_real_escape_string($db,$_POST['email']);
$password =
mysqli_real_escape_string($db,$_POST['password']);
$mobile = mysqli_real_escape_string($db,$_POST['mobile']);
if (empty($email or $mobile)) {
array_push($errors, "Email Or mobile number is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM farmers WHERE (email='$email' OR
mobile='$mobile') AND password='$password'";
$result = mysqli_query($db,$query);
if(mysqli_num_rows($result)==1){
$_SESSION['email'] = $email;
$email=$_SESSION['username'];
$_SESSION['sucess'] = "You are now logged in";
header('location: account_activation.php');//redirect to
survey
}else{
array_push($errors, "Wrong email/Mobile number or
Password combination");
}
}
}
//account_activation.php
<?php include('server.php');
if (empty($_SESSION['username'])) {
header('location: login.php');
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1,
shrink-to-fit=no">
<title>Account Activation</title>
<link rel="stylesheet"
</style>
<link rel="stylesheet" type="text/css" href="survey.css">
</head>
<body>
<div class="header">
<h2>Account activation</h2>
</div>
<div class="content">
<?php if (isset($_SESSION['success'])):?>
<div class="error success">
<h3>
<?php
echo $_SESSION['success'];
unset($_SESSION['success']);
?>
</h3>
</div>
<?php endif ?>
<?php if (isset($_SESSION["username"])): ?>
<p>Welcome <strong><?php echo $_SESSION['username']; ?></strong>
</p>
<p><a href="survey.php?logout='1'" style="color: red;">LogOut</a>
</p>
<?php endif ?>
它看起来像这样:
<?php
session_start();
if (isset($_POST['login'])) {
$email = mysqli_real_escape_string($db, $_POST['email']);
$password = mysqli_real_escape_string($db, $_POST['password']);
$mobile = mysqli_real_escape_string($db, $_POST['mobile']);
if (empty($email) || empty($mobile)) {
array_push($errors, "Email Or mobile number is required");
}
if (empty($password)) {
array_push($errors, "Password is required");
}
if (count($errors) == 0) {
$password = md5($password);
$query = "SELECT * FROM farmers WHERE (email='$email' OR mobile='$mobile') AND password='$password'";
$result = mysqli_query($db, $query);
if (mysqli_num_rows($result) == 1) {
$_SESSION['email'] = $result['email'];
$_SESSION['username'] = $result['username'];
$_SESSION['loggedin'] = "1";
header('location: account_activation.php'); //redirect to survey
} else {
array_push($errors, "Wrong email/Mobile number or Password combination");
}
}
}
?>
//account_activation.php
<?php
include ('server.php');
if ($_SESSION['loggedin'] != "1") {
header('location: login.php');
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta name="description" content=""/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial- scale=1, shrink-to-fit=no"/>
<title>Account Activation</title>
<link rel="stylesheet" type="text/css" href="survey.css"/>
</head>
<body>
<div class="header">
<h2>Account activation</h2>
</div>
<div class="content">
<?php
if (isset($_SESSION['loggedin'])):
?>
<div class="error success">
<h3>You're logged in</h3>
</div>
<?php
endif;
?>
<?php
if (isset($_SESSION["username"])):
?>
<p>Welcome <strong><?= $_SESSION['username']; ?></strong> </p>
<p><a href="survey.php?logout='1'" style="color: red;">LogOut</a> </p>
<?php
endif;
?>
要从表中检索用户名,您需要使用: $result['username']; (假设农民表中有一个名为 username 的列。)
要回显用户名,请使用短标签(需要在 php.ini 中启用)
不要忘记在标头重定向后 exit() 。黑客可以阻止重定向请求并查看下面的页面。始终阻止执行。由于服务器未加载完整页面,因此速度也更快。
我还注意到一个 PHP 错误
if (empty($email or $mobile))
应该
if (empty($email) || empty($mobile))
您也有一些 HTML 错误。自封闭的 HTML 标签应该像这样封闭:
<meta name="description" content=""/>
注意末尾的 / 。
最后一个评论......你的身份是可怕的......这是一个非常糟糕的习惯。你显然是从编码开始的,你真的应该付出一些努力。
你的这个问题可以通过谷歌搜索“如何使用 mysqli_query() 从 MySQL 检索数据”来解决。
Stack 不是我们为您工作的网站。如果您发布问题,请确保您展示了您尝试过的内容以及问题所在。不提供您尝试的代码的“您如何执行此操作”不符合本网站的要求。无论如何,祝你旅途愉快!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句