我试图在文本文档中搜索输入到表单中的变量,并检查是否存在重复项。该程序将搜索几个变量(名字,姓氏和电子邮件)。我能够搜索单个变量并让程序返回已经有一个条目,但是当我添加第二个变量时,我会遇到各种各样的麻烦。当前代码仅搜索名字和姓氏。在我成功找到两个当前变量之后,我将添加第三个变量。任何帮助将不胜感激。
我正在使用的代码:
<!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 :(得分: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)