我确定以前有人问过这个问题,但我似乎找不到答案。我正在从事 PHP 开发,创建与 mySQL 数据库连接的基本登录。验证名称/密码正确后,我想显示一个欢迎屏幕。我的问题是,在开发过程中,我不能使用本地目录,例如:
header("location:script/login_success.php");
根据我的阅读,header()正在寻找一个http:// URL
. 有什么办法可以在本地测试吗?
谢谢
您可以将相对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.
Header
必须是页面中的第一个函数调用(您可以访问其他函数,但没有输出函数,甚至没有空格或输入).. 高于一切(echo 和 html)......它应该在任何地方都可以工作......
当您echo
部分写入响应并且标题是200 ok
......所以......header
先写然后再写exit();
header('Location: url')
...我不认为 url 必须是相对的...在 php.net 上阅读
header()
可以采用任何 URL,甚至是相对 URL。如果您在本地测试某些东西,例如header("location: script/login_success.php")
请记住,必须在输出任何内容之前调用 header() 否则它将执行任何操作
通过执行此操作,您可以创建一个用于标头重定向的 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");