游客

PHP零基础教程-第五课-文件操作与表单处理

一言准备中...

一、回顾上节课内容

  1. 多维数组的操作与常用数组函数
  2. 字符串处理与格式化技巧
  3. 超全局变量($_GET/$_POST/$_SERVER等)的使用

二、文件操作

1. 文件读写基础

(1) 打开/关闭文件

<?php
// 打开文件(r: 只读,w: 写入覆盖,a: 追加写入)
$file = fopen("test.txt", "w") or die("无法打开文件!");

// 关闭文件
fclose($file);
?>

(2) 写入文件

<?php
$content = "这是第一行文本\n这是第二行文本";
file_put_contents("data.txt", $content);  // 快速写入(自动创建文件)

// 或分步写入
$file = fopen("log.txt", "a");
fwrite($file, date("Y-m-d H:i:s")." 日志内容\n");
fclose($file);
?>

(3) 读取文件

<?php
// 读取整个文件
echo file_get_contents("data.txt");

// 逐行读取
$file = fopen("data.txt", "r");
while(!feof($file)) {
    echo fgets($file)."<br>";  // 读取一行
}
fclose($file);

// 将文件读取为数组
$lines = file("data.txt");
foreach($lines as $line) {
    echo $line."<br>";
}
?>

2. 常用文件函数

<?php
// 检查文件是否存在
if(file_exists("data.txt")) {
    echo "文件存在";
}

// 获取文件大小(字节数)
echo filesize("data.txt")." bytes";

// 复制文件
copy("data.txt", "backup.txt");

// 重命名文件
rename("old.txt", "new.txt");

// 删除文件
unlink("trash.txt");
?>

3. 文件上传处理

<!-- HTML表单 -->
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="myFile">
    <input type="submit" value="上传">
</form>
<?php
// upload.php
if($_FILES["myFile"]["error"] == UPLOAD_ERR_OK) {
    $tempFile = $_FILES["myFile"]["tmp_name"];
    $targetPath = "uploads/".$_FILES["myFile"]["name"];

    // 移动临时文件到目标目录
    move_uploaded_file($tempFile, $targetPath);
    echo "文件上传成功!";
} else {
    echo "文件上传失败:".$_FILES["myFile"]["error"];
}
?>

三、表单处理与验证

1. 基础表单处理

<form action="process.php" method="post">
    姓名:<input type="text" name="username"><br>
    邮箱:<input type="email" name="email"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="提交">
</form>
<?php
// process.php
if($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $email = $_POST["email"];
    $password = $_POST["password"];

    // 简单的安全过滤
    $username = htmlspecialchars(trim($username));
    $email = filter_var($email, FILTER_SANITIZE_EMAIL);

    echo "注册信息:<br>";
    echo "用户名:$username<br>";
    echo "邮箱:$email";
}
?>

2. 数据验证

<?php
$errors = [];

// 验证规则
if(empty($_POST["username"])) {
    $errors[] = "用户名不能为空";
} elseif(strlen($_POST["username"]) < 3) {
    $errors[] = "用户名至少3个字符";
}

if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
    $errors[] = "邮箱格式不正确";
}

if(strlen($_POST["password"]) < 6) {
    $errors[] = "密码至少6位";
}

// 处理验证结果
if(!empty($errors)) {
    foreach($errors as $error) {
        echo "<p style='color:red'>$error</p>";
    }
} else {
    // 执行数据库操作等
}
?>

3. 防止XSS攻击

<?php
// 输出用户输入时进行转义
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

// 或者使用模板引擎自动转义
?>

四、错误处理

1. 错误类型

  • 注意错误(Notice):E_NOTICE
  • 警告错误(Warning):E_WARNING
  • 致命错误(Fatal Error):E_ERROR

2. 错误控制

<?php
// 关闭错误显示(生产环境推荐)
ini_set('display_errors', 0);

// 设置错误报告级别
error_reporting(E_ALL);  // 报告所有错误
error_reporting(E_ERROR | E_WARNING);  // 只报告ERROR和WARNING

// 自定义错误处理函数
set_error_handler(function($errno, $errstr, $errfile, $errline) {
    echo "<b>错误:</b> [$errno] $errstr<br>";
    echo "发生在文件 $errfile 的第 $errline 行";
    return true; // 阻止默认错误处理
});
?>

3. 异常处理(try-catch)

<?php
try {
    // 可能出错的代码
    $file = fopen("nonexist.txt", "r");
    if(!$file) {
        throw new Exception("无法打开文件");
    }
} catch(Exception $e) {
    echo "捕获异常:".$e->getMessage();
    // 记录日志:error_log($e->getMessage());
}
?>

五、作业练习

  1. 创建一个留言板功能,包含:

    • 表单页面(姓名、留言内容)
    • 处理页面(将留言保存到txt文件)
    • 显示页面(读取并显示所有留言)
  2. 编写一个文件操作函数,实现:

    • 参数:文件名、操作模式(read/write/append)
    • 返回值/功能:根据模式执行对应操作
  3. 创建一个注册表单,包含:

    • 用户名(3-10位字母数字)
    • 密码(6位以上,包含字母和数字)
    • 邮箱(有效格式)
    • 实现实时前端验证和后端验证
  4. 为文件上传功能添加限制:

    • 仅允许jpg/png格式
    • 文件大小不超过2MB
    • 防止文件名重复

下节课预告

  • MySQL数据库基础
  • PHP操作MySQL
  • Cookie与Session管理
  • 实现登录注册功能

建议在本地环境中动手实践所有示例代码!

  • 本文作者:菜鬼
  • 本文链接: https://caigui.net/pljcjc--dwk-wjczybccl.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
128
4
0
1
梦想不大,创造神话。

PHP零基础教程-第四课-数组与字符串深入

上一篇

PHP零基础教程-第六课-MySQL数据库与登录注册

下一篇
评论区
内容为空

这一切,似未曾拥有