对于我正在处理的小项目,我希望用户能够使用用户名注册帐户,但我不想配置数据库,即我只想比较用户名带有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;在一个表单中。我想知道你将如何正确地实现这个功能。
答案 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.
}