【问题标题】:Email Form Field Variable电子邮件表单字段变量
【发布时间】:2013-09-18 23:24:37
【问题描述】:

我正在尝试获取两个表单字段并检查用户是否在这两个字段中输入了任何内容。如果字段已填写,我想通过电子邮件发送用户输入的字段的值。如果字段为空或仅填充空格,我想在电子邮件中显示一条通用文本消息,指出这些表单字段为空。我尝试了 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";

【问题讨论】:

  • 不要费心检查null。如果请求参数是set(例如isset($_REQUEST['userName']),它们永远不会是null
  • 使用if (isset($_REQUEST['username']))而不是先分配给变量。

标签: php html forms


【解决方案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";
}

【讨论】:

  • 这没有用,但我想如果我可以玩这个,它会教我一些关于 isset() 函数的非常有用的东西。下面这个家伙的回答实际上解决了这个问题。非常感谢您的尝试。
【解决方案2】:

在我看来你想要这样的东西

$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);

您的主要问题似乎是您没有在$MESSAGE_BODY 字符串中使用$userName$userPass

【讨论】:

  • 您的解决方案确实完美无缺。所以让我看看我是否明白发生了什么。通过声明 $userName = $_REQUEST['userName']; $MESSAGE_BODY .= "所需的用户名:".$_POST["userName"]."\r\n";这实际上是否意味着我正在渲染这条线无用? $userName = $_REQUEST['userName'];
  • @MikeDinder 是的。您正在为 $userName$userPass 分配值,然后对它们什么也不做。 $_REQUEST$_POST 中的值保持不变。
【解决方案3】:
$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";

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2018-02-23
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多