首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP头(位置:.):强制地址栏中的URL更改

PHP头(位置:.):强制地址栏中的URL更改
EN

Stack Overflow用户
提问于 2011-09-19 06:44:52
回答 15查看 940.2K关注 0票数 77

我目前正在使用PHP会话和数据库进行身份验证的移动站点。我有一个登录页面,它的表单在提交时会转到server_login.php。然后,php文件创建一些会话数据(存储在$_SESSION中),并将用户重定向回索引页面:

代码语言:javascript
运行
复制
header("location:../../index.php");

新网页(index.php)正确加载;但是,当标题重定向页面时,地址栏处的URL不会更改;它停留在**而不是http://localhost/index.php,因此无法加载使用相对删除的所有其他资源。就好像网页仍然认为它驻留在/php / server而不是/。

奇怪的是,我对标题的其他用法(“位置:.”)在logout.php,通过更改URL成功地工作并重定向页面。

我已经确保在头重定向之前,我的*server_login.php*中没有输出(上面只是要检查的mysql调用),我也使用了ob_start()和ob_end_flush()。

是否有任何方法强迫地址栏上的URL更改(因此希望修复相对路径问题)?还是我做错什么了?

P/S:我使用的是jQuery手机。

编辑:以下是不改变URL的重定向代码:

代码语言:javascript
运行
复制
// some other stuff not shown


$sql = "SELECT * FROM $user_table WHERE email = '$myemail' AND password = '$mypassword'";
$login_result = mysql_query($sql, $connection);

$count = mysql_num_rows($login_result);

if ($count == 1) {

    // Successfully verified login information

    session_start();

    if (!isset($_SESSION['is_logged_in'])) {
        $_SESSION['is_logged_in'] = 1;
    }

    if (!isset($_SESSION['email'])) {
        $_SESSION['email'] = $myemail;
    }
    if (!isset($_SESSION['password'])) {
        $_SESSION['password'] = $mypassword;
    }

    // Register user's name and ID
    if ((!isset($_SESSION['name'])) && (!isset($_SESSION['user_id'])))  {
        $row = mysql_fetch_assoc($login_result);
        $_SESSION['name'] = $row['name'];
        $_SESSION['user_id'] = $row['user_id'];
    }

    header("Location: http://localhost:8080/meet2eat/index.php");

} else {
    // Not logged in. Redirect back to login page
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");

}
EN

回答 15

Stack Overflow用户

发布于 2012-04-20 21:34:41

试着改变:

代码语言:javascript
运行
复制
header("Location : blabla")
                ^
                |
           (whitespace)

代码语言:javascript
运行
复制
header("Location: blabla")
票数 89
EN

Stack Overflow用户

发布于 2011-09-19 06:53:17

如果服务器发送正确的重定向头,浏览器就会重定向,因此“更改url”。那可能是浏览器的问题。我不知道它是否与此有关,但是您不应该在location头中发送一个相对url ("HTTP/1.1需要一个绝对URI作为参数? Location:包括方案、主机名和绝对路径,但是一些客户端接受相对URI。",http://php.net/manual/en/function.header.php)和"location“必须大写,例如:

代码语言:javascript
运行
复制
header('Location: http://myhost.com/mypage.php');
票数 44
EN

Stack Overflow用户

发布于 2013-05-03 03:32:09

在表单元素中添加data-ajax="false"。我在使用jquery手机时也遇到了同样的问题。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7467330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档