以下代码实现尝试从当日日期对应的文件中读取访问次数,然后每次增加一次访问次数并保存到文件中。在输出当日访问次数后,如果当前时间已经超过凌晨12点,则将访问次数归零。
例如,如果在2023年4月10日9点访问这个脚本,则输出访问次数为1,如果在2023年4月11日1点访问,则访问次数将被归零。
请注意,这个例子并没有考虑文件读写权限、跨时区时间等问题,可以根据实际情况进行改进
实现代码如下:
<?php /** * 防止注入函数 * @param string $str 待处理字符串 * @return string 返回经过处理的字符串 */ function prevent_injection($str) { $str = addslashes(trim($str)); $str = str_replace("_", "\_", $str); $str = str_replace("%", "\%", $str); $str = nl2br($str); $str = htmlspecialchars($str); return $str; } // 获取当前日期 $date_today = prevent_injection(date('Ymd')); // 尝试从文件中读取当日访问次数 $count = 0; $filename = prevent_injection($date_today) . '.txt'; if (file_exists($filename)) { $count = intval(file_get_contents($filename)); } // 增加一次访问次数 $count++; file_put_contents($filename, strval($count)); // 输出当日访问次数 echo '今日访问次数:' . $count; // 如果当前时间已经超过凌晨12点,则归零访问次数 if (date('H') >= 0 && date('i') >= 0) { file_put_contents($filename, '0'); } ?>
在代码中增加了一个名为`prevent_injection`的函数来防止注入。该函数使用了`addslashes`和`htmlspecialchars`两种方法来过滤输入参数中的特殊字符,使得用户无法通过输入特殊字符来攻击我们的程序。同时,我们使用`str_replace`来转义`%`和`_`字符,以保证查询时不会发生错误。最后,我们使用`nl2br`函数来将换行符`
`转换为HTML的`<br>`标签,以便在页面中正确显示。
同时,也对日期和文件名进行了过滤,保证我们的文件名只能为数字格式,防止攻击者通过伪造文件名来进行攻击。
© 版权声明
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。Mail To:718588255@qq.com
THE END