Перенаправление сервера с php и javascript - PullRequest
0 голосов
/ 20 октября 2011

Я вызываю эту функцию с другой страницы

  Redirect($loc);

и я хочу, чтобы он перенаправил мой сервер ..

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

У меня два вопроса. один скрипт в функции правильный? во-вторых, как передать URL-адрес, если я использую localhost и хочу, чтобы мое приложение было переносимым. Итак, мой файл называется Registration.php и он находится в папке «Users» на моем сайте. Как мне создать URL?

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Есть ли какая-то особая причина, по которой вы используете Javascript для перенаправления? Что делать, если на клиенте отключен JavaScript?

Лучший способ выполнить перенаправление - сделать это на стороне сервера следующим образом:

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

Это отправит заголовок местоположения в браузер, таким образом, немедленно перенаправит его, сохраняя пропускную способность и возможность отключения Javascript на стороне клиента.

Обратите внимание, что, поскольку это заголовок, вам нужно будет либо вызвать этот метод, прежде чем выводить какие-либо данные (с echo или другим способом), либо использовать буферизацию вывода , чтобы не пришлось сильно измените свое приложение.


Как описано в комментарии, чтобы охватить относительный URL, вы можете использовать константу, хранящую ваш веб-корень, которая будет работать следующим образом (заменить строку):

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

Пример использования:

<?php
define('WEB_ROOT', '/');
function redirect($location) 
{
    header('Location: ' . WEB_ROOT . $location);
    die();
}
redirect('Users/Registration.php');
1 голос
/ 20 октября 2011

Это больше подходит для перенаправления, чем ваше, чтобы приложение переносило использование относительных путей, а не абсолютных

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
    }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...