当前位置:首页 > PHP

Php手工实现

2026-03-13 01:46:51PHP

PHP 手工实现

PHP 手工实现通常指的是不依赖框架或库,直接使用原生 PHP 代码完成特定功能。以下是几个常见场景的手工实现方法:

数据库连接与操作

使用 PHP 原生函数连接 MySQL 数据库并执行查询:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

表单处理与验证

手工处理表单提交并验证输入:

Php手工实现

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = htmlspecialchars($_POST["name"]);
    $email = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL);

    if (empty($name)) {
        $errors[] = "Name is required";
    }

    if (!$email) {
        $errors[] = "Valid email is required";
    }

    if (empty($errors)) {
        // 处理有效数据
        echo "Form submitted successfully";
    } else {
        foreach ($errors as $error) {
            echo $error . "<br>";
        }
    }
}

会话管理

手工实现用户登录和会话管理:

session_start();

// 登录验证
if (isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 验证逻辑
    if ($username === 'admin' && $password === 'secret') {
        $_SESSION['user'] = $username;
        header("Location: dashboard.php");
        exit();
    } else {
        $error = "Invalid credentials";
    }
}

// 检查登录状态
function isLoggedIn() {
    return isset($_SESSION['user']);
}

// 登出
if (isset($_GET['logout'])) {
    session_destroy();
    header("Location: login.php");
    exit();
}

文件上传处理

手工实现文件上传功能:

Php手工实现

$uploadDir = 'uploads/';
$allowedTypes = ['image/jpeg', 'image/png'];

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
    $file = $_FILES['file'];

    if ($file['error'] === UPLOAD_ERR_OK) {
        $fileType = mime_content_type($file['tmp_name']);

        if (in_array($fileType, $allowedTypes)) {
            $filename = uniqid() . '_' . basename($file['name']);
            $destination = $uploadDir . $filename;

            if (move_uploaded_file($file['tmp_name'], $destination)) {
                echo "File uploaded successfully";
            } else {
                echo "Error moving file";
            }
        } else {
            echo "Invalid file type";
        }
    } else {
        echo "Upload error: " . $file['error'];
    }
}

路由系统

简单的手工路由实现:

$request = $_SERVER['REQUEST_URI'];

switch ($request) {
    case '/':
        require 'views/home.php';
        break;
    case '/about':
        require 'views/about.php';
        break;
    case '/contact':
        require 'views/contact.php';
        break;
    default:
        http_response_code(404);
        require 'views/404.php';
        break;
}

模板引擎基础

手工实现简单的模板渲染:

function renderTemplate($template, $data = []) {
    extract($data);
    ob_start();
    include "templates/$template.php";
    return ob_get_clean();
}

$data = ['title' => 'Home Page', 'content' => 'Welcome to our site'];
echo renderTemplate('home', $data);

这些示例展示了如何使用原生 PHP 手工实现常见功能,适合理解 PHP 底层工作原理或构建轻量级应用。对于更复杂的项目,建议考虑使用成熟的框架以提高开发效率和安全性。

标签: 手工Php
分享给朋友:

相关文章

Php实现imagehash

Php实现imagehash

PHP 实现 ImageHash ImageHash 是一种图像指纹算法,用于快速比较图像的相似性。PHP 可以通过 GD 库或 Imagick 扩展实现该功能。以下是两种实现方式: 使用 GD…

Php手工实现

Php手工实现

PHP 手工实现基础框架 手工实现一个 PHP 框架需要理解核心组件,如路由、请求处理、视图渲染和数据库交互。以下是一个极简框架的实现思路: 路由系统 $requestUri = $_SERVER…

实现一个计算器Php

实现一个计算器Php

基础PHP计算器实现 创建一个简单的PHP计算器可以通过HTML表单接收用户输入,PHP处理计算逻辑并返回结果。以下是实现步骤: HTML表单部分 <form method="post" a…

CSS模板制作手工

CSS模板制作手工

CSS模板制作手工的方法 CSS模板制作手工涉及多个步骤,以下是详细的方法: 设计布局结构 使用CSS Grid或Flexbox创建响应式布局,确保模板适应不同屏幕尺寸。定义容器、行和列的样式,设置…

Php实现imagehash

Php实现imagehash

PHP 实现 ImageHash ImageHash 是一种用于图像相似度比较的技术,通过计算图像的哈希值来判断图像是否相似。以下是使用 PHP 实现 ImageHash 的方法。 安装依赖库 确保…

如何手工编译java

如何手工编译java

准备Java开发环境 确保系统已安装JDK(Java Development Kit),可通过命令行输入javac -version和java -version验证。若未安装,需从Oracle官网或O…