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


Creating a page that detects multiple usernames when they login.PHP

每当$data和$fileLineArr2[0]具有相同值时,我想将$userCount递增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;
    }
}

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

要删除换行符,可以执行类似的操作

$string = trim(preg_replace('/'s+/', ' ', $string));

其中$string是文件中的行。

编辑

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

你想做的是:

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

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

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

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

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