如何使用动态生成的URL生成php重定向?

时间:2014-01-09 11:18:07

标签: php redirect

我有一个生成在线优惠券的公司给我的php文件。该文件应生成动态URL,然后将您重定向到该页面。所有他们告诉我我需要做的就是在底部创建一个回音。 $ cpt是唯一应该在url中动态生成的东西,所以这就是我所拥有的并且它无法正常工作。

 <?php
 //Generate cipher
 function EncodeCPT($pinCode, $offerCode, $shortKey, $longKey){
$decodeX = " abcdefghijklmnopqrstuvwxyz0123456789!$%()*+,-.@;<=>?[]^_{|}~";
$encodeModulo = array_fill(0, 256, 0);

$vob[0] = $offerCode % 100;
$vob[1] = (($offerCode - $vob[0]) / 100) % 100;

for ($i = 0; $i < 61; $i++)
    $encodeModulo[substr($decodeX, $i, 1)] = $i;

$pinCode = strtolower($pinCode) . strval($offerCode);
if (strlen($pinCode) < 20){
    $pinCode .= ' couponsincproduction';
    $pinCode = substr($pinCode, 0, 20);
}

//$checkCode = "LC";
//$pinCode = "LC10";
//$offerCode = "115694";
//$shortKey = "6oigl3qf5e";
//$longKey = "Lm9A7w8tjpUCaoMidGFSYXrHZnyDRKhlTbk1Oz4f5QBsqveEWuxg6PNV2cJ3I";
$q = 0;
$j = strlen($pinCode);
$k = strlen($shortKey);
$s1 = $s2 = $s3 = null;

$cpt = '';

for ($i = 0; $i < $j; $i++){
    $s1 = $encodeModulo[substr($pinCode, $i, 1)];
    $s2 = 2 * $encodeModulo[substr($shortKey, $i % $k, 1)];
    $s3 = $vob[$i % 2];
    $q = ($q + $s1 + $s2 + $s3) % 61;
    $cpt .= substr($longKey, $q, 1);
}
return $cpt;
 }

 echo("http://bricks.coupons.com/enable.asp?0=115694&c=LC&p=LC10&" .$cpt);

 //echo '<META HTTP-EQUIV="Refresh" Content="0; URL=http://bricks.coupons.com /enable.asp?0=115694&c=LC&p=LC10&"($cpt)">';

 ?>

我尝试了几件事,但似乎没有任何工作。有没有人有任何想法?提前谢谢。

3 个答案:

答案 0 :(得分:2)

只需使用 header()

即可

替换此

echo("http://bricks.coupons.com/enable.asp?0=115694&c=LC&p=LC10&" .$cpt);

$cpt = EncodeCPT("yourparameters");
header("location:http://bricks.coupons.com/enable.asp?0=115694&c=LC&p=LC10&$cpt");

答案 1 :(得分:1)

在您的代码中,您已定义了函数EncodeCPT,但您实际上从未调用它。您可以将函数定义视为与脚本的其他部分分开。函数内使用的任何变量(除非与global关键字一起使用)只有一个局部范围。因此,变量$pinCode$offerCode$shortKey$longKey$cpt甚至不会存在超出您的范围功能(如有疑问,请使用isset进行检查)。要使它们存在,您必须执行以下操作:

/* Change these values if necessary */
$pinCode = "LC10";
$offerCode = "115694";
$shortKey = "6oigl3qf5e";
$longKey = "Lm9A7w8tjpUCaoMidGFSYXrHZnyDRKhlTbk1Oz4f5QBsqveEWuxg6PNV2cJ3I";
/* Do not change after this line */
$cpt = EncodeCPT($pinCode, $offerCode, $shortKey, $longKey);
$url = "http://bricks.coupons.com/enable.asp?0=115694&c=LC&p=LC10&".$cpt;

尽管名称相同,但$pinCode$offerCode$shortKey$longKey$cpt是上述代码中的全局变量。为避免混淆,您可以使用不同的名称,例如$a$b$c$d$e或您选择的任何有效变量名称。为了更清楚地了解此事,请阅读PHP手册中有关variable scope的更多信息。

现在出现了重定向部分。如果您希望脚本自动重定向:

header("location: $url");

另一方面,如果您希望用户点击重定向的链接:

print("<a href=\"$url\">Click Here</a>");

答案 2 :(得分:0)

如果你想使用EncodeCPT函数的返回值($ pinCode,$ offerCode,$ shortKey,$ longKey) 您需要找到调用此函数的位置并执行以下操作:

$ cpt = EncodeCPT(parameter1,parameter2,parameter3,parameter4);

然后在脚本结束时,您可以使用$ cpt,如其他人所述。

头(&#34;位置:http://bricks.coupons.com/enable.asp?0=115694&c=LC&p=LC10& $ CPT&#34);

相关问题