创建一个页面,在登录时检测多个用户名.PHP

时间:2013-12-14 00:21:21

标签: php file-io increment

每次$ data和$userCount具有相同的值时,我想将$fileLineArr2[0]增加1。有人可以解释为什么$userCount仍然是0吗?我是一名编程学生,所以请以一种只有中级经验的人可以理解的方式提供帮助。

if(!empty($_GET["user"]) && !empty($_GET["pass"]) && !empty($_GET["fname"]) && !empty($_GET["lname"])){

    $handle = fopen($accountInfo, 'a') or die('Cannot open file: '.$accountInfo);
    $data = $_GET["user"]."; ";
    $data = strtoupper($data);
    fwrite($handle, $data);
    $data2 = $_GET["pass"]."; ";
    fwrite($handle, $data2);
    $data3 = $_GET["fname"]."; ";
    fwrite($handle, $data3);
    $data4 = $_GET["lname"].";\n";
    fwrite($handle, $data4);
    fclose($handle);

    $reading2 = fopen($accountInfo, 'r') or die('Cannot open file: '.$accountInfo);

    echo "$userCount";

    while(!feof($reading2)){
            $fileLines2 = fgets($reading2);
            $fileLineArr2 = (explode("; ", $fileLines2));
            //print_r($fileLineArr2);
            **if($fileLineArr2[0] == $data)
            {
                $userCount++;
            }**
            echo "$fileLineArr2[0] ";
            echo " $data". "\n";
            echo "$userCount";
        }


    fclose($reading2);
    if($userCount > 1)
    {
        $validSignUp = false;
        ?>
        <font color='red'>Username already taken!</font>
        <?php
    }
    elseif($userCount == 0)
    {
        ;
    }
    else
    {
        $validLogin = true;
        $validSignUp = true;
    }
}

1 个答案:

答案 0 :(得分:0)

从文件中读取时,字符串末尾有一个不可见的换行符。您需要将其删除,然后与$data进行比较。

要删除换行符,您可以执行类似

的操作
$string = trim(preg_replace('/\s+/', ' ', $string));

$string是文件中的行。

修改

根据评论部分的讨论,这不是您想要的。

您要做的是以下内容:

$line = explode('; ', $lineData);

$lineData是从文件中读取的信息。

这将为您提供行中列出的所有元素的数组。我们知道用户名列在第一个位置IE $line[0]。所以我们将数据与之比较。

if ($line[0] == $data) {
    $userCount++;
}

$data是我们正在比较的信息。