【问题标题】:HTML/PHP - default input valueHTML/PHP - 默认输入值
【发布时间】:2011-08-26 10:22:38
【问题描述】:

我有一个 post php 表单和一组输入:

  1. 你的名字
  2. 您的姓氏
  3. 我的名字

每个输入看起来都一样,只是名称发生了变化:

<input type="text" name="your_name" value="<?php echo get_option('your_name'); ?>" />

value=不可用时如何设置默认值?

[编辑]

好的,所以,通常我会这样做:

<input type="text" name="your_name" value="Mike" />

但在这种情况下,我有一个 PHP 脚本,它获取输入数据并使用 value="&lt;?php echo get_option('your_name'); ?&gt;" 显示它。所以我不知道如何强制我的表单在我的输入中显示“Mike”。

【问题讨论】:

  • 我不明白在什么情况下value=可用。您能否澄清为什么它可能不可用?
  • @David Thomas,更新了问题。
  • 请记住转义特殊字符! stackoverflow.com/questions/6249151/…
  • @Wordpressor 你可以使用我的小库ValueResolver 来做更简单,请检查我的答案

标签: php forms input default-value


【解决方案1】:

您可以将 get_option 的值存储在一个变量中,并使用 php null coalesce 运算符设置一个默认值(如果存在)。

<?php $value = get_option('your_name');?>

<input type="text" name="your_name" value="<?php echo $value ?? NULL; ?>">

【讨论】:

    【解决方案2】:

    只需使用三元运算符。试试这个很容易

    $default = 'Mike';
    
    $your_name = get_option('your_name');
    
    $condition = !empty($your_name) ? $your_name : $default;
    
    <input type="text" name="your_name" value="<?php echo $condition; ?>" />
    

    【讨论】:

      【解决方案3】:

      这就是我在我认为类似的问题中解决此问题的方法,当读取 $_POST 时,值是从 $_POST 值填充的,否则设置 Mike 的默认值

      value="<?php if (isset($_POST['name'])) echo $_POST['name']; else echo "Mike"?>" >
      

      希望有一天这对某人有所帮助

      【讨论】:

      • 为避免XSS攻击,请将上面的echo $_POST['name']替换为echo htmlspecialchars($_POST['name'])
      【解决方案4】:

      在这种情况下,您可以使用我的小型库 ValueResolver,例如:

      $default = ValueResolver::resolve(get_option('your_name'), '<whatever your default value is>');
      

      别忘了使用命名空间use LapaLabs\ValueResolver\Resolver\ValueResolver;

      还有类型转换的能力,例如如果你的变量的值应该是integer,那么使用这个:

      $id = ValueResolver::toInteger('6 apples', 1); // returns 6
      $id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)
      

      查看docs 了解更多示例

      【讨论】:

        【解决方案5】:
        <input type="text" name="your_name" value="<?php echo empty(get_option('your_name')) ? "TheDefaultValue" : get_option('your_name'); ?>" />
        

        【讨论】:

          【解决方案6】:

          我同意 Teneff 的观点,但我会打破它。

          在 index.php 中,我会在文档顶部添加以下内容

          <?
          $defaultText = include 'default_text.php';  
          ?>
          

          你的表格在哪里:

          <form method="post" action="">
          <input id="names"><? echo $defaultText; ?> </input> 
          </form> 
          

          然后我会在根级别有一个名为“default_text.php”的单独文件。

          <?
          $Name = <<<EOD Name EOD;
          return $Name;
          ?>
          

          【讨论】:

            【解决方案7】:

            你可以做一个 switch 语句,并且默认是你想要的任何东西。

            【讨论】:

              【解决方案8】:

              您可以将get_option() 函数更改为类似

              function get_option($name) {
                 $defaults = array(
                    'fist_name' => 'Mike',
                    'fist_name' => 'Wordpressor',
                    'my_name' => 'Dunno'
                 );
                 // get the value from the $defaults array
                 $val = $defaults[$name];
              
                 // but if the same value has already been posted - replace the default one
                 if (isset($_POST[$name])) {
                    $val = $_POST[$name];
                 }
                 return $val;
              }
              

              【讨论】:

                【解决方案9】:

                由于value 是默认值,只需在get_option 函数周围添加一个条件,可能是这样的:

                <input type="text" name="your_name" value="<?php $var = get_option('your_name'); if ($var == '') $var = 'your_default'; echo $var; ?>" />
                

                【讨论】:

                • 在 html 中编写所有逻辑并不是最佳做法 :)
                • 非常正确,但我只是展示了实现目标的方法。应该假设与 php 代码和 HTML 有结构化的分离。
                【解决方案10】:

                在 post 变量的开头设置一些变量。

                喜欢

                $name_val = "";
                if(isset($_POST["your_name"])
                {
                    $name_val = $_POST["your_name"];
                }
                
                <input type="text" name="your_name" value="<?= $name_val?>">
                

                【讨论】:

                • 这里面有一个巨大的 XSS 漏洞。
                • 而且,不要太挑剔,value 属性中的未终止的 php 行。
                • @David Thomas,您所说的未终止行是什么意思?
                • @Ummar 在$name_val 之后没有终止;。严格来说,我不认为必须存在,但是……当它不存在时,它只会让我烦恼。 (虽然我没有否决答案。)
                • 请停止使用短开放标签。它们可能在某些配置中被禁用,PHP 将来可能会停止支持它。
                【解决方案11】:

                您需要先检查 get_option 的返回,如果默认值不可用,请替换一些内容

                <?php
                    $default = get_option('your_name');
                    if( $default == "")
                    {
                        $default = <whatever your default value is>;
                    }
                ?>
                <input type="text" name="your_name" value="<?php echo $default; ?>" />
                

                如果默认值不可用,则更改 get_option 以返回空字符串(或其他内容)。

                【讨论】:

                • 你可以使用我的小库 ValueResolver 更简单地完成它
                猜你喜欢
                • 1970-01-01
                • 2014-03-28
                • 1970-01-01
                • 2011-09-09
                • 2023-03-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多