2012-04-03 131 views
0

我覺得我有點奇怪,也許不是那麼奇怪,但我從來沒有這樣做過。通過頭文件發送數據PHP

無論如何,我有一個使用Moneybookers(或Skrill)進行支付的支付系統,該系統將數據庫發送到我的服務器上的一個文件,我檢查數據,然後相應地更新我的數據庫中的記錄。

但最近我整合了一個名爲iDevAffiliate的系統,這個系統跟蹤聯盟支付併爲了充分迭代它,當Moneybooker發送數據並且我們的記錄更新時,我們需要給iDevAffiliate系統一個信號,付款已經完成並隸屬於會員記錄。

我們做到這一點我認爲這將是一個簡單的:

header("location: http://www.mysite.com/affiliate/sale.php?profile=72198&idev_saleamt=2500&affiliate_id=$aff_id"); 

,但我不知道如果我不得不這樣做的另一種方式是這樣的:

header("location: http://www.mysite.com/affiliate/sale.php?profile=72198&idev_saleamt=2500&affiliate_id=" . $aff_id); 

但他們都似乎工作。但是,如果我把這個鏈接放到我的瀏覽器中,將$ aff_id替換爲實際的會員ID,它會正確設置所有內容,但是標題方法不正確嗎?我還能怎麼做?

+2

的HTML的響應有'$ X = 'A' 之間沒有區別。 $ b'和'$ x =「a $ b」'。兩者最終都會產生相同的字符串。 header()調用不會看到字符串連接操作,也不會看到$ aff_id。它只是獲得兩個操作產生的字符串。 – 2012-04-03 12:35:17

+0

@MarcB他們有同樣的效果,但是有很大的不同。雙引號字符串必須被解析,這需要時間;單引號字符串不。 – 2012-04-03 12:39:45

+3

@ryanP:如果您的操作運行足夠的PHP,解析字符串的開銷會導致性能下降,那麼也許您不應該首先使用PHP。我會看到你的額外幾微秒,並提高你$ 0.00000000001。 – 2012-04-03 12:43:14

回答

2

我不知道,如果問題是調用腳本用正確的參數,你可以使用捲曲用POST數據,在$ RET變量的例子

$ch  = curl_init();  
    curl_setopt($ch, CURLOPT_URL,   "http://www.mysite.com/affiliate/sale.php"); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "profile=72198&idev_saleamt=2500&affiliate_id=$aff_id"); 
    $ret = curl_exec($ch); 
    curl_close($ch);   

你有sale.php

+0

謝謝工作!非常感謝! – ragebunny 2012-04-03 13:50:33

1

在PHP中,如果使用單引號,那麼你需要Concat的您的變量,如

$abc = 'abc' . $p; 

,如果你使用的是雙引號,您可以在字符串中嵌入變量

$abc = "abc$p"; 

和$ p將被模仿。

例如:$p = 'd'; echo 'abc$p'將打印出ABC $ P,而echo "abc$p"會打印出ABCD

1

你給我的兩個例子是等價的。如果遇到問題,我會建議驗證$aff_id的內容。

此外,當使用PHP的header函數重定向時,請確保您也die阻止進一步的腳本執行。 header函數本身不會導致重定向。它只是向您的瀏覽器發送一個頭文件,然後解析該文件並重定向。因此,PHP腳本將繼續執行,直到瀏覽器解析標題並斷開與PHP腳本的連接。

+0

那麼它沒有通過瀏覽器執行,它的全部自動化功能,當有錢用戶付款給用戶時,他們會將詳細信息發佈到服務器上,那麼我們需要自動將數據發送到聯盟軟件。 – ragebunny 2012-04-03 13:00:26

+0

無論是調用腳本,都是接收PHP腳本生成的HTTP頭。 **客戶端**是導致重定向的原因,而不是服務器。因此,在從服務器(PHP腳本)向客戶端(瀏覽器或其他)發送一個頭文件然後將斷開連接消息發送回服務器的時候,可能會有更多已執行的PHP代碼。見[這裏](http://www.devchunks.com/php/php-header-redirect-dont-forget-to-die/)。 – Travesty3 2012-04-03 13:06:38