我有一个生成在线优惠券的公司给我的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)">';
?>
我尝试了几件事,但似乎没有任何工作。有没有人有任何想法?提前谢谢。
答案 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);