使用 php 和 javascript 进行服务器重定向

发布于 2024-12-11 00:33:43 字数 432 浏览 0 评论 0原文

我从另一个页面调用这个函数

  Redirect($loc);

,我希望它重定向我的服务器。

function Redirect($loc) 
{    
   echo ("<script type=\"text/javascript\">var timeout=1; setTimeout(\"window.location.replace('" . $loc . "')\", timeout*1000 );</script>");    
} 

我有两个问题。一是函数中的脚本是否正确? 其次,假设我使用的是本地主机并且我希望我的应用程序是可移植的,我如何向它传递一个网址。所以我的文件名为 Registration.php,它位于我网站的 Users 文件夹中,如何构建 url?

I call this function from another page

  Redirect($loc);

and I want it to redirect my server..

function Redirect($loc) 
{    
   echo ("<script type=\"text/javascript\">var timeout=1; setTimeout(\"window.location.replace('" . $loc . "')\", timeout*1000 );</script>");    
} 

I have two questions. one is the script in the function is correct?
second, how do I pass it a url, assuming I am using the localhost and I want my applicaton to be portable. So I my file is called Registration.php and it is in the Users folder of my site, how do I contruct a url?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

潦草背影 2024-12-18 00:33:43

您使用 Javascript 进行重定向有什么特殊原因吗?如果客户端禁用了 Javascript 怎么办?

执行重定向的更好方法是在服务器端执行此操作,如下所示:

function redirect($location)
{
    header('Location: ' . $location);
    die();
}

这会将位置标头发送到浏览器,从而立即重定向它,从而节省带宽并避免在客户端禁用 Javascript。

请注意,由于这是一个标头,因此您需要在输出任何数据之前调用此方法(使用 echo 或其他方式),或者使用 输出缓冲,以便不必对您的应用程序进行太多更改。


正如评论中描述的覆盖相对 URL,您可以使用一个常量来存储您的 Web 根目录,其工作方式如下(替换行):

header('Location: ' . WEB_ROOT . $location);

示例用法:

<?php
define('WEB_ROOT', '/');
function redirect($location) 
{
    header('Location: ' . WEB_ROOT . $location);
    die();
}
redirect('Users/Registration.php');

Is there any particular reason that you're using Javascript to redirect? What if the client has Javascript disabled?

A better way to perform redirection would be to do it server-side like such:

function redirect($location)
{
    header('Location: ' . $location);
    die();
}

That will send the location header to the browser thus redirect it immediately, saving you bandwidth and the possibility that Javascript is disabled on the client side.

Note that as this is a header, you will need to either call this method before you have output any data (with echo or otherwise), or use output buffering so as to not have to change your application much.


As described in comment to cover a relative URL, you could use a constant storing your web root which would work like this (replace line):

header('Location: ' . WEB_ROOT . $location);

Example usage:

<?php
define('WEB_ROOT', '/');
function redirect($location) 
{
    header('Location: ' . WEB_ROOT . $location);
    die();
}
redirect('Users/Registration.php');
你爱我像她 2024-12-18 00:33:43

这比您的更适合重定向,使您的应用程序可移植使用相对路径,而不是绝对路径

function redirect($where = '') {
    if(!empty($where)) {
        echo '<script type="text/javascript">window.location = "' . $where . '";</script>';
        exit(); // to prevent script execution if user switched off JS
    }       
}

This is more suitable for redirection than yours, to make you application portable use relative paths, not absolute ones

function redirect($where = '') {
    if(!empty($where)) {
        echo '<script type="text/javascript">window.location = "' . $where . '";</script>';
        exit(); // to prevent script execution if user switched off JS
    }       
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文