合集 - Justin的基础知识(11)
1.
什么是MIME类型-基础知识补全
03-03
2.
object中的usemap是什么-HTML
03-03
3.
map标签是什么
03-03
4.
HTML中,table怎样使用
03-03
5.
程序,进程,线程的关系
03-05
6.
平方和平方根快速算法及其原理
03-09
7.
SQL Server 5105 和 1802 错误的触发方式和解决方式之一
03-14
8.
css标签名
03-19
9.
归并排序的简单实现
03-20
10.
java的反射是要先实例化的!
03-24
11.
PHP传递参数(跨文件)的8种常见方法
04-10
收起
以下是 PHP 中跨文件传递参数的 8 种常见方法,按场景和安全性分类整理,附详细说明和示例代码:

一、超全局变量(适合请求间数据共享)

  1. $_GET / $_POST
    用途:通过 URL 或表单提交传递参数(客户端 → 服务器)
    示例:
    // file1.php
    跳转

// file2.php
$id = $_GET['id']; // 获取 123
$name = $_GET['name']; // 获取 John
注意:需对输入数据做过滤(如 filter_input()),防止 XSS 攻击。

  1. $_SESSION
    用途:在会话期间跨页面保持数据(依赖 session_start())
    示例:
    // file1.php
    session_start();
    $_SESSION['user'] = 'Alice';

// file2.php
session_start();
echo $_SESSION['user']; // 输出 Alice
安全:需配置会话安全(如 session.cookie_httponly)。

  1. $_COOKIE
    用途:客户端存储小型数据,自动随请求发送
    示例:
    // file1.php
    setcookie("theme", "dark", time() + 86400);

// file2.php
echo $_COOKIE['theme']; // 输出 dark
限制:数据大小受限(约 4KB),需防范篡改。
二、文件包含(适合同请求内共享数据)

  1. include / require + 变量
    用途:直接共享当前作用域变量(需注意变量污染)
    示例:
    // config.php
    $db_host = 'localhost';

// file1.php
include 'config.php';
echo $db_host; // 输出 localhost
缺点:变量作用域不可控,可能导致命名冲突。
三、文件存储(适合持久化数据)

  1. 文件读写
    用途:通过文件存储中间数据
    示例:
    // file1.php
    file_put_contents('data.txt', 'Hello World');

// file2.php
$data = file_get_contents('data.txt'); // 读取 Hello World
注意:需处理文件锁(LOCK_EX)和并发冲突。

  1. 数据库
    用途:通过数据库(如 MySQL)共享数据
    示例:
    // file1.php
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
    $pdo->exec("INSERT INTO messages (content) VALUES ('Hello')");

// file2.php
$stmt = $pdo->query("SELECT content FROM messages");
$data = $stmt->fetchAll();
安全:必须使用预处理语句防止 SQL 注入。
四、序列化与反序列化

  1. serialize() 和 unserialize()
    用途:存储复杂数据结构(如数组、对象)
    示例:
    // file1.php
    $data = ['name' => 'Bob', 'age' => 30];
    file_put_contents('data.dat', serialize($data));

// file2.php
$data = unserialize(file_get_contents('data.dat'));
echo $data['name']; // 输出 Bob
风险:反序列化可能执行恶意代码,需校验数据来源。
五、面向对象方法

  1. 静态类属性 / 单例模式
    用途:通过类共享全局状态
    示例:
    // Config.php
    class Config {
    public static $value = 'default';
    }

// file1.php
Config::$value = 'new value';

// file2.php
echo Config::$value; // 输出 new value
方法对比与选择建议
方法 适用场景 安全性 持久性 数据量限制
$_GET/$_POST 表单/URL 传参 低 无 小
$_SESSION 用户会话数据 高 会话级 中等
$_COOKIE 客户端存储配置 中 长期 小
文件包含 同请求共享配置 中 无 大
文件存储 持久化非敏感数据 低 长期 大
数据库 结构化数据共享 高 长期 大
序列化 复杂数据结构 低 长期 大
静态类属性 全局配置/状态管理 中 请求级 大
总结
临时数据传递:优先用 $_SESSION 或 include(注意作用域)
客户端数据:用 $_GET/$_POST/$_COOKIE(必须过滤输入)
持久化存储:选择文件或数据库
全局状态管理:使用静态类属性或单例模式


诗和远方
1 声望0 粉丝