[PHP / HTML] POST data komt niet door

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
Na een server crash probeer ik het intranet van een opdrachtgever weer op te zetten.

Alles is weer teruggezet en ingesteld. Het intranet komt weer naar voren, maar ik heb een probleem met de forms. De waarde van een hidden form-field komt niet door, en dus heb ik geen content.

Wat ik heb geprobeerd op applicatieniveau:
  • Het Apache access-log laat een POST-operatie zien en geeft een HTTP status 200 (OK).
  • Apache's error log geeft geen rare meldingen (behalve een error van PHP dat die specifieke POST-waarde niet gevonden kon worden, dat wist ik al)
  • Zowel IE 6 en 7 geprobeerd, beiden geven hetzelfde gedrag. De site is echter ontworpen voor IE6 en heeft daar jaren probleemloos mee gedraaid.
  • Intranet in IE's 'Trusted Sites' gezet - geen effect.
  • Intranet in IE's 'Local Intranet' gezet - geen effect.
  • IE's Security Level voor deze site op 'low' gezet - geen effect.
  • FireFox gebruikt: en het werkt foutloos!
Toen ben ik eens naar de code gaan kijken:
  • De waarde van PHP $_SERVER['REQUEST_METHOD'] uitlezen voor de content-pagina. Die is netjes POST.
  • FORM enctype="application/x-www-form-urlencoded" ingesteld (het was leeg) - geen effect
  • Ik gebruikte een JavaScript submit. Vervangen door een <INPUT type="submit"> - geen effect
  • Het hidden veld zichtbaar maken. De juiste waarde wordt door de site ingevoerd en op submit geklikt - geen effect
  • Gekeken in de content-pagina of er wel een POST-waarde voor die submitknop is, ook niet.
  • Gegoogled op 'IE form behavior' en variaties daarop met apache en php erin. Daar komt niets uit dat relevant lijkt.
  • GeGOT op soortgelijke lemma's. Er komen wel resultaten voor PHP en AJAX naar boven, maar ik gebruik geen AJAX.
Dus:

Het form lijkt gepost te worden, maar de data komt niet door. Zoals ik zei, een enkele keer werkt het wel en met firefox zonder problemen, maar voor de crash werkte het met IE ook prima. En ik kom er maar niet achter waarom nou.

Wat ik nu nog kan bedenken:
  • De versies van Apache/PHP/MySQL zijn nieuwer dan voor de crash. Ik beheer de server niet zelf, alleen de webapplicatie. Voordat ik de systeembeheerder vraag iets aan de software te veranderen wil ik wel graag weten dat het daar dan echt aan ligt.
Maar eerlijk gezegd heb ik gewoon geen idee meer. Herkent iemand dit probleem?

Het hidden form ziet er zo uit:
PHP:
1
2
3
4
<FORM name="naarBeheer" method="POST" action="medewerkers_profiel_beheren.php">
    <INPUT type="text" name="id" value="<?echo $medewerkerid?>">
    <INPUT type="submit" name="submitknop" value="test">
</FORM>


De server draait op Windows 2003, webserver is Apache voor windows 2.2.9, PHP 5.2.6 en mysql 5.0.86. (Versienummers van voor de crash heb ik niet)

Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Misschien moet je register_globals in php.ini eerst inschakelen?
(Een apache herstart is nodig voordat de instellingen toegepast zijn)

[ Voor 51% gewijzigd door JasperE op 03-12-2009 14:25 ]


Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
Dank voor de tip. Ik heb het direct even geprobeerd (+ herstart), maar het heeft geen effect.

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Register_globals aanzetten? Laat je je auto ook altijd van slot? ;) Heb je al gecheckt of de $_POST superglobal iets bevat? Dat mis ik nog in je verhaal.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 09:16
Al op een andere pc geprobeerd?

Acties:
  • 0 Henk 'm!

Verwijderd

Vreemd dat het in Firefox wel werkt. Dan zou ik eerder verwachten dat het clientside ligt, en niet aan je server.

Kijk eens naar de bron van de pagina in beide browsers. Ziet deze er hetzelfde uit, wordt het hidden field in beiden ingevuld in de broncode van de html-file.
Wat is trouwens de content-type van de pagina die je browser ontvangt? Probeer even je input-tags af te sluiten, je weet maar nooit dat IE hierover moeilijk doet.

Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Plaats dit eens bovenaan medewerkers_profiel_beheren.php en kijk wat de output is.
PHP:
1
var_dump($_POST);

[ Voor 53% gewijzigd door JasperE op 03-12-2009 14:40 ]


Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
@AtleX:

isset($_POST) = true
empty($_POST) = true

Dus hij is er wel, maar hij is leeg.

@Catch22: Ja, en ook ingelogd als andere gebruiker. Allemaal hetzelfde gedrag.

@Crazed580
In de broncode is het form veld ingevuld. In zowel IE6/7 als Firefox. Inputtags afgesloten, maar ook geen effect.

Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
@JasperE:
De output is:
array(0) { }

Dat lijkt te kloppen met de uitkomst van isset($_POST) en empty($_POST), toch?

Zo af en toe werkt het met IE wel, en dan is de output:
array(2) { ["id"]=> string(2) "63" ["submitknop"]=> string(4) "test" }

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

whistler schreef op donderdag 03 december 2009 @ 14:28:
Dank voor de tip. Ik heb het direct even geprobeerd (+ herstart), maar het heeft geen effect.
Doe 's register_globals meteen weer uitzetten als je dat nog niet gedaan hebt. ;)

