php 地址栏url,PHP标题(位置:…):强制地址栏中的URL更改

在PHP移动网站中,开发者遇到一个问题,即在登录后使用header()函数进行重定向,地址栏的URL没有更新,导致相对路径资源无法加载。尽管在其他情况下header()函数能够成功改变URL,但在这个特定场景下并未生效。讨论中提到了可能的解决方案,如检查输出缓冲、确保使用绝对URL、避免空格和检查是否有其他重定向。解决方案包括确保在重定向前关闭会话操作,并且在header()函数调用后立即执行。
摘要由CSDN通过智能技术生成

PHP标题(位置:…):强制地址栏中的URL更改

我目前正在使用带有数据库的PHP会话进行身份validation的移动网站上工作。 我有一个login页面,表单上提交到server_login.php 。 PHP文件然后创build一些会话数据(存储在$ _SESSION中),并将用户redirect回索引页面:

header("location:../../index.php");

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

奇怪的是,我在logout.php中使用header(“location:…”),并且使用URL更改成功redirect页面。

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

有没有强制地址栏上的URL的任何方法改变(并因此希望解决相对path问题)? 还是我做错了什么?

P / S:我正在使用jQuery Mobile。

编辑:这是我的代码redirect,不改变url:

// 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"); }

尝试改变:

header("Location : blabla") ^ | (whitespace)

header("Location: blabla")

那么,如果服务器发送一个正确的redirect头,浏览器redirect,因此“更改url”。 那么这可能是一个浏览器问题。 我不知道它是否与它有任何关系,但是你不应该在位置头部发送一个相对的URL(“HTTP / 1.1需要一个绝对的URI作为参数到»位置:包括scheme,主机名和绝对path,但有些客户端接受相对URI“, http://php.net/manual/en/function.header.php )和”location“必须大写,如:

header('Location: http://myhost.com/mypage.php');

在你的表单元素中添加data-ajax="false" 。 我有使用jQuery手机相同的问题。

我发布表单时遇到同样的问题。 我所做的就是closures数据ajax。

不要使用任何空格。 我遇到过同样的问题。 然后我删除了如下的空白区域:

header(location:index.php);

然后它的工作。

你可能想rest一下; 在你的位置之后:

header("HTTP/1.1 301 Moved Permanently"); header('Location: '. $YourArrayName["YourURL"] ); break;

如果没有find会话数据,您确定您正在redirect的页面也没有redirect吗? 这可能是你的问题

还有,总是添加像@Peter Obuild议的空白。

//注册用户的名字和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");

改成

//注册用户的名字和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"); }

我得到了一个解决scheme,为什么不使用爆炸如果你的url是类似的

url – > website.com/test/blog.php

$StringExplo=explode("/",$_SERVER['REQUEST_URI']); $HeadTo=$StringExplo[0]."/Index.php"; Header("Location: ".$HeadTo);

只要改变你的喜好回家

$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/home'; header('Location: ' . $home_url);

正如“cfphpflex”build议你可以添加break; 设置标题后。 你也可以回显一些东西,比如echo 'test'; 。

如果它在另一个文件夹中,你应该使用它像header(Location:../index.php)

使用

header(“Location:index.php”); //这个工作在我的网站

阅读更多的头文件()在PHP文档。

为什么所有这个位置的url?

http://localhost:8080/meet2eat/index.php

你可以使用

index.php

如果PHP文件在同一个文件夹,这是更好的,因为如果你想主持的文件或更改端口,你将没有问题,达到这个URL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值