У меня есть некоторые данные, размещенные в 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, я получил только запятые и никаких данных, несмотря на или так я верил правильно отформатировать.
Это, вероятно, потому что когда-нибудь все ваши переменные пусты, и вы FILE_APPEND
просто запятые.
Чтобы решить это, сделайте:
if (!empty($name) && !empty($age) && ...) {
$s = "$name,$age,$gender,$pType,$os,$min,$max";
file_put_contents("single.txt", $s, FILE_APPEND);
}
Если эти значения вводятся пользователем, всегда проверяйте их дважды. PHP предлагает стандартные функции для очистки: Фильтры дезинфекции, Также вам потребуется проверка ввода с пользовательскими правилами (например, чтобы проверить, находится ли переменная в определенном диапазоне, но это другой вопрос).
Других решений пока нет …