使用php和javascript进行服务器重定向
我从另一个页面调用这个函数使用php和javascript进行服务器重定向,php,javascript,login,Php,Javascript,Login,我从另一个页面调用这个函数 Redirect($loc); 我想让它重定向我的服务器 function Redirect($loc) { echo ("<script type=\"text/javascript\">var timeout=1; setTimeout(\"window.location.replace('" . $loc . "')\", timeout*1000 );</script>"); } 函数重定向($loc)
Redirect($loc);
我想让它重定向我的服务器
function Redirect($loc)
{
echo ("<script type=\"text/javascript\">var timeout=1; setTimeout(\"window.location.replace('" . $loc . "')\", timeout*1000 );</script>");
}
函数重定向($loc)
{
echo(“var timeout=1;setTimeout(\”window.location.replace(“$loc.”)\”,timeout*1000);”;
}
我有两个问题。一是函数中的脚本是否正确?
其次,假设我使用的是localhost,并且我希望我的应用程序是可移植的,那么我如何向它传递url呢。因此,我将我的文件称为Registration.php,它位于我网站的用户文件夹中,如何构造url?这比您的更适合重定向,以使您的应用程序可移植,使用相对路径,而不是绝对路径
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
}
}
函数重定向($where=''){
if(!empty($where)){
echo'window.location=“”.$where.“;”;
exit();//在用户关闭JS时阻止脚本执行
}
}
使用Javascript重定向有什么特殊原因吗?如果客户端禁用了Javascript怎么办
执行重定向的更好方法是在服务器端执行,如下所示:
function redirect($location)
{
header('Location: ' . $location);
die();
}
这将把location头发送到浏览器,从而立即重定向它,节省带宽和在客户端禁用Javascript的可能性
请注意,由于这是一个标头,您需要在输出任何数据之前调用此方法(使用echo
或其他方式),或者使用,以便不必对应用程序进行太多更改
如注释中所述,覆盖相对URL,您可以使用一个常量存储web根目录,其工作方式如下(替换行):
用法示例:
<?php
define('WEB_ROOT', '/');
function redirect($location)
{
header('Location: ' . WEB_ROOT . $location);
die();
}
redirect('Users/Registration.php');
什么意思?如何构建URL?您只需将/Users/Registration.php
传递给该方法。您的意思是:“../StoredProcedure/User/login.php”我对您的应用程序结构一无所知,但您可以自己尝试。嗯..谢谢,我没想过。我如何构建我的相对路径别忘了说,他只能在任何浏览器输出之前发送此重定向,还可以描述元重定向:)它需要是相对的吗?一般来说,一个好方法是使用一个中心变量(配置文件?)存储web根目录,然后从中附加位置?@user973254元重定向很糟糕,但添加了关于header.hmm的注释。因此,当我上传例如home.php时,它会使用我的web服务器url名称www.forum/home.php而不是localhost/home.php吗
<?php
define('WEB_ROOT', '/');
function redirect($location)
{
header('Location: ' . WEB_ROOT . $location);
die();
}
redirect('Users/Registration.php');