Php手工实现
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();
表单处理与验证
手工处理表单提交并验证输入:
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();
}
文件上传处理
手工实现文件上传功能:
$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 底层工作原理或构建轻量级应用。对于更复杂的项目,建议考虑使用成熟的框架以提高开发效率和安全性。





