每次$ 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;
}
}
答案 0 :(得分:0)
从文件中读取时,字符串末尾有一个不可见的换行符。您需要将其删除,然后与$data
进行比较。
要删除换行符,您可以执行类似
的操作$string = trim(preg_replace('/\s+/', ' ', $string));
$string
是文件中的行。
修改强>
根据评论部分的讨论,这不是您想要的。
您要做的是以下内容:
$line = explode('; ', $lineData);
$lineData
是从文件中读取的信息。
这将为您提供行中列出的所有元素的数组。我们知道用户名列在第一个位置IE $line[0]
。所以我们将数据与之比较。
if ($line[0] == $data) {
$userCount++;
}
$data
是我们正在比较的信息。