php, HTTP_REFERER bulunamadı

2 Cevap php

Merhaba bir ödeme sağlayıcıya benim formu entegre ama elde im URL'ye izin verilmiyor ve HTTP_REFERER bulunmazsa çıkıyor bağlanmaya çalışıyor im ..

#the following function performs a HTTP Post and returns the whole response
function pullpage( $host, $usepath, $postdata = "" ) {

# open socket to filehandle(epdq encryption cgi)
 $fp = fsockopen( $host, 80, &$errno, &$errstr, 60 );

#check that the socket has been opened successfully
 if( !$fp ) {
    print "$errstr ($errno)<br>\n";
 }
 else {

    #write the data to the encryption cgi
    fputs( $fp, "POST $usepath HTTP/1.0\n");
    $strlength = strlen( $postdata );
    fputs( $fp, "Content-type: application/x-www-form-urlencoded\n" );
    fputs( $fp, "Content-length: ".$strlength."\n\n" );
    fputs( $fp, $postdata."\n\n" );

    #clear the response data
   $output = "";


    #read the response from the remote cgi 
    #while content exists, keep retrieving document in 1K chunks
    while( !feof( $fp ) ) {
        $output .= fgets( $fp, 1024);
    }

    #close the socket connection
    fclose( $fp);
 }

#return the response
 return $output;
}

#define the remote cgi in readiness to call pullpage function 
$server="secure2.epdq.co.uk";
$url="/cgi-bin/CcxBarclaysEpdqEncTool.e";

#the following parameters have been obtained earlier in the merchant's webstore
#clientid, passphrase, oid, currencycode, total
$params="clientid=xxx";
$params.="&password=xxxx";
$params.="&oid=xxxx";
$params.="&chargetype=Auth";
$params.="&currencycode=826";
$params.="&total=120";

#perform the HTTP Post
$response = pullpage( $server,$url,$params );

#split the response into separate lines
$response_lines=explode("\n",$response);

#for each line in the response check for the presence of the string 'epdqdata'
#this line contains the encrypted string
$response_line_count=count($response_lines);
for ($i=0;$i<$response_line_count;$i++){
    if (preg_match('/epdqdata/',$response_lines[$i])){
        $strEPDQ=$response_lines[$i];
    }
}


<FORM action="https://secure2.epdq.co.uk/cgi-bin/CcxBarclaysEpdq.e" method="POST">
<?php print "$strEPDQ"; ?>
<INPUT type="hidden" name="returnurl" value="http://www.xxxxxx.co.uk/test/confirm.php">
<INPUT type="hidden" name="merchantdisplayname" value="xx xxx">
<INPUT type=hidden name=baddr1 value="address line 1">
<INPUT type=hidden name=baddr2 value="address line 2">
<INPUT type=hidden name=baddr3 value="address line 3">
<INPUT type=hidden name=bcity value="City">
<INPUT type=hidden name=bcountyprovince value="County">
<INPUT type=hidden name=bpostalcode value="Postcode">
<INPUT type=hidden name=bcountry value="GB">
<INPUT type=hidden name=btelephonenumber value="01111 012345">
<INPUT type=hidden name=email value="xxxxx">
<INPUT type=hidden name=saddr1 value="Address line 1">
<INPUT type=hidden name=saddr2 value="Address line 2">
<INPUT type=hidden name=saddr3 value="Address line 3">
<INPUT type=hidden name=scity value="City">
<INPUT type=hidden name=scountyprovince value="County">
<INPUT type=hidden name=spostalcode value="Postcode">
<INPUT type=hidden name=scountry value="GB">
<INPUT type=hidden name=stelephonenumber value="01111 012345">
<INPUT TYPE="submit" VALUE="purchase">
</FORM>

herkes yardımcı olabilir?

2 Cevap

Ben diğer bazı mesajların görüyorsanız konu ile doğrudan anlaşma düşünüyorum, ancak, ben size (http://php.net/manual/en/book.curl.php) yerine bir soket açma yapmaya çalışıyoruz ne için CURL kullanarak içine bakmak öneririz istiyorum bağlantı elle. Ödemeniz sağlayıcı bile PHP bunun için bazı kod örnekleri olabilir. Tipik olarak bu ağ geçitleri ile iletişimi ele çok daha iyi bir yoldur ve çok daha fazla esnekliğe sahiptir.

En CURL kod örnekleri var çünkü birden fazla ağ geçitleri ile entegre ve gelecekte bunun için diğer kullanır bulabilirsiniz Bu özellikle kullanışlı olacaktır.

EDIT:

PHP kılavuzun daha iyi - bu site örneklerle sonrası değişkenler, vb geçerek, çok daha net auth rutinleri dahil kullanmak nasıl yapar:

http://devzone.zend.com/article/1081

Sana Host: başlığı unutma olduğunu düşünüyorum.

Ancak, bir yuva açılması ve kendi HTTP istemcisi uygulama daha HTTP üzerinden bir şey POST nasıl daha iyi yolları vardır. Try curl.