我正在尝试获取两个表单字段并检查用户是否在这两个字段中输入了任何内容。如果字段已填写,我想通过电子邮件发送用户输入的字段的值。如果字段为空或仅填充空格,我想显示一条通用文本消息,指示在电子邮件中说明这些表单字段为空。我尝试了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 :(得分:1)
$userName
和$userPass
不等于null,当用户没有传递数据时,它只是一个空字符串。
您可以在检查前修剪:
$userName = isset($_REQUEST['userName'])? trim($_REQUEST['userName']): false;
trim()删除多余的空格。
现在你可以在你的情况下使用它:
if (!$userName) { // if no username
$userName = "Use Generic Username, No Preference Entered";
}
答案 1 :(得分: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
。
答案 2 :(得分: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";