2014-01-09 91 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」);