2014-01-09 58 views
0

我有一个公司生产的在线优惠券给我的php文件。该文件应该生成一个动态网址,然后将您重定向到该网页。他们告诉我,我需要做的只是在底部创建一个回声呼叫。 $ cpt是应该在url中动态生成的唯一东西,所以这就是我所拥有的,它不能正常工作。如何使用动态生成的url生成php重定向?

<?php 
//Generate cipher 
function EncodeCPT($pinCode, $offerCode, $shortKey, $longKey){ 
$decodeX = " abcdefghijklmnopqrstuvwxyz!$%()*+,[email protected];<=>?[]^_{|}~"; 
$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)">'; 

?> 

我已经尝试了几件事情,但似乎没有任何工作。有没有人有任何想法?先谢谢你。

+0

您需要先调用EncodeCPT函数,然后才能使用它返回的变量。 – Session

回答

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>"); 
+0

嘿,非常感谢,我的意思是早些时候回复,但不得不照顾另一份工作。但是,这工作完全谢谢你。 – GrayGhost23

+0

不客气。 – 2014-01-11 00:40:39

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"); 
0

,如果你想使用的返回值功能EncodeCPT的($ PIN码,$ offerCode,$ shortKey,$龙基) 你需要找到这个函数被调用,做这样的事情:

$ CPT = EncodeCPT(参数1,参数,参数3,parameter4) ;

并且在脚本的末尾,您可以使用$ cpt,如其他人所述。

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