我已经将一些数据发布到php文件中,我需要将用逗号分隔的数据保存/追加到文本文件中。这一切都很好,花花公子,应该是直截了当的,除了当我检查文件时,我看到每个逗号都被写了两次:一次是需要的地方,然后是在附加数据之后,但是作为一组逗号。 这就是我所拥有的:
<form action="signup-submit.php" method="post">
<fieldset>
<legend>New User Signup:</legend>
<label>Name:</label>
<input type="text" name="name" size="16" autofocus required/> <br/>
<label>Gender:</label>
<label><input type="radio" name="gender" value="m" /> Male</label>
<label><input type="radio" name="gender" value="f" checked /> Female</label> <br />
<label>Age: <input type="text" name="age" size="6" maxlength="2" required></label><br/>
<label>Personality Type: <input type="text" name="pType" maxlength="4" size="6" required/></label><br/>
<label>
Favorite OS:
<select name="os">
<option value="windows">Windows</option>
<option value="mac">Mac OS X</option>
<option value="linux">Linux</option>
</select>
</label><br/>
<label>
Seeking age:
<input name="min" type="text" size="6" maxlength="2" placeholder="min" required/>
to
<input name="max" type="text" size="6" maxlength="2" placeholder="max" required/>
</label><br/>
<input type="submit" value="Sign up"/>
</fieldset>
</form>
^该代码将“用户数据”发布到signup-submit.php,其中它由相同的var名称存储到变量中。
$name = $_POST["name"];
$age = $_POST["age"];
$gender = $_POST["gender"];
$pType = $_POST["pType"];
$os = $_POST["os"];
$min = $_POST["min"];
$max = $_POST["max"];
$c = chr(44);
$s = "$name$c$age$c$gender$c$pType$c$os$c$min$c$max";
file_put_contents("single.txt", $s, FILE_APPEND);
?>
并且文本文件将不断复制逗号:
拜伦,21米,INTP,窗户,18,23 ,,,,,,
变量只是从上一页发布到此文件的数据。我也尝试过在阳光下的每一个方向来保存数据。事实上,如果我直接只写文字,我就没有问题。当我使用csv函数时,我只使用逗号而没有数据,尽管左右我相信正确格式化它。
答案 0 :(得分:3)
这可能是因为有时你的所有变量都是空的,而FILE_APPEND
只是逗号。
解决这个问题:
if (!empty($name) && !empty($age) && ...) {
$s = "$name,$age,$gender,$pType,$os,$min,$max";
file_put_contents("single.txt", $s, FILE_APPEND);
}
如果这些值是用户输入,请务必仔细检查它们。 PHP提供标准函数来清理:Sanitize Filters,您还需要使用自定义规则进行输入验证(例如,检查变量是否在某个范围内,但这是一个不同的问题)。