[PHP] POST probleem

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb onderstaand test scriptje:

<?php
print 'req meth: '.$_SERVER['REQUEST_METHOD'] .'<br />';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
print_r($_POST);
}
?>
<form method="post" action="">
<input type="text" name="sTest" value="" id="f_id_1" />
<input type="submit" name="submit" value="submit" />
</form>

wanneer ik nu op submit klik krijg ik in FF het volgende:

1e: keer:

req meth: POST
Array ( [action] => test [sTest] => [submit] => submit )

2e keer:

req meth: sTest=fds&submit=submitPOST

De req meth wordt dus gewijzigd en verkeerd!

in IE gaat alles gewoon goed en blijft de req meth de waarde POST houden.

Wat kan hier verkeerd gaan?

Acties:
  • 0 Henk 'm!

Verwijderd

Hier gaat alles prima?
Wellicht is dit niet je hele script en gaat ergens anders iets mis?

Acties:
  • 0 Henk 'm!

Verwijderd

Haal die print_r($_POST) eens weg?

Dit kan echt niet... Kijk hier maar eens.

Doe eens alleen echo($_SERVER['REQUEST_METHOD']), daar zou echt POST moeten staan...

Er wordt ook POST afgedrukt. De tekst ervoor komt wss van een andere print/echo/print_r :)

Plaats code ff tussen code-tags :)

[ Voor 31% gewijzigd door Verwijderd op 08-03-2006 14:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee dit is ECHT het script:

<?php
print 'req meth: '.$_SERVER['REQUEST_METHOD'] .'<br />';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
print_r($_POST);
}
?>
<form method="post" action="">
<input type="text" name="sTest" value="" id="f_id_1" />
<input type="submit" name="submit" value="submit" />
</form>

Wij snappen er hier ook helemaal niks van. Ik ben bezig met een applicatie opdezelfde server en daar trad dit probleem op. Nu heb ik dus een test formulier gemaakt om te zoeken waar de fout zit en die zit hem in de $_SERVER['REQUEST_METHOD'] zo te zien.

Het enigste wat in in de code staat is bovenstaande code!

edit:
Ik heb tevens de headers bekeken en daar staat ook de eerste keer POST en daarna req meth: sTest=fds&submit=submitPOST

[ Voor 25% gewijzigd door Verwijderd op 08-03-2006 14:08 ]


Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Dan ligt het dus aan de server?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat weet ik dus niet.

Aan welke instelling kan dit liggen op de server?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Wellicht een idee om je PHP te upgraden naar de meest recente (4.x.x eventueel) versie? :?

Hier namelijk geen enkel probleem :)

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Je action html-attribute is leeg, terwijl deze verplicht is volgens de HTML documentatie. Het kan zijn dat FireFox daarom "gek" doet.

Acties:
  • 0 Henk 'm!

  • George
  • Registratie: Maart 2006
  • Laatst online: 02-03 19:22
Code die jij gepost hebt werkt gewoon (zowel in IE als FF). Wel op mijn box iig.

EDIT: Wat er trouwens bij je 2e req staat lijkt op een url querystring die geconcateneerd is met de req method. Zeker weten dat er ergens niet iets fout zit in de code die daadwerkelijk draait op je box ?

[ Voor 73% gewijzigd door George op 08-03-2006 14:16 ]

-George.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nope.

action attribute heb ik ook al met $_SERVER['PHP_SELF'] gevuld maar dan blijft het probleem.

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer dit alleen eens:

PHP:
1
print 'req meth: '.$_SERVER['REQUEST_METHOD'];

HTML:
1
2
3
4
<form method="post">
<input type="text" name="sTest" id="f_id_1" />
<input type="submit" name="submit" value="submit" />
</form>

Dit moet gewoon werken, anders is er echt iets mis met je PHP-configuratie...

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Wat als je nu doet:

PHP:
1
2
3
4
5
6
7
8
<?php
print 'req meth: '.$_SERVER['REQUEST_METHOD'] .'<br />';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
print 'Post waardes:';
print_r($_POST);
print '<br />';
}
?> 


Als je het op deze manier debugged, kan je altijd zien waar de var vandaan komt.
Wat is hiervan de output?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Verwijderd schreef op woensdag 08 maart 2006 @ 14:12:
Nope.

action attribute heb ik ook al met $_SERVER['PHP_SELF'] gevuld maar dan blijft het probleem.
Je draait ook geen Norton virusscanner ofzo? Die willen ook nog wel eens voor verassende resultaten zorgen. En welke versie van php draai je op dit moment?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
1)

Met jouw code de eerste keer in FF:

req meth: POST
Post waardes:Array ( [sTest] => test [submit] => submit )

En de 2e keer:

req meth: sTest=test&submit=submitPOST

En hier laat die dus de Post waardes weg omdat $_SERVER['REQUEST_METHOD'] geen post meer is.


2)

Ik draai hier wel Norton!

edit:

