if(!isset($_SESSION['username'])) 导致用户从 verify_login_form.php 重定向回 index.php

2024-03-03

我的网站上有一个登录系统,它将用户从 index.php 带到 verify_login_form.php ,然后,如果电子邮件/用户名组合与帐户匹配,它们就会被带到 home.php 。我遇到的问题是我有

if(!isset($_SESSION['username'])) {


header('Location: index.php');

}

在 home.php 上,以避免人们只输入 websitename.com/home.php 而不登录/注册。问题是,用户使用他们的电子邮件和密码登录,然后被带到 home.php ,所以他们不必输入他们的用户名。我怎样才能获得具有相同电子邮件和密码的帐户的用户名?

这是index.php

<!DOCTYPE html>
<?php

session_start();

if(isset($_SESSION['username'])) {

header("Location: home.php");

$_SESSION["success"] = "You are now logged in";

}


?>
<html>

<head>


</head>


<body>


<form action="verify_registration_form.php" method="post">
<br>
<input type="username" id="user_name" name="user_name" placeholder="Username" required>
<br><br><br><br><input type="password" id="user_pass_word" name="user_pass_word" placeholder="Password" required>
 <br><br><br><br><input type="email" id="user_email" name="user_email" placeholder="Email" required>
<br><br><br><br><input type="submit" class="submit_registration_form_button" id="submit_registration_form_button" name="submit_registration_form_button" value="Sign Up">

</form>

<form action="verify_login_form.php" method="post">

<input type="username" id="user_email_login" name="user_email_login" placeholder="Email" required>
<input type="password" id="user_pass_word_login" name="user_pass_word_login" placeholder="Password" required>
<input type="submit" class="submit_user_login_form_button" id="submit_user_login_form_button" name="submit_registration_form_button" value="Log In">

 </form>


 </body>


 </html>

这是verify_login_form.php

<!DOCTYPE html>
<?php

session_start();


if($_SERVER['REQUEST_METHOD'] != 'POST') {

header("Location: index.php");

}else{

$connection = mysqli_connect("localhost", "root", "", "websiteusers");

if(!$connection) {

echo "Could not connect to MYSQL database";

}else{
echo "Sucessfully connected to MYSQL database";
$connection = mysqli_connect("localhost", "root", "", "websiteusers");
$useremail = mysqli_real_escape_string($connection, 
$_POST["user_email_login"]);
$userpassword = mysqli_real_escape_string($connection, 
$_POST["user_pass_word_login"]);
$query = "SELECT * FROM websiteusers WHERE UserEmail='$useremail'";
$results = mysqli_query($connection, $query);
if(mysqli_num_rows($results) == 1) {


$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header("Location: home.php");
}else{

echo "Email/Username combination is incorrect";

}



}



}






?>
<html>

<head>


</head>

<body>



</body>



 </html>

这是 home.php

<!DOCTYPE html>
<?php

session_start();

if(!isset($_SESSION['username'])) {


header('Location: index.php');

}



?>
<html>

<head>


</head>


<body>

<?php

echo $_SESSION["success"];


 ?>

 <?php if (isset($_SESSION['username'])) : ?>

 <p>Welcome <?php echo $_SESSION['username']; ?>


 <br><br>

 <form action="logout.php" method="post">
 <input type="submit" id="logoutbutton" name="logoutbutton" class="logoutbutton" value="Logout">
  </form>

  <?php  endif ?>

  </body>


   </html>

您所要做的就是创建一个用于登录的会话。所以这就是技巧。每次从索引移动到主页时,都应该检查登录会话是否存在。如果没有,请要求用户登录。

检查用户是否登录

<?PHP
    session_start();

    if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) {

        header ("Location: login.php");
    }
?>

同样,我们首先启动一个 PHP 会话。接下来的 IF 语句相当复杂。但我们正在测试两件事:是否设置了名为“登录”的用户会话?这个会话是一个空字符串吗?

!(isset($_SESSION['login']) && $_SESSION['login'] != '')

