Avatar billede kare Nybegynder
07. juli 2004 - 10:48 Der er 24 kommentarer og
1 løsning

Flere HTTP-kald på samme side

Jeg skal lave en side, der udfører et http-kald x antal gange med forskellige parametre. Hver gang returneres en statusmeddelelse.

Hvordan kan jeg lave det i php - eller lignende?
Jeg forestiller mig en tabel i en database eller en simpel teksfil med de forskellige parametre til kaldene, men kan ikke helt gennemskue hvordan php-koden skal laves..

Kan nogle hjælpe?
Avatar billede jakobdo Ekspert
07. juli 2004 - 11:28 #1
Hvad mener du med Http-kald?
Avatar billede sostack Nybegynder
07. juli 2004 - 12:00 #2
Prøv med:
<?php
$steder = Array("http://johnsen-50/testarea/out.php?test=let", "http://johnsen-50/testarea/out.php?test=mellem", "http://johnsen-50/testarea/out.php?test=svaer");
$buffer = "";
for($i = 0; $i < count($steder); $i++)
{
    $kilde = fopen($steder[$i], "rb");
    while (!feof($kilde))
    {
          $buffer .= fgets($kilde, 8192);
    }
    fclose($kilde);
    //$buffer .= "\n<br />\n";
}
echo $buffer;
?>

//sostack
Avatar billede sostack Nybegynder
07. juli 2004 - 12:00 #3
Min out.php har jeg bare lavet som:
<?php
echo $_GET["test"]  . "\n<br />\n";
?>

//sostack
Avatar billede sostack Nybegynder
07. juli 2004 - 12:17 #4
Her er en med kaldene i en txt-fil:<?php
$steder = file("parametre.txt");
$buffer = "";
for($i = 0; $i < count($steder); $i++)
{
    $kilde = fopen(trim($steder[$i]), "rb");
    while (!feof($kilde))
    {
          $buffer .= fgets($kilde, 8192);
    }
    fclose($kilde);
}
echo $buffer;
?>

// parametre.txt:
http://johnsen-50/testarea/out.php?test=let
http://johnsen-50/testarea/out.php?test=mellem
http://johnsen-50/testarea/out.php?test=svaer
Avatar billede kare Nybegynder
07. juli 2004 - 12:19 #5
sostack>>
Jeg har nu prøvet med følgende - du er velkommen til også at prøve
(test.pecunia.dk/test.php)
- den kører bare i en uendelig løkke...

test.php:

<?php
$steder = Array("http://test.pecunia.dk/out.php?test=let", "http://test.pecunia.dk/out.php?test=mellem", "http://test.pecunia.dk/out.php?test=svaer");
$buffer = "";
for($i = 0; $i < count($steder); $i++)
{
    $kilde = fopen($steder[$i], "rb");
    while (!feof($kilde))
    {
          $buffer .= fgets($kilde, 8192);
    }
    fclose($kilde);
    //$buffer .= "\n<br />\n";

}
echo $buffer;
?>
Avatar billede sostack Nybegynder
07. juli 2004 - 12:22 #6
Warning: fopen(): URL file-access is disabled in the server configuration
Denne fejlmedddelelse siger det hele!

//sostack
Avatar billede kare Nybegynder
07. juli 2004 - 12:25 #7
Arh...

Kan man komme uden om det - altså en anden kalde-metode, da det vel er en standard feature ikke at have URL file-access?
Avatar billede kare Nybegynder
07. juli 2004 - 12:26 #8
jakobdo >> med http-kald menes at man 'udfører' det samme som hvis man skrev URL'en i browserens addresselinie.
Avatar billede sostack Nybegynder
07. juli 2004 - 12:27 #9
Har du din egen server, eller er sitet hosted et andet sted?

//sostack
Avatar billede jakobdo Ekspert
07. juli 2004 - 12:28 #10
Ok, takker!
Avatar billede kare Nybegynder
07. juli 2004 - 12:30 #11
testen er min egen - det skal bruges sammen med DanDomain og en PBS-gateway, hvor man kan hæve betalingstransaktioner:

