0

我确定以前有人问过这个问题,但我似乎找不到答案。我正在从事 PHP 开发,创建与 mySQL 数据库连接的基本登录。验证名称/密码正确后,我想显示一个欢迎屏幕。我的问题是,在开发过程中,我不能使用本地目录,例如:

header("location:script/login_success.php");

根据我的阅读,header()正在寻找一个http:// URL. 有什么办法可以在本地测试吗?

谢谢

4

4 回答 4

0

您可以将相对url传递给header没有问题。

header("Location: /route/here.php"); 

是完全合法的。尽管 RFC 规定必须提供包含架构的绝对 URL。一些 Web 客户端接受相对 URL。Dagon指出了 RFC 问题。

14.30 地点

Location response-header 字段用于将接收者重定向到 Request-URI 以外的位置,以完成请求或识别新资源。对于 201(已创建)响应,位置是请求创建的新资源的位置。对于 3xx 响应,位置应该指示服务器的首选 URI,用于自动重定向到资源。字段值由单个绝对 URI 组成。

Location       = "Location" ":" absoluteURI An example is:
Location: http://www.w3.org/pub/WWW/People.html
  Note: The Content-Location header field (section 14.14) differs
  from Location in that the Content-Location identifies the original
  location of the entity enclosed in the request. It is therefore
  possible for a response to contain header fields for both Location
  and Content-Location. Also see section 13.10 for cache
  requirements of some methods.
于 2013-07-10T04:18:56.860 回答
0

Header必须是页面中的第一个函数调用(您可以访问其他函数,但没有输出函数,甚至没有空格或输入).. 高于一切(echo 和 html)......它应该在任何地方都可以工作......

当您echo部分写入响应并且标题是200 ok......所以......header先写然后再写exit();

header('Location: url')...我不认为 url 必须是相对的...在 php.net 上阅读

于 2013-07-10T04:20:16.077 回答
0

header()可以采用任何 URL,甚至是相对 URL。如果您在本地测试某些东西,例如header("location: script/login_success.php")

请记住,必须在输出任何内容之前调用 header() 否则它将执行任何操作

于 2013-07-10T04:20:37.263 回答
0

通过执行此操作,您可以创建一个用于标头重定向的 url。

$url = isset($_SERVER["HTTPS"])?"https://":"http://".$_SERVER["HTTP_HOST"]."/script/login_success.php");
header("Location: $url");

这应该在 localhost 或其他地方正确解析。

另一种选择是设置一个常量来代表每个环境的基本 url

define("BASE_URL", "http://localhost/");

并使用它来构建 url

header ("Location: ".BASE_URL."script/login_success.php");
于 2013-07-10T04:21:15.037 回答