【发布时间】:2020-06-04 01:35:09
【问题描述】:
我正在使用此代码检查输入的电子邮件是否存在于文本文件中
$handle = fopen("http://mywebsite/u.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
$line = preg_replace('/\s+/', ' ', $line);
if($line=$email){
echo "email existe";
}
}
fclose($handle);
} else {
// error opening the file.
}
现有电子邮件的输出与文本文件中不存在的电子邮件相同
电子邮件存在电子邮件存在电子邮件存在
文本文件包含作为测试电子邮件
- test@test.com
- hello@world.com
- test@t.com
如果我做了 == 当 $line = $email 时它没有输入条件
尝试
echo $line." ".$email;
输出
test@test.com test@test.comtest@test.com test@test.comtest@test.com test@test.com
【问题讨论】:
-
良好的代码缩进将帮助我们阅读代码,更重要的是它会帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
-
if($line=$email)if($line==$email) 和一个额外的=。试试看。如果它有效,则有一个副本。 -
您可能需要
trim()行和电子邮件以确保没有空格/新行 -
不,这还不够,因为当我运行你的代码但在你的 preg_replace 后面加上
var_dump($line);时,它后面还有一个空格。 -
嗯....现在事情变得复杂了。如果您可以
.htaccess,您可以只允许您的服务器访问该文件,而不允许其他任何人访问。 See this answer 和 this Q&A 可能会有所帮助。不客气 :) 很高兴知道事情成功了。