我有以下脚本,我从表单(操作)调用以获取表单中的给定数据。但是当我尝试将此表单数据写入文件时。它似乎重演了,我无法找出代码中的错误。
在这个例子中,我清理了“testfile.txt”。所以它有一个新的开始。在HTML表单中,我输入了1212 aa的邮政编码 然而,作为一个“奖金”,我获得约15倍的邮政编码。
<?php
$myfile = fopen("testfile.txt", "a") or die("Unable to open file!");
$txt = "postcode" . $_POST['entry_508642568'];
echo $txt;
fwrite($myfile, "\n". $txt);
fclose($myfile);
?>
输出:
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode1212 aa
postcode
postcode
postcode
答案 0 :(得分:2)
看起来某种形式多次提交表单。在添加到文件之前,先修复它或尝试检查输入。
$original_data = array(
'item_name1' => 'PCC',
'item_name2' => 'ext',
'item_number1' => '060716113223-13555',
'item_number2' => '49101220160607-25222)',
);
$redacted_data = array();
foreach ($original_data as $key => $row) {
if (preg_match('/^(.+)(\d+)$/u', $key, $matches)) {
$redacted_data[$matches[1]][$matches[2]] = $row;
} else {
$redacted_data[$key][] = $row;
}
}
var_dump($redacted_data);
答案 1 :(得分:1)
上面的答案很好,但您也可以使用标志来处理将字符串写入文件。
<?php
if( !empty($_POST['entry_508642568']) ) {
$file = 'testfile.txt';
$txt = "postcode" . $_POST['entry_508642568'];
file_put_contents($file, $txt, FILE_APPEND | LOCK_EX);
//LOCK_EX flag to prevent anyone else writing to the file at the same time
}
?>