Avatar billede madjor5 Nybegynder
08. august 2005 - 14:32 Der er 23 kommentarer og
1 løsning

Effektuere PHP script uden at det vises i browseren?

Hey,
Jeg har en remote capture til en betalings gateway. Jeg skal i den sammenhæng GET'e eller POSTE nogle data til en PHP fil på deres server. Jeg er dog ikke interesseret i som sådan at vise siden i browseren!

Har jeg andre muligheder end at gøre det via en IFrame?

Altså har jeg nogle værdier jeg skal poste eller get'e til en fil på en sikret server for at hente pengene hjem fra gateway. Kan det lade sig gøre at få den til det via en server til server forespørgsel?
Avatar billede beef12 Nybegynder
08. august 2005 - 14:49 #1
Taler du om dibs eller dobs relay-servere?
Avatar billede madjor5 Nybegynder
08. august 2005 - 14:51 #2
Nej, det er IPEurope's servere... Deres api er ikke så gennemtænkt at det gør noget :S
Avatar billede jakobdo Ekspert
08. august 2005 - 14:54 #3
Hvor tit skal der kommunikeres med serveren?
Du kunne jo evt gemme data i en DB og så opsætte en cron-job som åbner en socket til deres server og smider alle data de skal bruge og så lukker igen.
Eller henter om du vil...
Avatar billede madjor5 Nybegynder
08. august 2005 - 14:56 #4
Njah, det går ikke rigtigt, det skal ske "on-the-fly". Ellers kan jeg ikke give brugeren besked om at pengene er hævet!
Avatar billede madjor5 Nybegynder
08. august 2005 - 14:58 #5
Jeg er potentielt ude i at eksekvere i en skjult IFrame, men det er lidt en hovsa løsning!

Deres udspil er at man har en <form> hvor man poster data til deres fil, men den returnerer en værdi jeg ikke kan vise for kunden! Her er det at jeg gerne ville have at den havde returneret til referer filen på min server :S
Avatar billede jakobdo Ekspert
08. august 2005 - 14:58 #6
Hvorfor må scriptet ikke vises i browseren?
Avatar billede madjor5 Nybegynder
08. august 2005 - 15:00 #7
Fordi den f.eks. bare viser en kode der hedder "0 accepted" som er en officiel PBS accept kode. Ikke noget brugeren skal bekymre sig om
Avatar billede beef12 Nybegynder
08. august 2005 - 15:20 #8
Er det ikke ligemeget. Du laver bare en funktion som laver hele scriptet og returnere bare true eller false. Derved ser brugeren ikke hvad der er sket. Eller har jeg misforstået noget?
Avatar billede jakobdo Ekspert
08. august 2005 - 15:22 #9
Du kan jo lave en php funktion som laver noget i stil med: open_url(pbs og data osv...)
Som beef12 er inde på.
Du har ikke nøde at åbne linket i browseren, men lader blot en php funktion gøre det.
Og så styre du helt selv hvad brugeren skal se og ikke se.
Avatar billede madjor5 Nybegynder
08. august 2005 - 15:23 #10
Jo hvis jeg kan lave en funktion der POST'er eller GET'er til deres script, så er det ikke noget problem?

Men det var det jeg ikke lige kunne tænke mig frem til. Problemet er også at de jo kører SSL krypteret, derfor kunne jeg forestille mig at selve krypteringen kunne ødelægge en batch eksekvering!
Avatar billede madjor5 Nybegynder
08. august 2005 - 15:26 #11
Så kan jeg bare skyde igennem med ex. fsocketopen() og eksekvere den vej? Vil det konflikte med SSL?
Avatar billede beef12 Nybegynder
08. august 2005 - 15:35 #12
næ - ikke såvidt jeg kan se. SSL sørger bare for at data du sender frem og tilbage via browseren kan opsnappes... så basalt set.

eksempel:
function myfunc($1,$2) {

//gør det du skal
if($message == accepted) {
$output = true;
} else {
$output = $false;
}
return $output;
}

myfunc($_POST['sadasd'], $_POST['dsfsdf']);
Avatar billede madjor5 Nybegynder
09. august 2005 - 10:05 #13
Problemet er ikke at lave en funktion med et return af noget output... Mit problem er selve forbindelsen mellem min server og så deres som ex. hedder https://gw.ipeurope.dk/capture.php

Denne fil skal have nogle $_GET eller $_POST variabler indeholdende informationer om hvilken transaktion der skal hæves penge fra!!!
Avatar billede madjor5 Nybegynder
09. august 2005 - 10:06 #14
BTW: fsockopen() Kan kun fungere med SSL, såfremt du har det kompileret med i PHP, hvilket kræver et SSL certifikat. Her benytter man jo normalt funktionaliteterne i browseren, så det er faktisk ikke en option :(
Avatar billede jakobdo Ekspert
09. august 2005 - 10:07 #15
Avatar billede madjor5 Nybegynder
09. august 2005 - 10:11 #16
Ja, men den returnerer mig ikke til min side, men outputter et resultat til browseren, det er præcist det jeg ønsker at undgå! Men har lige talt med ipeurope, de er heller ikke sikre på at der er nogen løsning på det :(
Avatar billede jakobdo Ekspert
09. august 2005 - 10:18 #17
Tror du skal kigge på OpenSSL
Avatar billede jakobdo Ekspert
09. august 2005 - 10:19 #18
Du skal have en server som har OpenSSL installeret.
Så kan du f.eks. bruge denne løsning:

<?php

$content = file_get_contents("https://gw.ipeurope.dk/capture.php?id=1112&mere=mangepenge&modtager=jakobdo");
echo $content;

?>
Avatar billede jakobdo Ekspert
09. august 2005 - 10:20 #19
$content vil så indeholde alt hvad der ellers blev sendt til en browser.
Avatar billede jakobdo Ekspert
09. august 2005 - 10:31 #20
F.eks. har jeg fra min box testet dette kode:

<?php

$content = file_get_contents("https://www.paypal.com/");
echo $content;

?>

Der virker fint nok.
Jeg får hele deres side smidt i hovedet.
Avatar billede madjor5 Nybegynder
09. august 2005 - 10:42 #21
Ja, det bliver løsningen... Har fået min udbyder til at installere openSSL, så det bliver en af dagene... Jakobdo, smid et svar, så giver jeg points
Avatar billede jakobdo Ekspert
09. august 2005 - 10:44 #22
Svar!
Avatar billede jakobdo Ekspert
09. august 2005 - 10:45 #23
Men det er ikke nok at installere openssl, php skal jo også konfigureres så den kan bruge openssl
Avatar billede madjor5 Nybegynder
09. august 2005 - 10:46 #24
Ja, naturligvis, det klarer de dernede :S Hader eksterne hosting leverandører, man kan ikke selv styre en pind :-(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester