PHP MYSQLI编写语句登录并检查用户状态

2023-12-14

我正在学习使用一些基于 mysqli 的视频教程制作网站。我开始知道使用准备好的语句更安全,我正在尝试创建一个登录系统。这是我到目前为止所做的。

这段代码帮助我完全登录成功。

<form action ="" method="post">

User Name:<br/>
<input type='text' name='username' />
<br/><br/>
Password:<br/>
<input type='password' name='password' />
<br/><br/>
<input type='submit' name='submit' value='login'>
</form>
<?php

if(isset($_POST['submit'])){
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $stmt = $con->prepare("SELECT username, password FROM users WHERE username=? AND  password=? LIMIT 1");
    $stmt->bind_param('ss', $username, $password);
    $stmt->execute();
    $stmt->bind_result($username, $password);
    $stmt->store_result();
    if($stmt->num_rows == 1)  //To check if the row exists
        {
            while($stmt->fetch()) //fetching the contents of the row

              {$_SESSION['Logged'] = 1;
               $_SESSION['username'] = $username;
               echo 'Success!';
               exit();
               }
        }
        else {
            echo "INVALID USERNAME/PASSWORD Combination!";
        }
        $stmt->close();
    }
    else 
    {   

    }
    $con->close();
?>

但我还需要检查用户是否尚未激活或已被禁止或停用。所以我又做了一个代码。

这是我制作的代码

<?php
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = md5($_POST['password']);
$stmt = $con->prepare("SELECT username, password FROM users WHERE username=? AND    password=? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
if($stmt->num_rows == 1)  //To check if the row exists
  {
 $result=$con->query($stmt);
            $row=$result->fetch_array(MYSQLI_ASSOC);
            $user_id= $row['user_id'];
            $status = $row['status'];
            if($status=='d'){
                echo "YOUR account has been DEACTIVATED.";
            }else{
                $_SESSION['Logged'] = 1;
                $_SESSION['user_id'] = $user_id;
                $_SESSION['username'] = $username;
                echo 'Success!';
               exit();
            }
        }
        else {
            echo "INVALID USERNAME/PASSWORD Combination!";
        }
        $stmt->free_result();
        $stmt->close();
        
    }
    else 
    {   

    }
 $con->close();
 ?>

当我使用这个时,我收到以下错误

警告:mysqli_query() 期望参数 1 为字符串,即第 33 行 C:\XAMPP\htdocs\login\login.php 中给出的对象

致命错误:在第 34 行对 F:\XAMPP\htdocs\login\login.php 中的非对象调用成员函数 fetch_array()

我有数据库表列

用户身份, 用户名, 密码(md5), 用户级别, 地位。

在 user_level 下我有以下内容

a = admin
m = member

状态下

a = activated
n = not activated
d = deactivated
b = banned

登录时,我需要检查用户状态是否以及它是否被激活,它应该移动到索引页面,或者如果它被激活,它应该显示用户已被停用,对于其他人也是如此。

如何在准备好的语句中做到这一点?

我在所有页面都有这个 connect.php

?php
//error_reporting(0);
'session_start';
$con = new mysqli('localhost', 'username', 'password', 'database');
if($con->connect_errno > 0){
die('Sorry, We\'re experiencing some connection problems.');
}
?>

我认为您需要了解一下 mysqli_ 的工作原理。这应该会让你朝着正确的方向前进。

