为什么这个PHP代码将初始默认选择值设置为'NONE'?

时间:2018-02-27 20:46:05

标签: php cookies refresh default option

处理我没有启动的文件并遇到此代码的问题,我无法完全理解。

页面设置的cookie值等于页面上下拉选项中选择的秒数。然后,该选定值将以可能秒的间隔不断刷新页面。所有这些都可以正常工作,但是当首次加载文件或者没有cookie来设置秒的值时,它默认为“无”。

我想要做的是默认为15秒的值选择,而不是“无”。如果我在下面的数组中注释掉None值,它可以正常工作。然而,在某些极端情况下,某人可能必须将其设置为“无”。因此,完全关闭此功能不是一种选择。

这里创建了cookie:

function cookie_based_settings() {
        global $login_id;
        if (($_GET['set_refresh_time'] || !$_COOKIE["refresh_time_$login_tech_id"]) && !$norefreshcookie) {
                if (!$_COOKIE["refresh_time_$login_id"]) {
                        $_POST['refresh_time']='NONE';
                }
                setcookie("refresh_time_$login_id", $_POST['refresh_time'], time()+60*60*24*365, '/', 'website.domain.com');
                $_COOKIE["refresh_time_$login_id"]=$_POST['refresh_time'];
        }

}

cookie_based_settings();

以下是生成表单值的大部分代码,默认为“None”。任何人都可以解释为什么选择总是选择“无”选项而不选择其他值之一?我看不到它。

<form method=POST action=the_file.php3?set_refresh_time=1 name=globe>Auto Refresh:<select name=refresh_time onchange='submit(globe);'><?
        # build array of refresh times (seconds):
        $refresh_times[]=15;
        $refresh_times[]=30;
        $refresh_times[]=45;
        $refresh_times[]=60;
        $refresh_times[]=120;
        $refresh_times[]=180;
        $refresh_times[]=240;
        $refresh_times[]=300;
        $refresh_times[]='NONE';
       foreach ($refresh_times as $key => $value) {
                if ($value==$_COOKIE["refresh_time_$login_id"]) {
                        $selected="selected";
                } else {
                        $selected='';
                }
                printf("<option %s value=%s>%s</option>",$selected,$value,$value);
        }
        ?></select></form>

此处的HTML输出如下所示:

<form method="POST" action="the_file.php3?set_refresh_time=1" name="globe">Auto Refresh:
 <select name="refresh_time" onchange="submit(globe);">
  <option value="15">15</option>
  <option value="30">30</option>
  <option value="45">45</option>
  <option value="60">60</option>
  <option value="120">120</option>
  <option value="180">180</option>
  <option value="240">240</option>
  <option value="300">300</option>
  <option selected="" value="NONE">NONE</option>
 </select>
</form>

我意识到Option标签的“选择”添加正在执行它,默认情况下如果cookie不存在则选择它,但我不确定原因。或者如何改变这种行为。理想情况下,我只想添加一个简单的行来强制使用静态编码的默认值:

$default_value=15;

1 个答案:

答案 0 :(得分:0)

确定。好吧,我是个白痴。设置$ _POST [&#39; refresh_time&#39;] =&#39; NONE&#39 ;;价值为&#39; 15&#39;工作,正是我需要的。我觉得再次看到新眼睛也有帮助。