PHP头重定向,如果是变量,则重定向

PHP头重定向,如果是变量,则重定向,php,Php,我想使用一个URL将用户重定向到各种传出URL。例如http://example.com/out.php?ofr=2其中,ofr的将引用用户应重定向到的适当URL 我为out.php 这是可以接受的,还是有更有效的方法来实现这一点(假设下面的脚本中有10个左右不同的URL) 看起来对吗?谢谢 试试这样的方法: <?php $ofr=$_GET['ofr']; $url_array=array([1]=>http://google.com [2]=>http://yahoo

我想使用一个URL将用户重定向到各种传出URL。例如
http://example.com/out.php?ofr=2
其中,ofr的
将引用用户应重定向到的适当URL

我为
out.php

这是可以接受的,还是有更有效的方法来实现这一点(假设下面的脚本中有10个左右不同的URL)


看起来对吗?谢谢

试试这样的方法:

 <?php
 $ofr=$_GET['ofr'];
 $url_array=array([1]=>http://google.com [2]=>http://yahoo.com);
 foreach($url_array as $key=>$value)
 {  
   if($ofr==$key)  
   header('location: ".$value."');
 }
?>
$ofr = $_GET['ofr'];
if($ofr!='')
  redirectUrls($ofr)

尝试以下方法:

 <?php
 $ofr=$_GET['ofr'];
 $url_array=array([1]=>http://google.com [2]=>http://yahoo.com);
 foreach($url_array as $key=>$value)
 {  
   if($ofr==$key)  
   header('location: ".$value."');
 }
?>
$ofr = $_GET['ofr'];
if($ofr!='')
  redirectUrls($ofr)

首先,我建议创建如下重定向函数:

function redirect($url)
{
    $baseUri=_URL_;

    if(headers_sent())
    {
        $string = '<script type="text/javascript">';
        $string .= 'window.location = "' . $baseUri.$url . '"';
        $string .= '</script>';

        echo $string;
    }
    else
    {
    if (isset($_SERVER['HTTP_REFERER']) AND ($url == $_SERVER['HTTP_REFERER']))
        header('Location: '.$_SERVER['HTTP_REFERER']);
    else
        header('Location: '.$baseUri.$url);

    }
    exit;
}
然后创建一个函数来执行重定向:

function redirectUrls($index){
   if(isset($redirecUrls[ $index])
      return redirect($redirecUrls[ $index])

   return false;
}
之后,您可以执行以下操作:

 <?php
 $ofr=$_GET['ofr'];
 $url_array=array([1]=>http://google.com [2]=>http://yahoo.com);
 foreach($url_array as $key=>$value)
 {  
   if($ofr==$key)  
   header('location: ".$value."');
 }
?>
$ofr = $_GET['ofr'];
if($ofr!='')
  redirectUrls($ofr)

首先,我建议创建如下重定向函数:

function redirect($url)
{
    $baseUri=_URL_;

    if(headers_sent())
    {
        $string = '<script type="text/javascript">';
        $string .= 'window.location = "' . $baseUri.$url . '"';
        $string .= '</script>';

        echo $string;
    }
    else
    {
    if (isset($_SERVER['HTTP_REFERER']) AND ($url == $_SERVER['HTTP_REFERER']))
        header('Location: '.$_SERVER['HTTP_REFERER']);
    else
        header('Location: '.$baseUri.$url);

    }
    exit;
}
然后创建一个函数来执行重定向:

function redirectUrls($index){
   if(isset($redirecUrls[ $index])
      return redirect($redirecUrls[ $index])

   return false;
}
之后,您可以执行以下操作:

 <?php
 $ofr=$_GET['ofr'];
 $url_array=array([1]=>http://google.com [2]=>http://yahoo.com);
 foreach($url_array as $key=>$value)
 {  
   if($ofr==$key)  
   header('location: ".$value."');
 }
?>
$ofr = $_GET['ofr'];
if($ofr!='')
  redirectUrls($ofr)

好的,您可以将位置打包到一个数组中,因此您只需检查一次键是否存在,而不是编写大量的
if
-语句。(顺便说一句:
switch
-语句确实存在)@franzgleichman我编辑了我认为switch语句的样子。感谢您的提示。您可以将位置打包到一个数组中,因此您只需检查一次密钥是否存在,而无需编写大量的
if
-语句。(顺便说一句:
switch
-语句确实存在)@franzgleichman我编辑了我认为switch语句的样子。谢谢你的提示,我明白你的意思了。我在示例代码中有点误导,因为重定向会转到不同的站点。ofr=1可以访问google.com,ofr=2可以访问yahoo.com。那是我的错。。。我将更新原始问题。我明白你的意思。我在示例代码中有点误导,因为重定向会转到不同的站点。ofr=1可以访问google.com,ofr=2可以访问yahoo.com。那是我的错。。。我将更新原始问题。谢谢。这会比使用我添加到原始帖子中的切换方法更有效吗?@rivitzs是的。这都是关于干净的代码。这样,您就可以创建一个(类似路由的)系统。始终尝试使用单独的和可重用的函数来完成任务。总是认为可能出错,代码会崩溃。如果将代码分开,调试过程将更容易。@如果不在发送头之前检查发送头,可能会抛出一个致命错误,即发送头之前已发送,因此无法使用头('location where you like.但是使用我的重定向功能,无论发生什么,它总是重定向。你可以删除基本URL变量以满足你的需要。这很有意义。谢谢你的解释。谢谢你的解释。这会比使用我添加到原始帖子中的切换方法更有效吗?@rivitzs是的。这都是关于cle的一个代码。这样你就可以创建一个(类似路由的)总是尝试在单独的和可重用的函数中做事情。总是认为可能出错,代码会崩溃。如果保持代码分离,调试过程会更容易。@ RiViZs如果您不检查发送的头,可能会造成一个致命错误,之前发送头,不能使用头。('location where you like.但是使用我的重定向功能,无论发生什么,它都会重定向。您可以删除基本URL变量以满足您的需要。这很有意义。谢谢您的帮助和解释。