"Det er muligt at foretage remote-capture. Det vil sige at hæve en transaktion blot ved et enkelt http kald. Dette kan indbygges i eks. ERP system, Intranet eller andet. Eneste krav er blot at der laves et http kald.

URL'en til at lave et remote-capture kald består af:
http://pay.dandomain.dk/remotecapture.asp?username=1234567&password=xxxxxxx&capture=1&orderid=1002
"
Avatar billede kare Nybegynder
07. juli 2004 - 12:32 #12
jeg vil så gerne lave en fil med alle de transaktioner, der skal hæves og derefter blot åbne en php-side eller lignende der så udfører http-kaldene (som dandomain kalder dem).
Avatar billede sostack Nybegynder
07. juli 2004 - 12:33 #13
Skal sitet blive på din egen server, eller flyttes til en anden server?

//sostack
Avatar billede sostack Nybegynder
07. juli 2004 - 12:35 #14
Prøv at sætte denne linie ind som den første i test.php:
ini_set("allow_url_fopen", "1");

//sostack
Avatar billede kare Nybegynder
07. juli 2004 - 12:36 #15
Jeg havde forestillet mig at køre selve 'hæve.php'-filen fra egen server, men betalings-gateway'en hører under DanDomain og kan ikke ændre:)
Avatar billede kare Nybegynder
07. juli 2004 - 12:39 #16
med ini_set linien sker der overhovedet ikke noget....
Avatar billede sostack Nybegynder
07. juli 2004 - 12:41 #17
Entry can only be set in php.ini or httpd.conf
Du skal ændre værdien for allow_url_fopen i en af ovenstående filer, hvis det da er en Apache-server du arbejder med.
Hvis værdien er 1, skal du ændre den til 0, og omvendt.

//sostack
Avatar billede sostack Nybegynder
07. juli 2004 - 12:43 #18
Sorry: allow_url_fopen = On i php.ini, under afsnittet "Fopen wrappers"

//sostack
Avatar billede kare Nybegynder
07. juli 2004 - 13:58 #19
Desværre kan man ikke benytte URL File-access.
Findes der andre metoder? - der er væsentligt, at 'resultatet' blive vist på skærmen eller gemt i en fil, dvs en masse pop-ups fx ikke er tilstrækkeligt.
Avatar billede kare Nybegynder
07. juli 2004 - 14:15 #20
Hvis jeg tillader url file-access på min egen server virker det. Er der nogen, der kan fortælle om det udgør en sikkerhedsrisiko i forhold til hackere mv.
Avatar billede kare Nybegynder
07. juli 2004 - 14:16 #21
sostack, svarer du ikke, så du evt. kan få lidt point?
Avatar billede sostack Nybegynder
07. juli 2004 - 14:24 #22
Det udgør en meget begrænset sikkerhedsrisiko.

//sostack
Avatar billede htx98i17 Professor
27. juli 2004 - 14:15 #23
jeg benytter remotecapture.

jeg registrerer alle godkendte transaktioner i egen database vha det 'skjulte http-kald' som dandomain kalder det. Det er det som hedder "OK Status Url" under indstillinger på dandmain.

Ud fra de registrerede godkendte transaktioner remotecaputere jeg vha. fopen()

Er dit problem at lave et script som registrere godkendte transaktioner i databasen?
Avatar billede kare Nybegynder
28. juli 2004 - 09:27 #24
htx98i17>>
Jeg har løst det - problemet var, at min egen server ikke havde slået allow_url_fopen = on. Efter jeg gjorde det virker fopen() fint sammen med Dandomain.

En lille kommentar:
Husk at du ikke må hæve dankorttransaktioner, før du har sendt den købte varer - med mindre du selvfølgelig sælger download-bare ting, så kan du hæve med det samme.
/Kare
Avatar billede htx98i17 Professor
28. juli 2004 - 16:59 #25
det har jeg ikke gjort siden vi startede for 3 år siden :-) men tak for påmindelsen
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