PHP将vars写入txt文件,导致重复的逗号/标点符号

时间:2014-10-27 20:19:47

标签: php text-files

我已经将一些数据发布到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函数时,我只使用逗号而没有数据,尽管左右我相信正确格式化它。

1 个答案:

答案 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,您还需要使用自定义规则进行输入验证(例如,检查变量是否在某个范围内,但这是一个不同的问题)。