将用户输入与PHP数组进行比较

时间:2016-05-23 23:01:52

标签: php

对于我正在处理的小项目,我希望用户能够使用用户名注册帐户,但我不想配置数据库,即我只想比较用户名带有PHP数组的输入。

<?php
$a=array("user1","user2");
for($a =0; $x<$arrlength; $a++){
if($username == $a){ //i want to say if $username is in array alert this and do nothing
$echo print a new username, already taken;
return false;
else(
array_push($a,username);?>

我正在与w3学校合作PHP示例,我有类似的东西(用户输入一个&#39;用户名&#39;在一个表单中。我想知道你将如何正确地实现这个功能。

5 个答案:

答案 0 :(得分:4)

您只需使用in_array()功能:

<?php
$usernames = array("user1", "user2", "user3", "user4");

if (in_array("username_from_user_input", $usernames)) {
    echo "Got Username";
}else{
    echo "Username not found"
}

?>

答案 1 :(得分:2)

如果要跨命令保存已注册的帐户,则必须将它们存储在文件或数据库(或其他内容......)中,因为脚本是从每个请求的start开始运行的。

您也可以使用in_array函数,而不是遍历数组。 (http://php.net/manual/de/function.in-array.php

要存储用户名,请查看文件功能。 (例如http://php.net/manual/en/function.file-put-contents.php写入文件,file_get_contents或文件(..)读取文件)。 (对于实际项目,请确保锁定文件以防止竞争条件。

答案 2 :(得分:1)

迟到的答案,但是因为我心情ternary,所以这就是:

echo (in_array("someuser", array("user1","user2"))) ? "Got Username" : "Username not found";

答案 3 :(得分:0)

您可以使用Test

Test

答案 4 :(得分:0)

尝试其他用户的解决方案,但您可以与Traits结合使用。

您可以使用下一个内容创建名为VerifyUser特征

trait VerifyUser {
    public function verifyUser($user){
        if (in_array($username, $usersArray)){
            echo $username . "is already taken";
        }else {
            array_push($usersArray, $username);
        }
    }
}
  

如果您在OOP环境中工作,请不要忘记将自定义数组添加到您的班级。使用use VerifyUser指令添加此特征。

class UsersCollection{
    use VerifyUsers

    $usersArray= ["user1", "user2"];

    $this->verifyUser("user1"); //It echo the custom message you could return a boolean value and then specify a custom behaviour.
}