在iPad上方向更改时,PHP POST值会出现问题

时间:2016-06-02 22:13:53

标签: php ipad

我有一个用PHP编写的网站,可以在台式机,手机和iPad上运行。桌面和手机一切都很好。但是,在iPad上我有一个问题,我可以在纵向模式下将提交的POST值保存到数据库,但是当我尝试在横向上执行相同的操作时,我只是没有获得实际在表单中提交的值POST。

我在两个方向上都有相同的输入表单代码。但是,当我在纵向模式下检查作为POST值接收的数据时,我确实获得了实际输入到表单中字段的数据。我的问题是,当我在横向模式中执行相同的操作时,我没有从表单中获取提交的值。相反,我从数据库中获取该字段的数据,而实际上似乎没有任何方式可以将该数据最终作为POST值。考虑到我的代码是如何设置的,这似乎不太可能。

我现在将在所有这些内容中通过我的代码的关键部分与您联系。

我在index.php文件的标题部分有两个JavaScript函数,用于检查方向并响应方向更改(如下所示)。这些隐藏/显示同一index.php文件正文中每个方向的div。这些都有效,因为当我改变其方向时,我在iPad上看到页面内容正确更改。

function check_orientation() // check orientation for ipad home page.
{
  var div_portrait = document.getElementById('ipad_home_page_portrait');
  var div_landscape = document.getElementById('ipad_home_page_landscape');

  if(window.innerHeight > window.innerWidth)
  {
    div_landscape.style.display = 'none';
    div_portrait.style.display = 'block';
  }
  else
  {
    div_portrait.style.display = 'none';
    div_landscape.style.display = 'block';
  }
}    

window.addEventListener("orientationchange", function() 
{
  var div_portrait = document.getElementById('ipad_home_page_portrait');
  var div_landscape = document.getElementById('ipad_home_page_landscape');

  if (window.orientation == 0)
  {
    div_landscape.style.display = 'none';
    div_portrait.style.display = 'block';
  }
  else
  {
    div_portrait.style.display = 'none';
    div_landscape.style.display = 'block';
  }
}
, false);

在index.php的主体中,我已经简化了以下内容,以防止它比现有的更长。同时包括所有关键/相关代码位:

<body onload='check_orientation();'>

  <div id='ipad_home_page_landscape'>
    <?php include ('view_edit_company_ipad.php'); ?>
  </div>

  <div id='ipad_home_page_portrait'>
    <?php include ('view_edit_company_ipad.php'); ?>
  </div>

</body>

如上所述,我在两个方向使用相同的代码文件(如上面的2个div中所示)。我通过在文件中的关键点使用条件代码来设置页面组件的宽度和高度来实现这一点。

文件'view_edit_company_ipad.php'包含一个允许用户输入数据等的表格。以下是该表格中的字段:

<input type='text' name='company_contact_name' value='<?php 
  if (isset($company_contact_name)) echo $company_contact_name; ?>' />

正如我已经说过的,如果我使用以下代码检查POST值,我可以在纵向模式下将数据插入到表单中:

<?php echo $_POST[‘company_contact_name’]; ?>

但是,如果我在横向模式下执行相同操作,即使所有代码完全相同,我也不会获得表单中提交的值。

另外,我在index.php文件的最顶部使用了echo语句,因此我的任何代码都无法更改该POST值。当我在横向模式下使用iPad时,我只是没有从该echo语句中获取作为“company_contact_name”插入的数据。

我意识到我在这里写了很多,但如果我做得更短,我无法提供所有必需的信息。非常感谢任何阅读此内容的人,甚至更大的感谢,如果你能提供任何类型的解决方案。

1 个答案:

答案 0 :(得分:1)

尝试var_dump()转储整个$_POST超级全局,以查看脚本从浏览器收到的内容。

我怀疑isssue在同一表单中有多个表单控件名称。如果两个div代码都在同一个表单中,并且在两个div中都有名称为company_contact_name的输入,则表单提交中只发送其中一个(肖像div中的一个)。

如果是这种情况,请查看Multiple inputs with same name through POST in php

处的解决方案

基本上你可以有一个输入数组,但你也可以重命名其中一个。