Я пытаюсь взять два поля формы и проверить, не ввел ли пользователь что-либо в эти два поля. Если поля заполнены, я хочу отправить по электронной почте значение тех полей, которые введен пользователь. Если поля пустые или заполнены только пробелами, я хочу отобразить общее текстовое сообщение, указывающее в письме, в котором указано, что эти поля формы пустые. Я попробовал empty(), isset() и много разных вариантов каждого из них, а также проверил, равна ли переменная NULL, и все ничего не делают. Мне интересно, что я делаю неправильно, и это должно быть довольно просто.
HTML
<div class="formField">Desired UserName: <input type="text" name="userName" style="width:200px;" value="" /></div>
<div class="formField">Desired Password: <input type="text" name="userPass" style="width:200px;" value="" /></div>
PHP
$userName = $_REQUEST['userName'];
$userPass = $_REQUEST['userPass'];
if ($userName === NULL ) {
$userName = "Use Generic Username, No Preference Entered";
}
if ($userPass === NULL ) {
$userPass = "Use Generic Password, No Preference Entered";
}
$MESSAGE_BODY .= "Desired Username: ".$_POST["userName"]."\r\n";
$MESSAGE_BODY .= "Desired Password: ".$_POST["userPass"]."\r\n";
Мне кажется, вы хотите что-то подобное
$userName = !empty($_POST['userName']) ? $_POST['userName'] :
'Use Generic Username, No Preference Entered';
$userPass = !empty($_POST['userPass']) ? $_POST['userPass'] :
'Use Generic Password, No Preference Entered';
$MESSAGE_BODY .= sprintf('Desired Username: %s%sDesired Password: %s%s',
$userName, PHP_EOL, $userPass, PHP_EOL);
Основная проблема заключается в том, что вы не использовали $userName
и $userPass
в своей строке $MESSAGE_BODY
.
$userName
и $userPass
не равны нулю. Когда пользователь не передает данные, это просто пустая строка.
Перед проверкой можно обрезать:
$userName = isset($_REQUEST['userName'])? trim($_REQUEST['userName']): false;
trim() удалить лишние пробелы.
Теперь вы можете использовать его в своем состоянии так:
if (!$userName) { // if no username
$userName = "Use Generic Username, No Preference Entered";
}
$userName = $_REQUEST['userName'];
$userPass = $_REQUEST['userPass'];
if (empty(trim($userName))) {
$userName = "Use Generic Username, No Preference Entered";
}
if (empty(trim($userPass))) {
$userPass = "Use Generic Password, No Preference Entered";
}
$MESSAGE_BODY .= "Desired Username: ".$_POST["userName"]."\r\n";
$MESSAGE_BODY .= "Desired Password: ".$_POST["userPass"]."\r\n";
$userName
и$userPass
затем ничего не делали с ними. Значения в$_REQUEST
и$_POST
остались без изменений.