Привет, я создаю регистрационную форму и с PHP хочу проверить, действительно ли введены пользовательские входы. Я могу проверить электронную почту, имя пользователя, но я не могу проверить поля пароля.
Мой PHP-код:
<?php
if(isset($_POST['registerButton'])){
if(isset($_POST['regEmail'])){
$regEmail = $_POST['regEmail'];
}
else{
$regEmailError = 'Please Fill in Email field';
}
if(isset($_POST['regUsername'])){
$regUsername = $_POST['regUsername'];
}
else{
$regUsernameError = 'Please Fill in Username field';
}
if(($_POST['regPassword']) and ($_POST['regPassword2'])){
if( isset($_POST['regPassword']) == isset($_POST['regPassword2']) ){
$regPassword = $_POST['regPassword'];
}
else{
$regPasswordError = 'Passwords does not match!';
}
}
else{
$regPasswordError = 'Please Fill in Password fields';
}
}
?>
Мой HTML-код:
<input class="form-control " name="regEmail" type="email" placeholder="Email" required autofocus>
<input class="form-control " name="regUsername" type="text" placeholder="Username" required >
<input class="form-control " name"regPassword" type="password" placeholder="Password" required >
<input class="form-control " name="regPassword2" type="password" placeholder="Confirm Password" required>
Я понял, что если я echo "Success";
перед следующей строкой я вижу распечатку, но если я echo "Success;
после следующей строки я не могу видеть результат, поэтому я делаю что-то неправильно здесь и не могу понять, все кажется мне прекрасным. Любая помощь очень ценится.
if(($_POST['regPassword']) and ($_POST['regPassword2'])){
EDIT: ЕСЛИ я заменяю полный оператор if, который проверяет поля пароля:
if(isset($_POST['regPassword'])){
echo "Hello World";
}
он все еще ничего не отображает.
EDIT 2: Я только что решил проблему, проблема в том, что я пропускаю "=" в HTML-коде после значения имени
Изменить на:
if (isset($_POST['regPassword']) && isset($_POST['regPassword2'])) {
if ($_POST['regPassword'] == $_POST['regPassword2'] ){
$regPassword = $_POST['regPassword'];
} else {
$regPasswordError = 'Passwords does not match!';
}
}
В настоящее время вы сравниваете два значения isset, которые всегда верны, поскольку они были истинными в состоянии раньше. Просто удалите инструкцию isset
чтобы сравнить фактические значения
if(($_POST['regPassword']) and ($_POST['regPassword2'])){
if($_POST['regPassword'] == $_POST['regPassword2']){
$regPassword = $_POST['regPassword'];
}
else{
$regPasswordError = 'Passwords does not match!';
}
}
else{
$regPasswordError = 'Please Fill in Password fields';
}
вы должны также подумать о вспомогательной функции, которая устраняет сложность
function httppost($name) {
return isset($_POST[$name]) ? trim($_POST[$name]) : false;
}
таким образом вы могли бы просто использовать
$regPassword = httppost('regPassword');
$regPassword2 = httppost('regPassword2');
if($regPassword && $regPassword2){
if($regPassword != $regPassword2){
$regPasswordError = 'Passwords does not match!';
$regPassword = false;
}
} else {
$regPasswordError = 'Please Fill in Password fields';
}
<form method="POST"..>
и действительно нажимаете кнопку отправки? нажатие Enter не устанавливает значениеregisterButton
. Я скорее добавляю скрытое поле ввода, которое указывает на отправленную форму