所以我试图在一个文本文件中收集和存储电子邮件地址,并且除了不识别地址是否已经提交之外,它正在工作。它将为文本文件添加一个地址,即使它已经存在。感谢您的见解。
<?php
function showForm() {
echo '
<form method="post" action="">
Email Address: <input type="email" name="email"> <br />
<input type="submit" value="Submit" name="submit">
</form>
';
}
if(empty($_POST['submit']) === false) {
$email = htmlentities(strip_tags($_POST['email']));
$logname = 'email.txt';
$logcontents = file_get_contents($logname);
$pos = strpos($logcontents, $email);
if ($pos === true) {
die('You are already subscribed.');
} else {
$filecontents = $email.',';
$fileopen = fopen($logname,'a+');
$filewrite = fwrite($fileopen,$filecontents);
$fileclose = fclose($fileopen);
if(!$fileopen or !$filewrite or !$fileclose) {
die('Error occured');
} else {
echo 'Your email has been added.';
}
}
} else {
showForm();
}
?>
答案 0 :(得分:3)
strpos()
返回找到字符串的位置,或false
。
检查$pos === true
永远不会成功,因为strpos()
的返回值不能为true
。
请尝试if ($pos !== false) { ...
。
答案 1 :(得分:1)
你的这一行:
$pos = strpos($logcontents, $email);
返回找到的字符串的位置,而不是布尔值。
和
if ($pos === true) {
可能包含0
作为职位。
您应该将其更改为:
if ($pos != false) {
答案 2 :(得分:0)
strpos永远不会回归真实。它可以返回零位置,除非你使用严格的比较,否则将被PHP解释为false。
if ($pos !== false)