HP 开发展开交流

anhei1986 anhei1986 关注 VIP 二级站长
发表于PHP开发交流区版块 框架讨论

一、PHP 基础核心知识点(新手必掌握)

这是 PHP 开发的根基,也是最容易踩坑的地方,先从几个高频问题说起:

1. 严格比较 vs 松散比较(== vs ===)

新手常混淆这两个比较运算符,导致逻辑错误:

php

运行

<?php
// 松散比较(==):只比较值,不比较类型
$a = 0;
$b = '0';
var_dump($a == $b); // 输出 bool(true)

// 严格比较(===):既比较值,也比较类型
var_dump($a === $b); // 输出 bool(false)

// 实战建议:判断用户输入、状态值时,优先用===,避免类型转换导致的bug
?>

2. 超全局变量的正确使用

超全局变量(如$_GET$_POST$_SESSION)是 PHP 内置的全局数组,新手容易忽略安全过滤:

php

运行

<?php
// 错误示例:直接使用$_GET参数,存在XSS风险
$username = $_GET['username'];
echo "欢迎你:{$username}";

// 正确示例:过滤用户输入
$username = isset($_GET['username']) ? htmlspecialchars($_GET['username'], ENT_QUOTES) : '';
echo "欢迎你:{$username}";
?>

二、常用 PHP 框架(新手入门首选)

纯原生 PHP 开发大型项目效率低,主流框架能大幅提升开发效率,推荐两个新手友好的框架:

1. ThinkPHP(国内主流,中文文档友好)

最核心的 MVC 结构示例(以 ThinkPHP 6 为例):

php

运行

// 控制器(app/controller/Index.php)
namespace app\controller;

use app\model\User;

class Index
{
    public function index()
    {
        // 调用模型查询数据
        $user = User::where('id', 1)->find();
        // 渲染视图并传递数据
        return view('index', ['user' => $user]);
    }
}

// 模型(app/model/User.php)
namespace app\model;

use think\Model;

class User extends Model
{
    // 模型关联数据表(默认是表名复数,可自定义)
    protected $table = 'user';
}

2. Laravel(国际主流,规范度高)

Laravel 的路由 + 控制器基础示例:

php

运行

// 路由(routes/web.php)
Route::get('/user/{id}', [UserController::class, 'show']);

// 控制器(app/Http/Controllers/UserController.php)
namespace App\Http\Controllers;

use App\Models\User;

class UserController extends Controller
{
    public function show($id)
    {
        $user = User::findOrFail($id);
        return view('user.show', ['user' => $user]);
    }
}

三、PHP 实战避坑技巧(新手高频踩坑)

  1. SQL 注入防护:必须使用 PDO 预处理或框架 ORM,禁止拼接 SQL 语句:

php

运行

<?php
// 正确示例:PDO预处理
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '123456');
$stmt = $pdo->prepare("SELECT * FROM user WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
?>

  1. 文件上传安全:限制文件类型、大小,并重命名文件:

php

运行

<?php
$allowedExts = ['jpg', 'png', 'gif'];
$fileExt = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
// 检查文件类型
if (!in_array($fileExt, $allowedExts)) {
    die('仅允许上传jpg/png/gif文件');
}
// 检查文件大小(限制2M以内)
if ($_FILES['file']['size'] > 2 * 1024 * 1024) {
    die('文件大小不能超过2M');
}
// 重命名文件,避免覆盖和安全问题
$newFileName = uniqid() . '.' . $fileExt;
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $newFileName);
?>

总结

  1. PHP 基础中,严格比较(===)输入过滤是避免基础 bug 的核心,一定要养成习惯;
  2. 新手入门框架优先选ThinkPHP(易上手)Laravel(学规范),避免纯原生开发大型项目;
  3. 实战中必须重视安全,SQL 注入文件上传漏洞是 PHP 项目最常见的安全风险,需通过预处理、类型限制等方式防护。
评论列表 评论
发布评论

评论: HP 开发展开交流

已有0次打赏
(0) 分享
分享

请保存二维码或复制链接进行分享

取消