Verder, als het in FF wel goed gaat moet het een clientside-iets zijn, lijkt me. Wat je dan doet is eerst eens alles terug brengen tot een simpel formuliertje dat je probeert te submitten. Geen Javascripts, geen andere gekke dingen, gewoon een fomuliertje op je pagina en in PHP niet meer doen dan var_dump($_POST). Als dat wél werkt zit er iets niet goed in je clientside scripting, lijkt me.

'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!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
NMe: geen zorgen, heb ik direct gedaan :)

Goed, we hebben pagina a.php

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<HTML>

<HEAD><TITLE>A</TITLE></HEAD>

<BODY>

<FORM name="simpelform" method="POST" action="b.php">
<INPUT name="idveld" type="text" value="123" />
<INPUT name="submit" type="submit" value="Submit" />
</FORM>

</BODY>

</HTML>


En pagina b.php
PHP:
1
2
3
<?php
var_dump($_POST);
?>


Het resultaat van deze actie met IE:
array(0) { }

Nog even in firefox checken...

[ Voor 9% gewijzigd door whistler op 03-12-2009 15:09 ]


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
De html is niet geldig, de input's hebben geen naam meegekregen.

Edit:
Note: Only form elements with a name attribute will have their values passed when submitting a form.
Bron: w3schools

[ Voor 61% gewijzigd door cariolive23 op 03-12-2009 15:08 . Reden: bronvermelding ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 17-09 18:39

Matis

Rubber Rocket

In de TS zie ik short-open-tags. Wordt dat wel ondersteund door de server? Dat zal geen verschil moeten maken voor FF / IE, maar misschien kan het een hoop andere problemen verklaren.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 17-09 20:43
Je moet je velden een id of naam meegeven.

Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
Oh duh, haastige spoed. Hierboven aangepast. Het resultaat blijft hetzelfde.

Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
De short-open tags staan aan in php.ini. Dat is het probleem niet.

Nog even de simpele pagina's getest met firefox: ze doen het prima. Het probleem lijkt dus bij IE te liggen. Maar hoe kan dat nu als de gebruikte versies van IE het al jaren hebben gedaan en sinds de crash/restore niet zijn bijgewerkt?

Acties:
  • 0 Henk 'm!

  • dB90
  • Registratie: Oktober 2004
  • Laatst online: 03-09 17:28
Heel vreemd.... heb je hier iets aan?
I then went to Internet Explorer and open Internet Options /Security/ Local Internet / Sites / Advance/ and added http://127.0.0.1
Dus het toevoegen van de url waar het om gaat. Misschien dat er iets veranderd is in het veiligheidsbeleid? :?

Webberry Webdevelopment


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Als het in Firefox werkt ligt het niet aan de code. PHP = serverside en daar heeft een browser dus niks mee van doen. Hoogstens dingen als cookies kunnen roet in het eten gooien, maar ook dat is de schuld van de browser. Met andere woorden, ergens in je browser zit een instelling fout.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • JasperE
  • Registratie: December 2003
  • Laatst online: 11-09 18:26
Wat een maf probleem dan zeg, dan gaan we maar 'random' dingen noemen die misschien iets meer info over de aard van het probleem kunnen geven:
- Al ctrl+f5 gedaan ipv een gewone refresh?
- Als gecheckt of IE misschien proxy settings heeft die FF niet heeft?
- Al http traffic gecaptured met een programma zoals wireshark om precies te zien hoe de twee browsers verschillen op het vlak van dataverkeer?

Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik gooi em er maar weer in: draait er misschien ook de suhosin patch voor php? En zoja, zit daar iets in de log wat je verder kan helpen. Misschien voegt IE bepaalde dingen toe aan de request die suhosin eruit vist, vaak returned ie dan helemaal geen POST-data meer bij zoiets.

Acties:
  • 0 Henk 'm!

  • whistler
  • Registratie: April 2000
  • Laatst online: 18-04 17:00
Het heeft even geduurd maar ik ben eruit. Wireshark liet uiteindelijk het probleem zien.

Om de gebruikers te authenticeren bij het windows-domein gebruik ik mod_auth_sspi. IE handelt de vraag om de gebruikersnaam anders af dan FireFox. Kort gezegd: bij de afhandeling houdt FireFox de POST-data vast, terwijl IE ze loslaat om de afhandeling te doen. Als de authenticatie succesvol is, kan FireFox dus verder, maar IE niet. De oplossing was deze switch in m'n httpd.conf aan te zetten.
code:
1
SSPIPerRequestAuth On


Een eindoplossing is het niet, want het schijnt dat mod_auth_sspi niet op Vista+ en Win 2008 werkt. Vroeger of later gaat deze opdrachtgever upgraden en kom ik het dus weer tegen, maar nu ben ik gewaarschuwd en kan ik vast op zoek naar een alternatief.

Dank voor alle hulp! Ik heb er weer een handig tooltje bij geleerd.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Toch handig dat je in de TS meldt dat extra mod's hebt geinstalleerd maar fijn dat het is opgelost ;)

Acties:
  • 0 Henk 'm!

  • Dutch2007
  • Registratie: September 2005
  • Laatst online: 13-08 14:34
maybe offtopic maar why apache op een 2003 server? voldoet iis6? en iis 7.5 (2008 R2) niet?
als het geheel nu linux is, met apache 2.2 dan kan ik het geheel begrijpen.. anders... ach het is maar een persoonlijke keuze i supose....

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 09:16
Cartman! schreef op maandag 21 december 2009 @ 15:07:
Toch handig dat je in de TS meldt dat extra mod's hebt geinstalleerd maar fijn dat het is opgelost ;)
Precies...
Pagina: 1