PHP提交表单写入时间与文本到日志文件输出0如何解决
问题解决方案
核心错误原因
- PHP中字符串拼接需使用
.运算符,你代码中使用了+(算术加法运算符),PHP会尝试将参与运算的字符串转为数值计算,非数字字符串默认转为0,最终计算结果就是0,这是log.txt仅输出0的直接原因。 - 不需要向纯文本log文件写入
<pre>、<br>这类HTML标签,会降低日志可读性。 - 原有换行逻辑不符合纯文本文件的换行规则,导致内容无法正常分行。
无需调整index.html,仅需修改process.php代码即可,修改后完整代码如下:
<?php if(isset($_POST['field1'])) { $date = date('Y-m-d H:i:s'); // 使用.拼接字符串,用PHP_EOL适配不同系统的换行符,保证每条日志单独占一行 $data = $date . ' ' . $_POST['field1'] . PHP_EOL; $filename = "log.txt"; if (!file_exists($filename)) { $fh = fopen($filename, 'w') or die("Cannot create file"); fclose($fh); } $ret = file_put_contents($filename, $data, FILE_APPEND | LOCK_EX); if($ret === false) { die('There was an error writing this file'); } else { echo "$ret bytes written to $filename"; } } else { die('No post data to process'); } ?>
关键调整说明
- 将字符串拼接运算符从
+替换为. - 移除了不需要的HTML标签和
nl2br函数,避免标签写入纯文本日志 - 新增
PHP_EOL系统兼容换行符,保证每次提交的内容单独占一行 - 补充了创建文件后的fclose操作,避免文件句柄泄漏
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

