PHP用户名/密码登录
我如何编辑下面的PHP以允许额外或多个用户名和密码。例如User1的密码为JHFDE3,User2的密码为LKFW34等。从我读过的内容来看,一个关联数组可能是最好的。没有数据库,它是硬编码,只需登录并能够查看一个PHP页面。PHP用户名/密码登录
对于下面的特定代码,我将如何使它成为一个关联数组?谢谢。
<?php
session_start(); //initiates the sessions
if ($_POST['submit']) //checks to make sure the login form has been submitted
{
$user = "XXXXX";
$pass = "XXXXXXX";
if ($_POST['pass'] == $pass && $_POST['user'] == $user) //checks if the password submitted by the user matches the password stored in the $pass variable
{
$_SESSION['access'] = 1; //if login is successful create a session that can be authenticated
header("Location: " . $_SERVER['PHP_SELF']); //reload the page. The page will now not load the login form (see the first if condition)
} else //if password is incorrect reload the login form
{
header("Location: " . $_SERVER['PHP_SELF']);
}
} else if (!$_SESSION['access']) //if the "access" session is not accessible show the form (not logged in)
{
?>
试试这个:
-------------------------- UPDATE --------- -------------------------
<?php
session_start(); //initiates the sessions
//begin testing
$_POST['user'] = 'username1';
$_POST['submit'] = true;
$_POST['password'] = 'pass3';
//end testing
if (isset($_POST['submit'])) //checks to make sure the login form has been submitted
{
$users = array('username1','username2','username3');
$passwords = array('pass1','pass2','pass3');
if(in_array($_POST['user'], $users))
{
$key = array_search($_POST['user'], $users);
if($passwords[$key]==$_POST['password'])
{
$_SESSION['access'] = 1; //if login is successful create a session that can be authenticated
//header("Location: " . $_SERVER['PHP_SELF']);
echo "welcome back ".$_POST['user'];
} else //if password is incorrect reload the login form
{
//header("Location: " . $_SERVER['PHP_SELF']);
echo "Password incorrect, error, redirecting to login";
}
}
}
else
{
echo "Login form";
}
?>
输出:
Password incorrect, error, redirecting to login
但是,如果你改变$ _ POST值['password']为'pass1',如下所示:
$_POST['password'] = 'pass1';
你有这样的输出:
welcome back username1
Saludos;)
非常感谢您的建议。工作很好。但是,当我实现你的代码时它会产生错误。我仔细检查了任何可能的拼写错误,仔细阅读了关于in_array调用的内容,仍然找不到为什么会产生PHP错误。作为参考,我使用的是默认的PHP版本5.2.17。任何其他建议都会很棒。谢谢。 –
代码更新...在我的本地主机上测试;) – Hackerman
罗伯特 - 非常感谢你。你的耐心和知识解决了这个问题。我可以创建几个用户,每个用户都有自己的密码。在您的第一个建议后,我遇到了一个问题(错误),也导致会话未设置,例如页面重新载入提示登录。我已经解决了这个问题,现在,在您的帮助下,它的工作非常完美。再次感谢你。如果您希望看到完整的代码,请告诉我。 谢谢其他人也贡献了。 ;) –
如果只有两个用户不应该很难解决,你可以做一些事情如下;
<?php
//change the variable values accordingly
$user1='user1';
$user2='user2';
$pass1='pass1';
$pass2='pass2';
if ($_POST['submit']) {
//check if they are equal to your info
if(($_POST['user']==$user1) && $_POST['pass'] == $pass1){
$_SESSION['access'] = 1;
header("Location: " . $_SERVER['PHP_SELF']);
} else if(($_POST['user']==$user2) && $_POST['pass'] == $pass2){
$_SESSION['access'] = 1;
header("Location: " . $_SERVER['PHP_SELF']);
} else {//not valid at all
//do what you want for login fail
}
}
?>
因此该代码可以使用单个用户...但它的工作代码,对不对? – Hackerman
一般来说,我们欢迎提出问题的问题,首先您可以在PHP手册网站上搜索“关联数组”。你也需要一个'foreach'。这就是说,你真的应该使用一个数据库 - 也许http://usercake.com/会被使用?我没有用过它,但似乎在这里提到了一点点。 – halfer
如果这不是学生作业,硬编码密码是一个坏主意。 即使它是一项任务,它也正在设置坏习惯。 – Steve