Он регистрируется даже с неправильным именем пользователя и паролем, пожалуйста, помогите мне разобраться, в чем проблема. Я хочу, чтобы он входил в систему только и только если он совпадает с именем пользователя и паролем, но он работает неправильно.
Здесь код:
<form name="login" method="post" action="countries.php">
<p> </p>
<table border=0 width=500px align=center>
<tr>
<td>Enter User Name</td>
</tr>
<tr>
<td><input type=text size=30 value="" name=t1></td>
</tr>
<tr>
<td>Enter Password</td>
</tr>
<tr>
<td><input type=password size=30 value="" name=t2>
</td>
</tr>
<tr>
<td><input type=reset value="Clear Form" name=b2>
</td>
<td><input type=submit value="Login Form" name=b4>
</td>
</td></tr>
<tr>
<td><input type=submit value="Guest User" name=b5>
</td>
</tr>
</table>
<hr />
</center>
<?php
$t1="Maha";
$t2="abc";
if($t1 == "Maha" && $t2 == "abc")
{
header("countries.php");
exit;
echo " We are glad you are visiting us again. Lets plan yout tour together." ;
}
else {
header("final.php");
exit;
echo " User name or password is incorrect. Try again.";
}
?>
</form>
Ваша переменная приходит через POST.
if($_POST['t1'] == "Maha" && $_POST['t2'] == "abc")
У вас есть другие проблемы, из-за которых это может нарушиться другими способами, но оно всегда попадает в состояние входа, потому что вы сравниваете эти переменные (с жестко закодированными значениями):
$t1="Maha";
$t2="abc";
к жестко закодированным учетным данным:
if($t1 == "Maha" && $t2 == "abc")
вместо чтения пользовательского ввода через $_POST
.
Вы публикуете форму на countries.php
ваш код входа должен быть в countries.php
Кроме того, в коде заголовка отсутствует ключевое слово Location:
header('Location: http://www.example.com/');
вот ваш модифицированный PHP-код, который должен быть в countries.php:
<?php
$t1=$_POST['t1'];
$t2=$_POST['t2'];
if($t1 == "Maha" && $t2 == "abc")
{
header("Location: countries.php"); // probably some other page since countries.php has the login verification logic.
exit;
echo " We are glad you are visiting us again. Lets plan yout tour together." ;
}
else {
header("Location: final.php");
exit;
echo " User name or password is incorrect. Try again.";
}
?>
location
в функцииheader
.$t1="Maha"; $t2="abc";
поэтому они всегда будут правильными. Измените на$t1=$_POST['t1']; $t2=$_POST['t2'];
, в дополнение кlocation
отсутствующему вheader("Location: final.php")