PHP没有将用户发送回实际的index.php文件

时间:2015-01-08 19:45:07

标签: php html ajax jquery-mobile

我在Jquery Mobile遇到了这个奇怪的事情我无法完全解开..当你第一次进入网站时,你选择是否要注册或登录,当你点击注册时你会被带到您填写信息的新页面。完成后,您将被发送到processreg.php,它处理信息并将其插入数据库。这有效。完成之后,它会带你回到index.php,这里我无法理解它发生了什么。

编辑:在表单中添加data-ajax="false"可以解决此问题,但是,它会删除我不打算删除的默认页面切换效果。因此,我的问题不是一个公认的答案,我也试过通过javascript切换而没有任何运气。

看一下这张图片:

image showing the problem

这是在你注册之后。 index.php文件的HTML内容在那里,但是,如果您查看它仍在processreg.php的URL。所以当我尝试点击“注册”(“registrera dig”)时,我得到了一个错误,说它无法加载页面,因为它会尝试加载它,因为我们仍然在processreg.php页面上:

http://localhost:81/Webb/onlineplatform/includes/includes/pages/register.php

而不是:

http://localhost:81/Webb/onlineplatform/public/index.php

这是在processreg.php中运行的php脚本:

try {
    if (isset($_POST['submit_reg'])) {

        //Script that inserts data into database gets successfully run here

        header('Location: ../../public/index.php');
    }
}
catch (Exception $e) {
    echo $e;
}

index.php文件如下所示:

<?php
    include_once('../includes/files/header.php');
?>

<div data-role="header" class="ui-content no-ellipsis">
    <h1>Jensen Online Yrkeshögskola</h1>
</div>
<div data-role="main">
    <div class="center-wrapper" id="landing-container">
        <h2>Välkommen</h2>
        <p><b>Befintlig användare?</b></p>
        <a href="../includes/pages/login.php" class="ui-btn ui-btn-inline ui-corner-all ui-shadow" id="login-btn">Logga in</a>
        <p><b>Ny användare?</b></p>
        <a href="../includes/pages/register.php" class="ui-btn ui-btn-inline ui-corner-all ui-shadow" id="register-btn">Registrera dig</a>
    </div>
</div>

<?php
    include_once('../includes/files/footer.php');
?>

据我所知,它与Jquery Mobile有关,使用AJAX在不同的页面之间切换,但我不明白如何告诉PHP将我发送回实际的index.php而不只是抓住它的HTML内容并将其应用于processreg.php。我该怎么做?

2 个答案:

答案 0 :(得分:0)

改为回显JS命令:

echo "<script> window.location = 'http://localhost:81/Webb/onlineplatform/public/index.php' </script>";

答案 1 :(得分:0)

我遇到了同样的情况。问题是在客户端缓存 - 移动设备试图保持您的流量:-)

尝试使用新的唯一链接:

header('Location: ../../public/index.php?'.base64_encode(rand(0,10000)));

或者您可以尝试在移动应用中清除缓存。

如果有效 - 则检测到您的问题

所以现在你可以为index.php或你所有的页面http://php.net/manual/en/function.header.php以某种方式实现缓存禁用:

if (isset($_GET['nocache'])) {
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
}

并设置

header('Location: ../../public/index.php?nocache=1');
在processreg.php中

这应该允许index.php被缓存,而index.php?nocache = 1 - 总是动态的