Я искал несколько недель, но не могу найти ничего подходящего для этой конкретной проблемы.
У меня есть страница PHP live.php. Он успешно требует имени пользователя и пароля для доступа к защищенной странице (aliveata.php). Следующая форма находится в live.php:
<form name="LoginForm" form action="liveverify.php" method="post">
User Name:<input type="text" name="username" value="" />
Password:<input type="password" name="password" value="" />
<input type="submit" value="Login" /></p>
</form>
liveverify.php имеет:
<?php
$usernames = array("user1, uer2, user3");
$passwords = array("pass1, pass2, pass3");
$page = "livedata.php";
for($i=0;$i<count($usernames);$i++)
{
$logindata[$usernames[$i]]=$passwords[$i];
}
$found = 0; for($i=0;$i<count($usernames);$i++) { if ($usernames[$i] == $_POST["username"]) { $found = 1; } } if ($found == 0) { header('Location: liveerror.php'); exit; }
if($logindata[$_POST["username"]]==$_POST["password"]){ session_start(); $_SESSION["username"]=$_POST["username"]; header('Location: '.$page); exit;}else{ header('Location: liveerror.php'); exit;}?>
Мое желание состоит в том, чтобы устранить необходимость в имени пользователя и требовать только действительный пароль. Я предполагаю, что мне нужно исключить ссылки на имя пользователя в liveverify.php. Однако все, что я пробовал, провалилось. Я ценю любую помощь.
Кажется немного странным игнорировать имя пользователя, но при условии, что имя пользователя все еще будет передаваться через форму, вы должны иметь возможность сделать что-то вроде
$passwords = array( "pass1", "pass2", "pass3" );
$page = "livedata.php";
if ( in_array($_POST["password"], $passwords) )
{
session_start();
$_SESSION[ "username" ] = $_POST[ "username" ];
header( 'Location: ' . $page );
exit;
}
else
{
header( 'Location: liveerror.php' );
exit;
}
Это позволит имени пользователя не совпадать и стать тем, что нравится пользователю
Других решений пока нет …