为什么搜索此.txt文件时strpos()无法正常工作?

时间:2015-11-02 10:54:27

标签: php

所以我试图在一个文本文件中收集和存储电子邮件地址,并且除了不识别地址是否已经提交之外,它正在工作。它将为文本文件添加一个地址,即使它已经存在。感谢您的见解。

<?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();
}

?>

3 个答案:

答案 0 :(得分:3)

strpos()返回找到字符串的位置,或false

检查$pos === true永远不会成功,因为strpos()的返回值不能为true

请尝试if ($pos !== false) { ...

答案 1 :(得分:1)

你的这一行:

$pos = strpos($logcontents, $email);

返回找到的字符串的位置,而不是布尔值。

if ($pos === true) {

可能包含0作为职位。

您应该将其更改为:

if ($pos != false) {

Reference

答案 2 :(得分:0)

strpos永远不会回归真实。它可以返回零位置,除非你使用严格的比较,否则将被PHP解释为false。

if ($pos !== false)