if(isset($_POST['submit'])){
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $user_id = 0;
    $status = ""

    $stmt = $con->prepare("SELECT user_id, username, password, status FROM users WHERE username=? AND password=? LIMIT 1");
    $stmt->bind_param('ss', $username, $password);
    $stmt->execute();
    $stmt->bind_result($user_id, $username, $password, $status);
    $stmt->store_result();
    if($stmt->num_rows == 1)  //To check if the row exists
        {
            if($stmt->fetch()) //fetching the contents of the row
            {
               if ($status == 'd') {
                   echo "YOUR account has been DEACTIVATED.";
                   exit();
               } else {
                   $_SESSION['Logged'] = 1;
                   $_SESSION['user_id'] = $user_id;
                   $_SESSION['username'] = $username;
                   echo 'Success!';
                   exit();
               }
           }

    }
    else {
        echo "INVALID USERNAME/PASSWORD Combination!";
    }
    $stmt->close();
}
else 
{   

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

PHP MYSQLI编写语句登录并检查用户状态 的相关文章

  • 在php中获取二进制数据大小的正确方法是什么?

    我已阅读文件的一部分 现在想确保该部分的大小正确 我怎样才能在 php 中做到这一点 part fread file 1024 return some function part 1024 我已经阅读了这些示例 但我怀疑是否要使用 strl
  • 未捕获的 ValueError:mysqli_stmt::execute():参数 #1 ($params) 必须是列表数组

    我试图通过这两个查询在我的数据库中插入准备好的语句多个值 这两个查询都发生故障 返回 未捕获的错误 调用未定义的方法 mysqli stmt bindValue 对于第一个代码或 未捕获的 ValueError mysqli stmt ex
  • 返回变量在 PHP 中不起作用(即没有返回值!)

    我更喜欢使用 Python 语言进行编程 但必须使用 PHP 来处理特定的网站应用程序项目 在 PHP 中 我试图将函数中的值 返回 到主程序环境 用于后续计算 但无论我尝试什么 函数中计算的值都不会返回该值 而是从函数中回显 工作正常 在
  • 计算两个数字之间的差异

    我想计算两个给定数字之间的差异 例如 1 5 或 24 35 我必须将数组中的数字分开并写出它们之间的差异 如下所示 1 2 3 4 5 或 24 25 26 27 28 29 30 31 32 33 34 35 是否有任何 php 函数可
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 基于 PHP 的 CSV 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道用 PHP 编写的在线 CSV 编辑器允许用户打开 编辑和保存给定的 CSV 文件 我能找到的只
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • 如何将 ctype_alpha 与 UTF-8 结合使用

    如何将 ctype alpha 与 UTF 8 一起使用 我有这个代码 if empty POST false if isset POST first name empty POST first name if ctype alpha PO
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • 使用 PDO 在 SQLite 中检索单个(且唯一)行的最简单方法

    我有这个 PDO stmt db gt prepare SELECT FROM channels WHERE id id stmt gt bindValue id id SQLITE3 INTEGER result stmt gt exec
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 无需下载整个文件即可读取 ID3 标签

    是否可以读取 MP3 文件的 ID3 标签 持续时间 艺术家 标题 而无需下载整个文件 我做了一些测试 只需下载 MP3 文件的几个字节就可以获得艺术家和标题标签 但我不确定持续时间和其他标签是否可能 Thanks 我刚刚发现 ffmpeg
  • php,in_array,0值

    我试图理解in array下一个场景的行为 arr array 2 gt Bye 52 77 3 gt Hey var dump in array 0 arr 返回值in array 是布尔值true 正如你所看到的no值等于0 所以有人可
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • 转换MAC地址格式

    我刚刚编写了一个小脚本 从交换机中提取数百个 MAC 地址进行比较 但它们的格式为 0025 9073 3014 而不是标准的 00 25 90 73 30 14 我对如何转换它感到困惑 我能想到的最好的办法就是在 处将它们分解成碎片 然后
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但

随机推荐

  • 有没有办法从字符串加载CSS和JavaScript?

    我见过很多从文件动态加载 CSS 和 javascript 的例子 这是一个很好的例子 但是有没有办法将 CSS 或 javascript 作为字符串加载呢 例如 类似 var style class width 100 document
  • 如何将 numpy 数组流式传输到 pyaudio 流中?

    我正在编写一个代码 该代码应该根据用户的操作向其提供一些音频输出 并且我想生成声音而不是固定数量的声音wav要播放的文件 现在 我正在做的是生成 numpy 格式的信号 将数据存储在wav文件 然后将相同的文件读入pyaudio 我认为这是
  • 在输入文本上触发 jQuery 的按键事件

    关于 trigger method the Event object the which财产 the JS 字符代码和下面的代码 为什么 example输入没有得到字符a as 自动写入价值 我是否误解了 trigger method
  • 使用 SimpleXMLElement 读取 `` 中的文本[重复]

    这个问题在这里已经有答案了 我正在导入 RSS 提要SimpleXMLElement在 PHP 中 我对标题和描述有疑问 由于某种原因 我获取提要的网站将标题和描述放入
  • 让 chrome 显示 rss feed (2)

    这个问题是这个问题的后续问题 使用 google chrome 查看 rss feed 我从此页面复制了源代码 希望这对网站所有者来说没问题 http www petefreitag com rss 我转义了所有引号并用它制作了一个 php
  • Python函数参数作为全局变量

    我编写了以下函数 它接受一个变量input name 然后用户输入一些值 该值被分配给input name 我想知道最好的制作方法input name可在函数外部访问 我知道在函数内部将变量定义为全局变量意味着可以在函数外部使用该变量 然而
  • 你能在继承树中重新抽象一个方法吗?

    EDIT 需要明确的是 设计相当丑陋并不是重点 关键是 设计已经存在 我面临的情况是必须添加另一个子类FlyingMotorizedVehicle如果我忘记添加 这将无法按预期工作foo 所以我只是想知道是否可以将其重新定义为抽象 我现在面
  • 如何在 Drupal 8 中更新我的视图而不返回首页?

    我正在尝试刷新 Drupal 8 中的视图 而无需使用以下代码重新加载页面 function Drupal use strict setInterval function view message activity stream timel
  • 如何检测AVPlayer视频何时结束播放?

    我正在使用 AVPlayer 在 Swift 中播放本地视频文件 mp4 有谁知道如何检测视频何时播放结束 谢谢 为了得到AVPlayerItemDidPlayToEndTimeNotification你的对象需要是 AVPlayerIte
  • 使用 mechanize 登录网页

    这是我第一次使用 Python 编程 我正在尝试登录this网页 经过搜索 我发现很多人建议使用mechanize 为了确保我在开始编码之前正确设置 我下载了mechanize从网站上下载 zip 并将我的 python 脚本放在解压缩的
  • PHP 中的新行。如何?

    Code 我试图将其显示为两行 但换行符不起作用 而是在两行之间打印一个空格 我尝试过 r n 以及 PHP EOL 以及将字符串放在单引号中 它们似乎都不起作用 那么如何在 PHP 中打印新行呢 我正在研究 phpDesigner 8 U
  • fget 和 gets 之间的区别

    有什么区别fgets and gets 当用户点击 输入 时 我试图打破循环 它配合得很好gets 但我不想使用gets 我尝试过fgets and scanf 但我没有得到相同的结果gets fgets 无论用户在文本中输入什么 都会打破
  • 在Android中,不应该使用System.gc()吗?

    我想知道不应该在 android 中使用 System gc 我搜了一下开发者文档 Result 公共静态无效GC 添加到 API 级别 1 向虚拟机表明现在是个好时机 运行垃圾收集器 请注意 这只是一个提示 有 不能保证垃圾收集器实际上会
  • Android Studio:库项目依赖项是否从project.properties中选取?

    我已经从 ADT 导入了我的项目 进入 模块设置 并编辑依赖项后 一切工作正常 我的 build gradle 的依赖项块为空 所以我想知道 Ansdroid Studio 从哪里选择库依赖项 当我从 eclipse 迁移时 模块目录中有
  • 同时多个手势响应器

    我需要一些可以同时按下的按钮 但目前如果您按下一个按钮 它会 声称 响应 而其他按钮则无法再按下 我该怎么做呢 知道了 你必须使用ReactNativeEventEmitter直接监听触摸事件并完全绕过手势响应器 下面是一个装饰器类 它调用
  • 我可以在 tomcat 中放置手动提取的战争而不是deployOnStartup = true吗? tomcat中已经解压war文件是否正确

    我在 tomcat server xml 中添加了deployOnStartup true 但由于安全问题 建议将deployOnStartup false 因为保持它为true会允许部署恶意或未经测试的应用程序 因此应该禁用它 将提取的
  • 如何阻止 Windows 窗体中重写的 WndProc 函数中的双击?

    我在 Windows 窗体中创建了一个窗体 可以将其拖动到任意位置 我通过重写 WndProc 函数来实现它 该函数反过来修改每次单击 因为它是标题栏单击 found at http stackoverflow com questions
  • 混淆测试 fftw3 - 泊松方程 2d 测试

    我无法解释 理解以下现象 为了测试 fftw3 我使用 2d 泊松测试用例 laplacian f x y g x y 具有周期性边界条件 对方程进行傅里叶变换后 我们得到 F kx ky G kx ky kx ky 1 如果我取 g x
  • 在 Windows 8.1 存储 XAML 中添加新项目后,ListView.ContainerFromItem 返回 null

    我有一个简单的 ListView 没有项目模板和 SelectionChanged 事件设置
  • PHP MYSQLI编写语句登录并检查用户状态

    我正在学习使用一些基于 mysqli 的视频教程制作网站 我开始知道使用准备好的语句更安全 我正在尝试创建一个登录系统 这是我到目前为止所做的 这段代码帮助我完全登录成功