【问题标题】:Php refresh page if file not found如果找不到文件,则php刷新页面
【发布时间】:2016-02-15 20:33:21
【问题描述】:

我的代码有效。如果附加值不存在,它会更改 lang 值。但是,它需要刷新才能进行更改。

if(isset($_GET['lang']) && file_exists('lang/'. $_SESSION['lang'] . '.php')) {
    $_SESSION['lang'] = $_GET['lang'];
} else {
    $_SESSION['lang'] = 'en'; // default value
}
if(!isset($_SESSION['lang'])) {
    $_SESSION['lang'] = 'en'; // default value
}
include('lang/'. $_SESSION['lang'] . '.php');

使用上面的代码,如果其他语言不存在,它确实将lang改回en,但是,它显示错误文件不存在,然后刷新页面后正常工作。 有没有办法在 lang 设置回 en 后立即重定向或刷新页面?

【问题讨论】:

    标签: php redirect header


    【解决方案1】:

    看来你的逻辑可能有错误。

    if(isset($_GET['lang']) && file_exists('lang/'. $_GET['lang'] . '.php'))
    

    您发布的第一个 if 语句检查 SESSION['lang'] 文件是否存在。它似乎应该检查 GET['lang'] 文件是否存在。

    您可以使用页眉功能来移动页面。

    header("Location: http://yoursite.com/yourpage.php");
    

    您还可以限制错误报告,使其不显示文件不存在的错误。

    error_reporting(0);
    

    【讨论】:

    • 如果我使用 Header,它会卡在重定向循环中......并粉碎所有网站。我在哪里写error_reporting(0); ?而且不仅显示错误,它还尝试包含一个不存在的文件,并且所有页面最终都没有文本。
    • 好的,那我误解了你的说法。我认为您可能需要发布更多代码。另外,我正在修改我的答案,因为我认为我看到了一个更大的问题。
    • 我正在使用数组变量翻译我的页面。并将它们放在文件中:en.php、al.php 然后根据访问者选择的语言将它们包含在我的页面中。如果他们写 ?lang=ru 它将尝试包含不存在的 ru.php。并且将显示没有文本的页面,直到刷新页面。
    猜你喜欢
    • 1970-01-01
    • 2019-03-21
    • 2011-11-14
    • 1970-01-01
    • 2021-08-15
    • 2012-12-19
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多