[PHP] $_POST werkt niet icm mod_rewrite?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DelTorro
  • Registratie: December 2004
  • Laatst online: 01-01-2024
Ik ben bezig met een site die ik thuis lokaal test en daarna online gooi. Lokaal werkt alles goed alleen online werkt de post-method op een formulier niet.

HTML:
1
2
3
<form id="contact" method="post" action="">
   [...]
</form>


De array $_POST blijkt altijd leeg te zijn. Ik ben er inmiddels achter gekomen dat dit ligt aan mijn .htaccess waarmee ik urls rewrite.

code:
1
2
3
4
Options -MultiViews
RewriteEngine on
   [...]
RewriteRule ^(.*)/$ ?open=$1


Zodra ik de action in mijn form aanpas naar action="/?open=contact" (action="/contact/" of action="" werkt niet) wordt de $_POST-array pas gevuld. Ik heb echter ook in de broncode liever mooie urls.

Een zoektocht naar dit probleem heeft me tot nu toe steeds opgeleverd om register_globals aan te zetten waneer de post-method niet werkt. Hier ligt het echter niet aan want dit maakt geen verschil, Kan iemand me op weg helpen? Moet ik .htaccess aanpassen?

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Het mag eigenlijk niks uitmaken. Je browser stuurt een POST request naar de action die jij in de HTML opgeeft. Dat dit bijvoorbeeld /contact/ is moet niks uitmaken.

Misschien helpt het om in plaats van ?open=$1 iets anders neer te zetten: index.php?open=$1. Is sowieso iets netter en wellicht helpt het.

Welke URL gebruik je om het formulier in te vullen?

Acties:
  • 0 Henk 'm!

Verwijderd

Dit zou inderdaad moeten werken. Roept ie wel het goede script aan?

Acties:
  • 0 Henk 'm!

  • jnr24
  • Registratie: Oktober 2004
  • Laatst online: 27-08 11:48
laat eens een stukje van dat index.php script zien, gebruik je wel consequent $_POST['var'] en $_GET['var']
Heb je de php_info() al vergeleken met je thuis en online server?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Vul eens netjes gewoon een action in voor je form, in dit geval zeer waarschijnlijk index.php. Neem die bestandsnaam als het even kan ook in je .htaccess bestand op. Waarschijnlijk werkt het dan al een stuk beter.

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

  • DelTorro
  • Registratie: December 2004
  • Laatst online: 01-01-2024
Het probleem is inmiddels opgelost dankzij het voorstel van Mafkees:
Mafkees schreef op woensdag 17 januari 2007 @ 23:27:
Misschien helpt het om in plaats van ?open=$1 iets anders neer te zetten: index.php?open=$1. Is sowieso iets netter en wellicht helpt het.
Bedankt mensen!

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dat het werkt wil niet zeggen dat je het goed aanpakt. Neem gewoon altijd een gevulde action op voor je formulieren. :)

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

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Waarom zou je hem invullen als browsers een lege action vertalen naar de huidige URI?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Omdat dit in de reference staat:
17.3 The FORM element

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
<!ATTLIST FORM
%attrs; -- %coreattrs, %i18n, %events --
action %URI; #REQUIRED -- server-side form handler --
method (GET|POST) GET -- HTTP method used to submit the form--
enctype %ContentType; "application/x-www-form-urlencoded"
accept %ContentTypes; #IMPLIED -- list of MIME types for file upload --
name CDATA #IMPLIED -- name of form for scripting --
onsubmit %Script; #IMPLIED -- the form was submitted --
onreset %Script; #IMPLIED -- the form was reset --
accept-charset %Charsets; #IMPLIED -- list of supported charsets --
>

Start tag: required, End tag: required

Attribute definitions

action = uri [CT]
This attribute specifies a form processing agent. User agent behavior for a value other than an HTTP URI is undefined.
Emphasis mine. :)

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

  • DelTorro
  • Registratie: December 2004
  • Laatst online: 01-01-2024
-NMe- schreef op donderdag 18 januari 2007 @ 13:23:
Dat het werkt wil niet zeggen dat je het goed aanpakt. Neem gewoon altijd een gevulde action op voor je formulieren. :)
Ik heb ook niet gepost met de intentie om het juiste gebruik van het action-attribuut te achterhalen anders had ik wel gepost in Webdesign, Markup & Clientside Scripting.

Wil echter niet zeggen dat ik lak heb aan de regels van het W3C. Ik heb inmiddels elk action-attribuut gevuld dus bedankt voor de link naar de reference.

Acties:
  • 0 Henk 'm!

Verwijderd

DelTorro schreef op donderdag 18 januari 2007 @ 14:28:
[...]


Ik heb ook niet gepost met de intentie om het juiste gebruik van het action-attribuut te achterhalen anders had ik wel gepost in Webdesign, Markup & Clientside Scripting.

Wil echter niet zeggen dat ik lak heb aan de regels van het W3C. Ik heb inmiddels elk action-attribuut gevuld dus bedankt voor de link naar de reference.
Geen regels.. Aanbevelingen :p

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14

pietje63

RTFM

En als je altijd naar de huidige pagina wilt posten en toch een mooie bron wilt houden kun je eventueel ook gebruik maken van php_self
'PHP_SELF'
The filename of the currently executing script, relative to the document root. For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/test.php/foo.bar would be /test.php/foo.bar. The __FILE__ constant contains the full path and filename of the current (i.e. included) file.

If PHP is running as a command-line processor this variable contains the script name since PHP 4.3.0. Previously it was not available.
Verder zet ik zelf informatie als open=1 altijd in een hidden form element, vind dat om een of andere manier netter, maar dat zal wel iets persoonlijks zijn.

[ Voor 11% gewijzigd door pietje63 op 21-01-2007 00:55 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Priet
  • Registratie: Januari 2001
  • Laatst online: 19:26

Priet

To boldly do what no one has..

En met [QSA] (van Query String Append) achter je RewriteRule kun je gewoon posten naar de herschreven URL die mod_rewrite heeft opgeleverd :)

"If you see a light at the end of a wormhole, it's probably a photon torpedo!"

Pagina: 1