php - Safari 不更新 SQL 查询

标签 php mysql

我有一个简单的表格来更新我数据库中的一行,还有一个语言链接/按钮。提交按钮工作并将值写入我的数据库。但是,在我单击链接按钮两次(返回同一页面)后,我在文本框中看到了旧值。我刷新页面,然后看到更新后的值。它在 Chrome 上运行没有任何问题,但 Safari 以某种方式缓存了数据库值并且不刷新。

这是我的代码:

// Get language
if (isset($_GET['language']))
{
  $get_lang = $_GET['language'];

  if ($get_lang == 'fr') {
      $lang_code = 'fr';
  }
  else if ($get_lang == 'en') {
      $lang_code = 'en';
  }
  else {
      $lang_code = 'fr';
  }
}
else
{
  $php_self = htmlspecialchars($_SERVER["PHP_SELF"]);
  header("refresh:0; url=$php_self?language=en");
  $lang_code = 'en';
}

include('../inc/config.php');
include('inc/head.php');

global $db;


// Update page
if ( isset($_POST['submit']) )
{

  $lang_code        = $_GET['language'];
  $page_title       = $_POST['page_title'];

  if ( $lang_code == 'fr' )
  {
    $updatePage = $db->execute("UPDATE pages SET page_title_fr=? WHERE page_id=1", array($page_title));

  }
  else if ( $lang_code == 'en' )
  {
    $updatePage = $db->execute("UPDATE pages SET page_title_en=? WHERE page_id=1", array($page_title);
  }

}


// Get page content
$page_content = $db->get_row("SELECT * FROM pages WHERE page_id = 1" );

if ( $lang_code == 'fr' )
{  
  $page_title       = $page_content->page_title_fr;
}
else
{
  $page_title       = $page_content->page_title_en;
}

和我的表格:

// Button for changing the language
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?language=<?php if ( $lang_code == 'fr' ) { echo 'en'; } else if ( $lang_code == 'en' ) { echo 'fr'; } ?>"><?php if ( $lang_code == 'en' ) { echo 'FRENCH'; } else { echo 'ENGLISH'; } ?></a>


<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?language=<?php echo $lang_code; ?>">

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

<button name="submit" type="submit">SAVE</button>

</form>

编辑:我试过禁用缓存但它没有帮助。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

编辑 2:从 Safari 的“开发”菜单禁用缓存可以解决问题

最佳答案

我通过将这些行添加到我的 htaccess 文件中解决了这个问题

<FilesMatch "\.(html|htm|php)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</FilesMatch>

关于php - Safari 不更新 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382325/

相关文章:

php - PHP 上的类实例?

mysql - 添加第二个自增字段并允许重复

javascript - 如何(SELECT *)node.js 中的两个 mysql 表(express)

mysql - 是什么导致我的脚本选择部分出错?

c# - 如何使用 Odbc 插入 DateTime 对象?

php - 纬度问题的格式文本框

php - 发现 PHP mySQL 语法错误

php - 后台论坛OctoberCMS中的关系

php - 如果我想存储 ID 数组,正确的数据类型是什么?

php - 在唯一键上使用空值执行 "INSERT...ON DUPLICATE KEY UPDATE"的变通解决方案