en php versie: PHP Version 4.4.2-0.dotdeb.1

[ Voor 12% gewijzigd door Verwijderd op 08-03-2006 14:32 ]


Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Staat register_globals aan ?

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja die staan inderdaad aan.

Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Probeer dan eens de variabele $sTest te echoen aan het begin van je code.

Wellicht dat deze wordt aangemaakt en vervolgens wordt doorgegeven via GET.

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok:

<?php
print 'Input waarde '.$sTest.'<br /><br />';
print 'req meth: '.$_SERVER['REQUEST_METHOD'] .'<br />';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
print 'Post waardes:';
print_r($_POST);
print '<br />';
}
?>
<form method="post" action="">
<input type="text" name="sTest" value="" id="f_id_1" />
<input type="submit" name="submit" value="submit" />
</form>


Dat script heb ik nu gebruikt en de eerste keer is het goed:

input waarde sadd

req meth: POST
Post waardes:Array ( [sTest] => sadd [submit] => submit )

2e keer:

Input waarde

req meth: sTest=dasd&submit=submitPOST

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Uit ermee. ;) Programming FAQ - PHP: Het gebruik van superglobals

Trouwens, Sybr_E-N zei dat Norton gezeur kan opleveren, en jij blijkt Norton te gebruiken. Is dan niet het eerste dat je probeert om Norton even uit te zetten en nog eens te kijken wat het doet? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Ahja, norton internet security maakt er af en toe idd crap van.
Heb ik wel is vaker mee gemaakt

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Programming FAQ - PHP: Het gebruik van superglobals

Ok, ik gebruik SUPERGLOBALS maar het script zelf is grotendeels opgebouwd met NIET SUPERGLOBALS maar ik moet aanpassingen maken in het script.

Trouwens, Sybr_E-N zei dat Norton gezeur kan opleveren, en jij blijkt Norton te gebruiken. Is dan niet het eerste dat je probeert om Norton even uit te zetten en nog eens te kijken wat het doet?

Niet te snel conclusies trekken want dat heb ik namelijk al lang geprobeert en hij blijf het zelfde doen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 08 maart 2006 @ 18:51:
Ok, ik gebruik SUPERGLOBALS maar het script zelf is grotendeels opgebouwd met NIET SUPERGLOBALS maar ik moet aanpassingen maken in het script.
Dan hoef je register_globals nog steeds niet aan te hebben staan. In het slechtste geval zet je ze uit, en zet je zoiets bovenaan in je script:
PHP:
1
extract($_REQUEST);

Voordeel daarvan is dat je hetzelfde effect bereikt als wanneer je register_globals aanzet, terwijl het dan niet hoeft voor de gehele server. Daarnaast zou het in dit geval misschien je probleem kunnen oplossen omdat je precies kan zien wat er gebeurt. Als je wil dat een $_POST variabele wel een $_SESSION-variabele kan overschrijven dan kun je die extract apart doen:
PHP:
1
2
3
4
5
6
extract($_SESSION);
extract($_POST);

//of:
extract($_POST);
extract($_SESSION, EXTR_SKIP);

Hoe dan ook, register_globals aan laten staan is vragen om problemen.
Niet te snel conclusies trekken want dat heb ik namelijk al lang geprobeert en hij blijf het zelfde doen.
En waar lees ik dat je dat gedaan hebt? Wat je niet post kan ik niet weten, en dus neem ik aan dat je er niets mee gedaan hebt. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Dit gebeuren komt mij nogal raar voor. Ten eerste raad ik je aan voor zowel als na het echo'en van je variabelen een speciaal teken te versturen. Iets in de buurt van:
PHP:
1
2
// Gebruik evt. htmlentities() als je zeker weet dat het een string is
echo '<p>variabele: "', $variabele, '"</p>';

Zorgt ervoor dat je zeker weet welke variabele welke inhoud heeft.

Ten tweede deed de omschrijving van je probleem mij denken aan de php.ini instellingen auto_prepend_file & auto_append_file. Kortgezegd zorgen deze instellingen ervoor dat een bestand met PHP code voor en/of na elk verzoek wordt verwerkt. Let erop dat deze instellingen zowel via php.ini als een Apache configuratie bestand ingesteld kunnen worden (Misschien zelfs @ runtime voor append?! :*))

In ieder geval succes!

@-NMe-: Sinds kort is extract($this->variables, EXTR_REFS) mijn grote vriend in Template.php 8)

Edit: Om er snel achter te komen of auto_*_file wordt toegepast kun je (niet uitgeprobeerd) gebruiken:
PHP:
1
2
echo 'auto_prepend_file: ', ini_get('auto_prepend_file'), '<br />';
echo 'auto_append_file: ', ini_get('auto_append_file'), '<br />';

[ Voor 26% gewijzigd door Verwijderd op 08-03-2006 19:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de reacties!

Ik zal morgen op mijn werk er weer naar kijken.
Pagina: 1