2012-04-03 14 views
0

Ich habe, was mir scheint, ein bisschen ein seltsames Szenario, vielleicht nicht so seltsam, aber ich habe es noch nie zuvor gemacht.Senden von Daten über Header-Methode PHP

Wie auch immer, ich habe ein Zahlungssystem, das Moneybookers (oder Skrill) verwendet, um eine Zahlung zu nehmen, dieses System sendet Datenbank an eine Datei auf meinem Server, wo ich die Daten überprüfe, und dann Datensätze in meinen Datenbanken entsprechend aktualisieren.

Aber vor kurzem habe ich System namens iDevAffiliate integriert, dieses System verfolgt Affiliate-Zahlungen und um es voll zu integrieren, wenn Moneybooker sendet Daten und unsere Datensätze sind Update müssen wir ein Signal an das iDevAffiliate-System zu sagen, dass ein Zahlung wurde getätigt und ist mit einem Affiliate-Datensatz verbunden.

Nun, dies zu tun Ich dachte, es einfach wäre:

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

aber ich war nicht sicher, ob ich es eine andere Art und Weise, wie dies zu tun hatte:

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

Aber sie beide scheint zu funktionieren. Wenn ich jedoch diesen Link in meinen Browser setze, ersetze ich $ aff_id durch die tatsächliche Affiliate-ID, stellt er alles richtig ein, ist die Kopfzeile nicht das richtige zu verwenden? wie könnte ich das sonst tun?

+2

Es gibt keinen Unterschied zwischen '$ x = 'a'. $ b' und '$ x =" a $ b "'. Beide erzeugen am Ende die gleiche Saite. Der Aufruf von header() sieht keinen String-Verkettungsvorgang, noch wird $ aff_id angezeigt. Es wird nur die von beiden Operationen erzeugte Zeichenfolge abgerufen. –

+0

@MarcB Sie haben den gleichen Effekt, aber es gibt einen großen Unterschied. Doppelt zitierte Strings müssen analysiert werden, was Zeit benötigt; Strings mit einem einfachen Anführungszeichen nicht. –

+3

@ryanP: Wenn Ihr Betrieb genug PHP ausführt, dass der Parsing-Overhead eines Strings die Performance beeinträchtigt, sollten Sie PHP vielleicht gar nicht erst verwenden. Ich sehe Ihre zusätzlichen paar Mikrosekunden und hebe Sie $ 0,00000000001. –

Antwort

2

Ich bin nicht sicher, ob das Problem mit den richtigen Parametern das Skript aufrufen, können Sie eine cURL mit Post-Daten verwenden können, ein Beispiel

$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);   

auf $ ret Variable haben Sie die Antwort auf html von sale.php

+0

Vielen Dank! Ich danke dir sehr! – ragebunny

1

In PHP, wenn Sie Apostroph verwenden, dann müssen Sie Ihre Variablen verketten wie

$abc = 'abc' . $p; 

, wenn Sie doppelte Anführungszeichen verwenden, können Sie die Variable in der

$abc = "abc$p"; 

Zeichenfolge einbetten

und $ p wird evuliert.

Beispiel: $p = 'd'; echo 'abc$p' wird abc $ p auszudrucken, während echo "abc$p" wird abcd auszudrucken

1

Die beiden Beispiele, die Sie gaben gleichwertig sind. Ich würde vorschlagen, den Inhalt von $aff_id zu überprüfen, wenn Sie Probleme haben.

Wenn Sie die header-Funktion von PHP verwenden, um umzuleiten, stellen Sie sicher, dass Sie auch die, um weitere Skriptausführung zu verhindern. Die header-Funktion selbst verursacht keine Umleitung. Es sendet nur eine Kopfzeile an Ihren Browser, der diese dann interpretiert und weiterleitet. Daher wird das PHP-Skript weiterhin ausgeführt, bis der Browser den Header interpretiert und die Verbindung zum PHP-Skript trennt.

+0

Nun, es wird nicht über einen Browser ausgeführt, es ist alles automatisiert, Wenn Geldbucher eine Zahlung für den Benutzer haben, posten sie die Details zu ihren Servern, dann müssen wir die Daten automatisch an die Affiliate-Software senden. – ragebunny

+0

Nun, was auch immer das Skript aufruft, erhält den HTTP-Header, der vom PHP-Skript erzeugt wird. Der ** Client ** ist die Ursache für die Umleitung, nicht der Server. Also in der Zeit, die es dauert, um einen Header vom Server (PHP-Skript) an den Client (Browser oder sonst) zu senden und dann eine Nachricht zum Server zurück zu trennen, könnte mehr PHP-Code ausgeführt worden sein. Siehe [hier] (http://www.devchunks.com/php/php-header-redirect-dont-forget-to-die/). – Travesty3

1

Werfen Sie einen Blick auf CURL in PHP

oder die stream Funktionen

Verwandte Themen