我正在为我们的网站编写一个基本的邮件列表系统。“subscribe.php”页面使用$_GET
参数的方法。我将电子邮件地址添加到文本文件 (maillist.txt) 中。
在添加地址之前,我检查它是否不在文件中。
问题:比较两个相同的字符串返回 false..
我试过的:
- 我确保 maillist.txt 是 UTF-8
- 我尝试在 UTF-8 中设置标题
- 我尝试使用 strcmp()
- 我尝试使用 utf8_encode 转换两个字符串
这是“subscribe.php”代码:(我删除了所有正则表达式和 isset 检查)
<?php
// UTF-8 ----> things I've added, trying to solve the problem
header('Content-Type: text/html; charset=utf-8');
ini_set('default_charset', 'utf-8');
ini_set("auto_detect_line_endings", true);
$email = strip_tags($_GET['email']); // For safety
$maillist = fopen('maillist.txt', 'r+');
// Check if email is already in the database
$insert = true;
while ($line = fgets($maillist)) {
$line = rtrim($line, "\r\n");
if (utf8_encode($line) == utf8_encode($email)) { // $line == $email returns false
echo $line . "=" . $email . "<br/>";
$insert = false;
break;
} else echo $line . "!=" . $email . "<br/>";
}
if ($insert) {
fputs($maillist, $email . "\n");
echo 'Success';
} else echo "Fail";
fclose($maillist);
?>