gpt4 book ai didi

codeigniter - 我可以使用 Codeigniter 重定向吗?

转载 作者:行者123 更新时间:2023-12-02 18:14:31 26 4
gpt4 key购买 nike

我们使用基于 Codeigniter 构建的 CMS Fuel,并且经常使用重定向功能。我想知道是否有一种方法可以使用此函数的概率,以便将一半(或我们设置的任何数量)的时间重定向到一个页面,一半的时间重定向到另一个页面。

一般来说,我们将创建一个带有如下所示重定向的页面:

<?=redirect('https://subdomian.onanotherserver.com/asdf')?> 

我们希望使其看起来相似:

<?=probabilityRedirect(0.5, 'https://subdomian.onanotherserver.com/asdf', 'https://subdomian.onanotherserver.com/jkl')?> 

解决这个问题的最佳方法是什么?我们可以构建重定向还是只编写一个新函数?

最佳答案

我会创建一个新函数。可能将其添加到 url_helper.php 使其最容易实现。也可以是一个独立的助手,但你必须确定 url_helper 已加载。

if(!function_exists('randomRedirect'))
{
/**
* Randomized Header Redirect
*
* @param int $seed value optional
* @param array $list an indexed array of URL strings
* @return void
*/
function randomRedirect($seed = NULL, $list)
{
//list needs to be an array
if(!is_array($list OR ! isset($list)))
{
throw new Exception('randomRedirect() requires Array in second parameter');
}
if(!empty($seed))
{
mt_srand($seed);
}
$choice_count = count($list);
redirect($list[mt_rand(0, $choice_count)]);
}
}

注意:我没有对此进行测试!不保证结果。 :)

修改后的代码如下。花了一些时间尝试上述内容,最终得到了这个结果。

randomURL_helper.php

<?php

if(!function_exists('p_redirect'))
{
/**
* Randomized Header Redirect
*
* @param array $list an indexed array of URL strings
* @param bool $seed optional when true, the random number generator will be seeded
*
* @return void
*
* Takes a list of URL strings in an array and randomly selects one as the
* input to the CodeIgniter function redirect.

* If you specify the full site URL that link will be built,
* but for local links simply providing the URI segments to the
* controller you want to direct to will create the link.
*
* The function will build the URL based on your config file values.
*
* This function requires the CodeIgniter helper "URL Helper"
* to be loaded using the following code: $this->load->helper('url');
*
* Use this line of code $this->load->helper('randomURL');
* to make p_redirect available to your CodeIgniter application.
*
*/
function p_redirect($list, $seed = FALSE)
{
if(!is_array($list))
{
// $list must be an array
throw new Exception('randomRedirect() requires Array as first parameter');
}
if($seed)
{
list($usec, $sec) = explode(' ', microtime());
$seed_val = (float) $sec + ((float) $usec * 100000);
mt_srand($seed_val);
}

redirect($list[mt_rand(0, count($list) - 1)]);
}

}

经过足够的测试,发现它并没有完全偏离基础。似乎完成了工作。享受吧!

关于codeigniter - 我可以使用 Codeigniter 重定向吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33309161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com