2013-09-18 5 views
0

Я пытаюсь взять два поля формы и проверить, не ввел ли пользователь что-либо в эти два поля. Если поля заполнены, я хочу отправить по электронной почте значение тех полей, которые введен пользователь. Если поля пустые или заполнены только пробелами, я хочу отобразить общее текстовое сообщение, указывающее в письме, в котором указано, что эти поля формы пустые. Я попробовал 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"; 
+0

Не утруждайте себя проверкой на 'null'. При условии, что параметры запроса * установлены * (например, 'isset ($ _ REQUEST ['userName']'), они никогда не будут 'null' – Phil

+0

Используйте' if (isset ($ _ REQUEST ['username'])) 'вместо назначения переменная первая. –

ответ

1

$userName и $userPass не равны нулю, когда пользователь не передает данные это просто пустая строка.

Вы можете обрезать перед тем проверки:

$userName = isset($_REQUEST['userName'])? trim($_REQUEST['userName']): false; 

trim() удалить лишние пробелы.

Теперь вы можете использовать его в вашем состоянии, как так:

if (!$userName) { // if no username 
    $userName = "Use Generic Username, No Preference Entered"; 
} 
+0

Это не сработало, но я думаю, что если я смогу поиграть с этим, он научит меня чему-то очень полезному в отношении функции isset(). Ответ парня внизу действительно решил проблему. Большое вам спасибо за вашу попытку. . –

1

Кажется мне, что вы хотите что-то вроде этого

$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.

+0

Ваше решение было безупречно работать Итак, позвольте мне увидеть, если я понимаю, что происходит Тхо заявляя $ UserName = $ _REQUEST [ 'имя пользователя']; $ MESSAGE_BODY = "желаемое имя пользователя:".. $ _ POST [. "userName"]. "\ r \ n"; Действительно ли это означает, что я визуализую эту строку бесполезно? $ userName = $ _REQUEST ['пользователь Имя']; –

+0

@MikeDinder yup. Вы присваивали значения '$ userName' и' $ userPass', а затем ничего не делали с ними. Значения в '$ _REQUEST' и' $ _POST' остались неизменными. – Phil

0
$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"; 
Смежные вопросы