PHP 8.0代码报错:未定义变量$scrollamount与$message求修复
修复PHP 8.0下未定义变量的警告问题
问题原因
PHP 8.0对未定义变量的检测规则更严格,PHP 7及更早版本会默认将未定义变量视为空值或null,不会抛出警告;但PHP 8.0会明确触发警告,导致页面无法正常运行。
修复方案
1. 修复wish.php中$scrollamount未定义问题
在使用$scrollamount的代码前,先初始化变量。根据你的逻辑,初始值设为1即可:
// 初始化$scrollamount变量 $scrollamount = 1; // 原第541-542行代码 if($scrollamount<=5){ $scrollamount=$scrollamount+1; } else { $scrollamount=1; } echo "<marquee scrollamount=$scrollamount delay=0><a href=\"javascript:openChromeslessWindow('show.php?number=$f[0]','data',310,310,null,null,'查看許願內容', '#000000', '#000000', '#999988', '#808040' ,true,'??','1','#000000')\" ONMOUSEOVER=\"pop('來自".$f[7]."<br>".$f[6]."歲的".$f[1]."<br>於".$f[2]."<br>在這裡許了個願<br>共有".$f[8]."個人看過')\" ONMOUSEOUT=\"kill()\"><img src=\"images/c".$f[3].".gif\" border=0></a></marquee>"; } } ?>
2. 修复show.php中$message未定义问题
在循环拼接$message之前,先将其初始化为空字符串:
include "config.inc"; $f=file("database/".$_GET['number']); // 初始化$message为空字符串 $message = ''; for($i=0;$i<count($f);$i++){ if($i==8)$f[$i]=$f[$i]+1; // 此时$message已定义,可正常拼接 $message=$message.$f[$i]; $ff=explode("\n",$f[$i]); $f[$i]=$ff[0]; } $fp=fopen("database/".$_GET['number'],"w"); flock($fp,3); fwrite($fp,$message); fclose($fp);
额外提示
- 后续编写PHP代码时,所有变量在使用前建议先初始化,避免版本升级带来的兼容性问题。
- 代码中直接使用
$_GET['number']存在安全风险,建议增加参数校验(比如判断文件是否存在、过滤非法字符),防止恶意请求。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

