Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提交按钮需要按下两次才能加载页面_Php_Html_Wordpress_Cookies - Fatal编程技术网

Php 提交按钮需要按下两次才能加载页面

Php 提交按钮需要按下两次才能加载页面,php,html,wordpress,cookies,Php,Html,Wordpress,Cookies,我用一个表单创建了一个双语网站,提交表单时保存一个cookie,然后每个页面检查cookie以查看要加载的语言 我遇到的问题是,提交按钮需要按下两次才能加载页面并切换语言 这是我的表格: <form action="<?php the_permalink(); ?>" name="region" method="post"> <input type="submit" name="region" value="English" id="en-button" /&

我用一个表单创建了一个双语网站,提交表单时保存一个cookie,然后每个页面检查cookie以查看要加载的语言

我遇到的问题是,提交按钮需要按下两次才能加载页面并切换语言

这是我的表格:

<form action="<?php the_permalink(); ?>" name="region" method="post">
   <input type="submit" name="region" value="English" id="en-button" />
   <input type="submit" name="region" value="Cymraeg" id="cy-button" />
</form>
这就是我在每个内容区域周围用来加载不同内容的内容:

<?php $language = $_COOKIE["region"];
if ($language == "English") { ?>
    <?php echo the_field('english_content'); ?>
<?php } else { ?>
    <?php echo the_field('welsh_content'); ?>
<?php } ?>


语言切换正确,但只有在您单击“提交”按钮两次后才能切换。

请尝试改用“选择”字段。浏览器可能会因为有两个提交按钮而崩溃。然后,您可以执行类似于
document.getElementById('theSelectMenu').onchange=function(){document.getElementById('theForm').submit();}
的操作,或者更好地使用jQuery进行操作。

尝试改用选择字段。浏览器可能会因为有两个提交按钮而崩溃。然后,您可以执行类似于
document.getElementById('theSelectMenu').onchange=function(){document.getElementById('theForm').submit();}
的操作,或者更好地使用jQuery进行操作。

发现问题是由于Cookie的工作方式引起的,发现了以下(重要)信息:

cookie的工作方式如下:

  • 你提出请求
  • 服务器将cookie头发送回客户端
  • 页面加载-PHP在此页面加载上看不到Cookie
  • 刷新
  • 客户端向服务器发送cookie头
  • 服务器接收cookie头,因此PHP可以读取它
  • 页面加载-Cookie在此处可见
  • 起初我从未真正注意到,但问题中实际上有一行代码用于处理刷新页面以便服务器接收cookie:-

    // Reload the current page so that the cookie is sent with the request
    header('Region: '.$_SERVER['REQUEST_URI']);
    
    改为:

    // Reload the current page so that the cookie is sent with the request
    header('Location: '.$_SERVER['REQUEST_URI']);
    

    事实证明,问题是由于Cookie的工作方式引起的,我们发现了以下(重要)信息:

    cookie的工作方式如下:

  • 你提出请求
  • 服务器将cookie头发送回客户端
  • 页面加载-PHP在此页面加载上看不到Cookie
  • 刷新
  • 客户端向服务器发送cookie头
  • 服务器接收cookie头,因此PHP可以读取它
  • 页面加载-Cookie在此处可见
  • 起初我从未真正注意到,但问题中实际上有一行代码用于处理刷新页面以便服务器接收cookie:-

    // Reload the current page so that the cookie is sent with the request
    header('Region: '.$_SERVER['REQUEST_URI']);
    
    改为:

    // Reload the current page so that the cookie is sent with the request
    header('Location: '.$_SERVER['REQUEST_URI']);
    

    那么您是说第一次单击
    submit
    按钮时,表单没有提交?如果是这样,您使用的浏览器是什么,是否在所有浏览器中都会出现这种情况?@deifwod当我单击“提交”按钮时,页面将重新加载,然后当我再次单击该按钮时,页面将重新加载,但这一次语言实际上发生了变化。因此,要更改语言,我需要单击两次。我使用的是Chrome,但它发生在Safari和Firefox中。好吧,那么表单实际上是在提交-在分配
    $language=$\u cookie['region']
    之前,您是否调用
    设置区域区域cookie
    ?@deifwod我真的不确定
    set\u region\u cookie
    在我的functions.php文件中,格式在我的header.php文件中。我对Wordpress的设置了解不多,因此在这方面我帮不了你什么忙。很遗憾,请尝试找出调用
    set\u region\u cookie()
    函数的位置和时间点。这听起来像是您试图在设置COOKIE之前分配
    $language=$\u COOKIE['region']
    ,这将解释为什么它只在第二次提交表单后才开始工作。您是说,第一次单击一个
    提交
    按钮时,表单未提交?如果是这样,您使用的浏览器是什么,是否在所有浏览器中都会出现这种情况?@deifwod当我单击“提交”按钮时,页面将重新加载,然后当我再次单击该按钮时,页面将重新加载,但这一次语言实际上发生了变化。因此,要更改语言,我需要单击两次。我使用的是Chrome,但它发生在Safari和Firefox中。好吧,那么表单实际上是在提交-在分配
    $language=$\u cookie['region']
    之前,您是否调用
    设置区域区域cookie
    ?@deifwod我真的不确定
    set\u region\u cookie
    在我的functions.php文件中,格式在我的header.php文件中。我对Wordpress的设置了解不多,因此在这方面我帮不了你什么忙。很遗憾,请尝试找出调用
    set\u region\u cookie()
    函数的位置和时间点。听起来好像您在设置COOKIE之前试图分配
    $language=$\u COOKIE['region']
    ,这就解释了为什么它在第二次提交表单后才开始工作。我真的没有选择将它放在下拉列表中,因为这是它的设计方式。我真的没有选择将它放在下拉列表中,因为这是它的设计方式。一旦它允许我,我将立即奖励赏金!只要赏金允许我,我就给它奖励!