PHP $_GET相关报错求助:未定义变量$data及strlen弃用警告
问题分析与解决
核心问题
- 变量名不一致:代码第4行将GET请求的
data参数赋值给了变量$data_string,但后续第8、10行却使用了未定义的$data变量,这是触发"Undefined variable $data"报错的直接原因。 - 未处理参数缺失场景:当请求中没有携带
data参数时,直接调用$_GET['data']会抛出警告,同时导致strlen()传入null值,触发"Passing null to parameter #1"的废弃提示。
修正后的代码
<?php setlocale(LC_TIME, 'es_ES', 'Spanish_Spain', 'Spanish'); date_default_timezone_set("America/Argentina/Buenos Aires"); // 检查data参数是否存在,不存在则赋值空字符串 $data = isset($_GET['data']) ? $_GET['data'] : ''; $sufijo = date("Ym"); $nombreArchivo = "datos".$sufijo.".txt"; $hoy = date("Y-m-d H:i:s"); $tamanio = strlen($data); $archivo = fopen($nombreArchivo, "a"); fwrite($archivo, $data ." -".$tamanio."- ".$hoy . PHP_EOL); fclose($archivo); ?>
修正说明
- 统一变量名:将
$data_string改为$data,确保前后变量引用一致。 - 增加参数校验:用
isset()判断data参数是否存在,给$data设置默认空字符串,避免参数缺失时的各类报错。
内容的提问来源于stack exchange,提问作者vane_bdm
相关产品推荐
相关产品推荐

