Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:21 Der er 12 kommentarer og
1 løsning

Vis "rå" resultat af post

Jeg har at gøre med et simpelt script som gerne skulle vise de data som bliver POST'et. Problem: jeg har også at gøre med en ISP som har en gammel version af PHP.

PHP har fra version 4.3.0 mulighed for at bruge funktionen php://input, men da ISP ikke har denne udgave installeret er jeg nødt til at bruge alternative metoder.

OK, hmmm...jeg tjekker lidt omkring dokumentationen på PHP.net, og finder ud af at $HTTP_RAW_POST_DATA (eller $GLOBALS['HTTP_RAW_POST_DATA']) gerne skulle indeholde disse data - HVIS man vel og mærke sørger for at data'ene bliver POST'et med en anden MIME-type end "application/x-www.form-urlencoded". Ellers er $HTTP_RAW_POST_DATA tom!

Jeg har også prøvet at bruge ini_set() til at sætte konfigurationsvariablen "always_populate_raw_post_data", som skulle tvinge PHP til at befolke $HTTP_RAW_POST_DATA.

Så langt så godt - men jeg har stadig ikke held med at få det til at spille...hmm...
Avatar billede stois Nybegynder
13. oktober 2004 - 15:30 #1
hmm... jeg er ikke sikker på at jeg er helt med så det jeg skriver nu er sikkert forkert...

men hvis du vil skrive det som at skrevet i en form, som er blevet POST'et, så bruger jeg echo $_POST['name']; og det har nu virket fint, men jeg har også en nyere version af PHP her... så måske virker det ikke...
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 15:33 #2
Jeg er lidt usikker på, hvad det er du vil ha.
Du kan få hele $_POST array'et udskrevet sådan her:

<pre>
<?php
print_r($_POST);
?>
</pre>
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:38 #3
Tak, jeg tjekker om det skulle virke...og grunden til at jeg vil have RAW værdier er, da jeg har at gøre med XML data...de lader sig ikke så nemt gemme som "værdipar"...
Avatar billede sukos Juniormester
13. oktober 2004 - 15:41 #4
Hvad med dette, virker det?

<html><head></head>
<body>

<form action="<?php echo $HTTP_SERVER_VARS["PHP_SELF"]; ?>" method="post">

Navn:<br>
<input type="text" name="navn"><br>
Adresse:<br>
<input type="text" name="adresse"><br>
By:<br>
<input type="text" name="by"><br>
<input type="submit" value="Vis">
</form>

<?php
if(isset($HTTP_POST_VARS["navn"])) {
while(list($key, $value) = each($HTTP_POST_VARS)) {
echo"<br>\n". $key ." - ". $value;
}
}
?>

</body></html>
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:45 #5
Den returnerer såmænd bare en tom array...hvis jeg nu havde haft mulighed for at skrive

file_get_contents("php://input")

så dukker der et fint XML dokument op. Så det er en erstatning for "php://input" jeg leder efter...
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:45 #6
Ups, så ikke lige din post (læse-læse:-)
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:49 #7
Sukos, det er ikke helt mit scenarie det der. Dit eksempel virker fint, da det jo er "traditionelle" application/x-www.form-urlencoded'e data vi har at gøre med.
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 15:50 #8
Lidt mere om mit "scenarie": jeg poster data fra en flash plugin, via xml.send...
Avatar billede sukos Juniormester
13. oktober 2004 - 15:51 #9
Ja, mig som lige misforstod!
Avatar billede Slettet bruger
13. oktober 2004 - 16:36 #10
Prøv at sætte always_populate_raw_post_data i php.ini eller i en .htaccess så den ikke først bliver sat, når scriptet allerede er igang.
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 17:30 #11
Hedder den ikke:
$_SERVER['HTTP_RAW_POST_DATA']
istedet for:
$GLOBALS['HTTP_RAW_POST_DATA']
Avatar billede monkeysee Nybegynder
13. oktober 2004 - 18:46 #12
sandbox, du er sagen!

jeg tilføjede en .htaccess som sagde
- - - - - - - - - - - - - - - - - - - - - -
php_flag always_populate_raw_post_data "1"
- - - - - - - - - - - - - - - - - - - - - -
og så virkede det! Selvfølgelig har du ret i at scriptet ikke kunne nå at få fat i mine data (men det havde jeg altså ikke tænkt på)

Nu er det så sprgsm. om min ISP så har sat AllowOverride til "Options" i httpd.conf, men det er en helt sag...bumbum...
Avatar billede Slettet bruger
13. oktober 2004 - 18:55 #13
Hvis det virker, så får du lige et svar.
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