首页
学习
活动
专区
圈层
工具
发布

mysqli登录注册

基础概念

mysqli 是 PHP 中的一个扩展,用于与 MySQL 数据库进行交互。它提供了面向对象和过程式的 API,使得开发者可以方便地执行 SQL 查询、处理结果集以及管理数据库连接。

相关优势

  1. 性能mysqli 是对 MySQL 数据库原生协议的封装,性能较高。
  2. 安全性:支持预处理语句,可以有效防止 SQL 注入攻击。
  3. 易用性:提供了简洁的 API,方便开发者进行数据库操作。
  4. 扩展性:支持连接池、事务处理等高级功能。

类型

mysqli 主要有两种使用方式:

  1. 过程式风格:使用函数进行数据库操作。
  2. 面向对象风格:使用类和对象进行数据库操作。

应用场景

mysqli 广泛应用于各种需要与 MySQL 数据库进行交互的 PHP 项目中,如网站、Web 应用、API 等。

示例代码(过程式风格)

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检查连接
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// 注册
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['register'])) {
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
    if (mysqli_query($conn, $sql)) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
}

// 登录
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = "SELECT * FROM users WHERE username = '$username'";
    $result = mysqli_query($conn, $sql);
    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        if (password_verify($password, $row['password'])) {
            echo "Login successful";
        } else {
            echo "Invalid password";
        }
    } else {
        echo "User not found";
    }
}

mysqli_close($conn);
?>

示例代码(面向对象风格)

代码语言:txt
复制
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 注册
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['register'])) {
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

// 登录
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = "SELECT * FROM users WHERE username = '$username'";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        if (password_verify($password, $row['password'])) {
            echo "Login successful";
        } else {
            echo "Invalid password";
        }
    } else {
        echo "User not found";
    }
}

$conn->close();
?>

参考链接

常见问题及解决方法

  1. 连接失败
    • 检查数据库服务器是否启动。
    • 检查数据库连接参数(如主机名、用户名、密码、数据库名)是否正确。
    • 检查防火墙设置,确保数据库端口(默认 3306)未被阻止。
  • SQL 注入
    • 使用预处理语句(Prepared Statements)来防止 SQL 注入。
    • 示例代码中使用了 mysqli_real_escape_string 函数来转义特殊字符,但更推荐使用预处理语句。
  • 密码安全
    • 使用 password_hash 函数对密码进行哈希处理,不要明文存储密码。
    • 使用 password_verify 函数验证用户输入的密码。

通过以上示例代码和解决方法,你应该能够实现基本的 mysqli 登录注册功能,并解决常见的技术问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

登录注册页面跳转_登录注册界面

用HTML、jQuery和css写一个简单的登录注册页面 看了一些前端部分的视频,有点手痒,想起大学时做的某管理系统的前端部分,当时基本都是靠着CV写的,现在想想应该可以自己写一点了。...话不多说,先上图: 首先是登录页面: 点击注册按钮可以跳转到注册页面: 注册页面做了一点简单的判断: 伪非空验证: 还有伪密码验证: 红字提示存在两秒,两秒后消失...然后当用户名和密码输入正确以后(其实两次密码一样就行,用户名不空就好)就可以跳转到登录页面。...这里有一个坑,这种提示用alert()方法弹框,但是alert弹窗不会自己关闭,所以一般选择跳转到另一个页面给提示,给个倒计时然后再跳转到登录页面,麻烦所以没写了。...点击跳转到登录页面..."); } } //鼠标变红事件,鼠标放到注册按钮上会变红(主要想看看事件绑定) $(".inputSubmit").mouseover(function(){ $(".inputSubmit

9.7K10
  • Android注册登录页面

    需求 主题:网抑云 用户注册 (账号 密码 性别 爱好…) (注册完成跳转到注册成功页面) 注册成功页面 (显示用户注册的详细信息) (可以跳转到登录页面) 登录页面 (使用用户注册时的账号密码登录...) (进行判断) 登录成功页面 (欢迎XXX(用户注册时的昵称)先生/女士 分析 不能使用回车多行输入 账号(不可为空) 密码(不可为空)(隐藏的) 确认密码(比对) 昵称(不可为空...) 性别(单选) 爱好(多选) 简介 简介可以为空,其他全部非空 inputType属性实现限制输入类型 点击注册 如果有空(吐司提示XXX不可为空) 从上到下提示 注册完毕之后: 跳转到注册成功页面...).toString(); password = edt_password.getText().toString(); // 判断用户注册时的账号密码和登录输入的账号密码是否一致...注册成功页面 登录页面 登录成功页面

    11.8K30

    android登录注册_android studio注册页面

    image.png BroadcastReceiver 广播作为四大组件之一,使用方式也是多种多样的,既可以自己在manifest中注册,也可以在java代码中动态注册,既可以接收由系统发出的广播,也可以接受自己定义并发送的广播...roadcastReceiver分类 从注册方式上区分:动态注册以及静态注册(显示广播和隐式广播) 从发送方式上区分:无序广播和有序广播 从处理类型上区分:前台广播和后台广播 从运行方式上区分:普通广播和...接收者通过Context.registerReceiver()动态注册或在AndroidManifest.xml文件中通过标签静态注册....注册完成后,当发送者发送某个广播时系统会将发送的广播(Intent)与系统中所有注册的符合条件的接收者(Receiver) 的IntentFilter进行匹配,若匹配成功则执行相应接收者的onReceive

    3.9K30

    Streamlit 实现登录注册验证

    一、手动实现登录注册 我们首先通过手动方式实现登录和注册功能。这种方式适用于你需要对认证流程有更多控制的场景。 1....页面导航 为了方便用户在登录和注册页面之间切换,可以通过以下代码实现简单的页面导航功能。...main() 这个页面导航让用户可以在侧边栏自由切换登录和注册功能,从而提升用户体验。...小结 通过以上代码,我们实现了一个基本的用户登录注册系统,包括: 注册功能:加密存储用户密码,防止明文密码泄露。 登录功能:验证用户输入的密码是否与存储的加密密码匹配。...使用该库,我们可以省去手动实现登录、注册、加密等繁琐的过程。 1.

    2.4K10

    RxSwift 实战操作【注册登录】

    前言 看了前面的文章,相信很多同学还不知道RxSwift该怎么使用,这篇文件将带领大家一起写一个 注册登录(ps:本例子采用MVVM)的例子进行实战。...点击注册按钮,提示注册成功或者注册失败; 注册成功会写进本地的plist文件,然后输入用户名会检测该用户名是否已注册 登录界面需求: 点击输入用户名,检测是否已存在,如果存在,户名可用,否则提示用户名不存在...登录界面 首先我们在storyboard中添加登录界面,如下,当点击登录的时候,就跳转到登录界面。 ?...创建一个LoginViewController.swift和LoginViewModel.swift文件,有了上述注册功能的讲解,相信登录功能也很容易了。...,第三个是登录结果流; 下面的init方法,看着和刚才的注册界面不一样。

    5.8K60
    领券