PHP 8.1分页访问第1页报错求助:未定义变量$page
解决PHP分页Undefined Variable警告问题
修复代码方案
替换你现有的判断代码,改用以下方式处理$page变量:
简洁版(PHP 7+)
$page = $_GET['page'] ?? '1';
类型安全版
如果需要确保页码为有效整数:
$page = (int)($_GET['page'] ?? 1); // 确保页码不小于1 if ($page < 1) { $page = 1; }
兼容旧PHP版本写法
$page = isset($_GET['page']) && trim($_GET['page']) !== '' ? trim($_GET['page']) : '1'; // 转为整数并校验有效性 $page = (int)$page; $page = $page < 1 ? 1 : $page;
问题根源
你原代码if ($page == "") { $page = "1"; } else { $page = $page; }的问题在于:当访问/gallery时,.htaccess规则没有传递page参数,$page变量从未被定义,直接进行比较操作就会触发"Undefined variable"警告。
你的.htaccess规则仅匹配gallery(.+)/格式的URL(比如gallery2/),会将其转发为/gallery/?page=2,但/gallery本身不会触发该规则,因此PHP无法获取到page参数,导致变量未定义。
可选:优化.htaccess规则
如果希望/gallery/(带斜杠)也能被识别为第1页,可以补充一条规则:
RewriteEngine On RewriteBase / # 匹配gallery/ 直接映射到第1页 RewriteRule ^gallery/$ /gallery/?page=1 [L] # 匹配带数字后缀的gallery URL RewriteRule ^gallery([0-9]+)/ /gallery/?page=$1 [L]
这样不管访问/gallery还是/gallery/,都能正确传递page=1的参数,配合PHP代码彻底避免警告。
内容的提问来源于stack exchange,提问作者Tilly
相关产品推荐
相关产品推荐