第一部分是这样的:

!(isset($_SESSION['login'])

要检查会话是否已设置,您可以使用内置函数 isset。我们在它之前使用 NOT 运算符。 (NOT 运算符是感叹号。)所以我们说“如果会话未设置”。会话可能已设置,但其中可能有“1”。我们还需要检查名为“login”的会话是否为非空字符串。如果这两件事都失败了,那么我们可以重定向到 login.php 页面,因为这意味着用户尚未登录。

对于您网站中的每个页面,如果您的页面顶部有上述脚本,它会在用户未登录时重定向用户。这样,您就可以保护您的页面免受非会员的攻击。如果他们登录,他们将能够查看该页面。

注销 如果您查看 logout.php 的代码,您将看到以下内容:

<?PHP
    session_start();
    session_destroy();
?>

这就是注销用户所需的全部操作:启动一个会话,然后发出 session_destroy 命令。您所需要的只是从您网站上的任何位置指向此页面的链接。该链接将类似于您的 HTML:

<A HREF = logout.php>Log Out</A>

当用户单击此链接时,他们将被带到包含销毁会话的代码的页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

if(!isset($_SESSION['username'])) 导致用户从 verify_login_form.php 重定向回 index.php 的相关文章

  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我
  • VueJS 中数据无法正确显示

    我的 VueJS 代码有一个小问题 在 输出 压缩的 GS1 数字链接 URI 部分中 When there is no result it should have nothing display like this I have remo
  • 防止垃圾邮件按钮呼叫功能

    如何防止调用函数时出现垃圾邮件按钮 就像用户只能在按钮上每 1 秒调用一次该函数 有办法做到吗 因为我尝试了 setTimeout 但没有成功 它仍然在发送垃圾邮件 顺便说一句 我使用 Jquery 这是我的代码
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • HTML W3C 有效元素 - DIV 在 TD 内有效吗?

    我正在和一位同事争论 但找不到证据证明我们俩都是对的 我之前已经看过给定标签的有效元素列表 但只是无法再次找到它 有人能指出我正确的方向吗 我对 XHTML 很好奇 但分歧具体在于 DIV 标签在 HTML 4 01 中的 TD 标签内是否
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 关于真实的表示可以假设什么?

    该程序返回0在我的机器上 include
  • HTML 数据在 Android 中从 json webservice 获取的 Webview 中无法正确显示?

    我正在使用 json webservice 从服务器获取 HTML 数据并在 webview 中显示 在 iPhone 中可以完美显示屏幕尺寸 但在 Android 中则不能完美显示 这里我放下了webservice链接和代码以及andro
  • Gemfile.lock 应该包含在 .gitignore 中吗?

    我对捆绑器及其生成的文件有点陌生 我有一份来自 GitHub 的 git 存储库副本 该存储库由很多人贡献 因此我惊讶地发现捆绑程序创建了一个存储库中不存在且不在 gitignore list 因为我已经分叉了它 所以我知道将它添加到存储库
  • Javascript 书签在 Firefox 41 中停止工作

    在 Firefox 41 中 小书签 带有javascript 网址 例如javascript alert it works 从点击或关键字运行 停止工作 有没有什么解决办法可以使用javascript Firefox 41 中的书签 以前
  • OpenID Connect 使用 Office 365 和 spring security 登录

    我需要配置OpenID 连接用一个春季安全过滤器以授权使用我的 Rest API Web 我找到了一个谷歌登录示例 http www baeldung com spring security openid connect 但就我而言 我需要
  • 如何删除两个单词之间的字符串

    我正在使用下面的代码行下载网页 WebRequest request WebRequest Create strURL WebResponse response request GetResponse Stream data respons
  • 根据先前的下拉列表选择显示第二个下拉列表

    首先 我讨厌提出一个已经处理过的问题 但你应该知道我在这个网站上找到的其他选项对我不起作用 基本上 我想构建一个简短的表单 其中有两个下拉框 第一个始终显示 第二个默认隐藏 当选择第一个下拉框中的某个选项时 我希望显示第二个下拉框 这是我的
  • 黑莓开发上的脚本语言?

    据我所知 开发 Blackberry 应用程序的首选方法是 Java 这是吗only way 我梦想有一个快速的应用程序环境 您可以在其中创建 GUI 使用 Blackberry UI 组件 类似于 Blackberry 上的 Tcl Tk
  • 循环遍历矩阵的对角线+1

    我需要循环遍历对角线 1 即对角线右侧的值 1 列 并将值写入数据帧中的列 write csv data frame matrix 1 2 matrix 2 3 matrix 3 4 如何使用函数来做到这一点 而不是仅仅列出值的所有位置 实
  • 使用 C# 从 azure 文件存储递归获取文件

    我想编写一个程序来从天蓝色文件存储中获取文件 但问题是目录深度未定义并且isFile文件的属性始终返回 false using System using System Collections Generic using System Lin
  • 多个型号的评论

    在我的 Rails 应用程序中 我目前设置了评论以与我的帖子模型一起使用 该模型运行正常 如何向我的图书模型添加评论 这是我到目前为止所拥有的 以下是我的评论架构中的内容 create table comments force true d
  • jsx 上的 eslint 缩进

    我正在尝试制作简单的组件 但是当我点击ctrl s它这样做 警告和错误是这样的 eslint 预期结束标签与开始的缩进相匹配 react jsx ending tag location eslint 预期缩进 4 空格字符但发现2 reac
  • iOS 图表 moveViewToX 似乎不起作用

    我正在尝试移动当前显示的数据范围 看了文档 看来应该可以用moveViewToX函数将视图的左侧移动到给定的 x 值 我制作了一个测试代码 其中有 1 个带有按钮的视图 当视图加载到模拟器中时 图表会正确显示 当按钮被点击时 它会调用mov
  • python ssl ssl.SSLError: [SSL: UNSUPPORTED_PROTOCOL] 不支持的协议 (_ssl.c:590)

    使用 python 2 7 10 或 2 7 9 时出现此错误 但适用于 python 2 7 6 尚未测试其他版本 OpenSSL 版本 openssl version a OpenSSL 1 0 1f 6 Jan 2014 built
  • 如何从 Pl/SQL 中的存储函数返回临时 CLOB 实例?

    我的存储函数使用以下命令创建临时 LOB 实例 Dbms Lob CreateTemporary BUFFER TRUE Dbms Lob SESSION where BUFFER是当地人CLOB多变的 之后函数填充BUFFER一些数据并返
  • Android 浏览器中的 SVG

    我知道它本身不支持 但是是否有任何 JS Shims 可以渲染到画布对象或允许我在本机 Android 浏览器上渲染 SVG 的东西 不是 Opera 等 因为我想避免用户需要安装另一个浏览器 我想你想要的是这个库 http code go
  • 多项式回归废话预测

    假设我想用二次 正交 多项式拟合线性回归模型 然后预测响应 这是第一个模型 m1 的代码 x 1 100 y 2 3 x 5 x 2 rnorm 100 m1 lm y poly x 2 prd 1 predict m1 newdata d
  • 实体框架,代码优先:将主从与零对一关系相结合

    我使用代码优先 EF 有一个简单的主从关系 public class User public string Id get set public ICollection
  • 如何将多个 FlowDocument 连接成 1 个 FlowDocument

    我有多个 FlowDocument 我想将它们连接在一起 下面的方法没有 return 语句 我想做的是将 TextRange 转回 FlowDocument private FlowDocument Concatenate FlowDoc
  • if(!isset($_SESSION['username'])) 导致用户从 verify_login_form.php 重定向回 index.php

    我的网站上有一个登录系统 它将用户从 index php 带到 verify login form php 然后 如果电子邮件 用户名组合与帐户匹配 它们就会被带到 home php 我遇到的问题是我有 if isset SESSION u