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

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 登录注册功能,并解决常见的技术问题。

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

相关·内容

没有搜到相关的合辑

领券