2
我有一个简单的窗体来更新我的数据库中的一行,并且还有一个语言链接/按钮。 SUBMIT按钮工作并将值写入我的数据库。然而,当我点击链接按钮两次(返回相同的页面),我看到文本框中的旧值。我刷新页面,然后看到更新的值。它在Chrome上工作时没有任何问题,但Safari以某种方式缓存数据库值并不刷新。Safari不更新SQL查询
这里是我的代码:
// 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的禁用缓存制定菜单解决了这个问题
难道没有什么意义,首先看到固定的问题你如何告诉浏览器不要缓存页面? – Lexib0y
你认为它应该缓存“$ page_title”吗?我从我的数据库中获取它,只有Safari缓存它,Chrome不会 – Dejavu
检查此以减少缓存:http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-跨所有浏览器的缓存 – zedfoxus