Проверить несколько переменных в файле

Я пытаюсь найти в текстовом документе переменные, введенные в форму, и проверить, есть ли дубликаты или нет. Программа будет искать несколько переменных (имя, фамилия и адрес электронной почты). Я могу искать одну переменную и заставить программу вернуть, что запись уже есть, но как только я добавлю вторую переменную, я столкнусь со всевозможными проблемами. Текущий код ищет только имя и фамилию. Я добавлю третью переменную после того, как смогу найти две текущие. Любая помощь будет принята с благодарностью.

Код, который я использую:

<!DOCTYPE html>

<html>
<body>
<?php
if(isset($_POST['submit'])) {
$fname = stripslashes($_POST['firstname']);
$lname = stripslashes($_POST['lastname'] . PHP_EOL);
$existingnames = array();
$namefile = fopen("test_dupes.txt", "a+");if(file_exists("test_dupes.txt")){
$existingnames = file("test_dupes.txt");

if(in_array($fname, $existingnames)){

if(in_array($lname, $existingnames)){
echo "<p>The name is already in the file!<br>";
echo "Please enter another name.</p>";
}

} else {
fwrite($namefile, "$fname" . " ");
fwrite($namefile, "$lname");
fclose($namefile);
echo "Your name has been successfully added to the list.";
}

} else {

if($namefile === false) {
echo "There was an error saving your name to the file.";

} else{
fwrite($namefile, "$fname" . " ");
fwrite($namefile, "$lname");
fclose($namefile);
echo "Your name has been successfully to the list.";
}
}
}
?>

<form action="test_dupes.html">
<input type="submit" value="Return to Name Entry" />
</form>
</body>
</html>

0

Решение

В целом, я думаю, что это лучше для базы данных, но я думаю, что могу объяснить текущую проблему, с которой вы столкнулись.

Если у вас есть файл, который содержит список полных имен, таких как:

John Moran
Someone Else
Another Name
...

Затем, когда вы читаете их в массив с помощью file() В результате вы получите массив, содержащий полные имена, например:

array("John Moran\n", "Someone Else\n", "Another Name\n", etc.);

Когда вы используете in_array($fname, $existingnames) чтобы попытаться найти существующее имя, оно будет пытаться найти $fname со значением в массиве, но так как массив содержит полные имена, ничто не будет соответствовать. Если вы хотите просто использовать in_array чтобы проверить имя, вам нужно проверить его по имени и фамилии вместе (думаю, возможно, именно поэтому оно работало, когда у вас была только одна переменная.) С двумя переменными вы можете просто соединить их вместе, например так:

in_array("fname $lname", $existingnames)
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector