将用户输入与PHP数组进行比较
对于我正在进行的一个小项目,我希望用户能够使用用户名注册帐户,但我不想配置数据库,即我只想将用户输入的用户名与PHP数组进行比较将用户输入与PHP数组进行比较,php,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 usernam
<?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);?>
您可以在数组中使用:
if (in_array($username, $a){
...
}
您可以简单地使用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"
}
?>
如果要跨请求保存已注册的帐户,必须将它们存储在文件或数据库(或其他东西)中,因为脚本从一开始就在每个请求上运行
您也可以使用in_数组函数,而不是在数组上循环。()
要存储用户名,请查看文件函数。(例如,写入文件,文件获取内容或文件(..)读取文件)。(对于真正的项目,请确保锁定文件以防止竞争条件。)尝试其他用户的解决方案,但您可以结合Traits
您可以创建一个名为VerifyUser
的Trait,其中包含以下内容:
trait VerifyUser {
public function verifyUser($user){
if (in_array($username, $usersArray)){
echo $username . "is already taken";
}else {
array_push($usersArray, $username);
}
}
}
如果您在OOP环境中工作,请不要忘记将自定义数组添加到类中。在使用VerifyUser
指令中添加此特征
迟来的回答,但因为我心情不好,下面是:
echo (in_array("someuser", array("user1","user2"))) ? "Got Username" : "Username not found";
如果要永久存储用户,则仍然需要将用户列表存储在某个位置。数据库是最好的方式。但是,如果您真的不想使用数据库,那么您必须将其存储在一个平面文本文件中。您可以在文件末尾执行类似于file\u放入内容('users.txt',序列化($a))
的操作,以将$a的内容存储在users.txt中。然后在文件的开头执行$a=unserialize(file_get_contents('users.txt')代码> S/He也应该考虑阻止对服务器上的文件的访问。谢谢乔治,这正是我所期待的,这是有意义的。这只是我自己做的一个小测试(我是PHP新手),谢谢你的帮助!有时候,最简单的答案就是最好的答案。我认为这对于刚接触PHP的人来说太高级了。没错,但我只回答了这个需要,可能对其他新手或高级用户有用。答案是使用in_array
函数,但我只展示了一种改进方法,以促进代码的可重用性。我投了票,因为这是一种有效的替代方法(更不用说我也喜欢Trialum;-)
echo (in_array("someuser", array("user1","user2"))) ? "Got Username" : "Username not found";