2009-11-27 4 views
0

Je n'arrive pas à envoyer un formulaire via POST avec PHP via SSL. Voici un rapide coup d'oeil à mon code, quelqu'un peut-il me dire ce qui ne va pas?Impossible de soumettre un formulaire via POST avec PHP sur SSL

Mon fichier .htaccess

RewriteEngine On 
RewriteBase /test 

RewriteCond %{HTTP_HOST} !^www\.helloworld\.org$ [NC] 
RewriteRule ^(.*)$ http://www.helloworld.org/test/$1 [L,R=301] 

# If i comment out these 3 lines, everything works fine 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (myaccount|register|registration|login) 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 

est ici index.php

<?php $myurl = "http://www.helloworld.org".$_SERVER['REQUEST_URI']; ?> 
<form method="post" action="<?=$myurl ?>"> 
<input name="text" /> 
<input type="submit" /> 
<?php print_r($_POST); ?> 

Je prends les actions suivantes:

1) Aller à l'http://www.helloworld.org/test/login/ (mon navigateur affichera alors automatiquement le https version)

2) Je tape quelque chose dans la forme et h le bouton submit

3) Le print_r ($ _ POST) n'imprime rien! Je m'attendais à ce qu'il soit peuplé!

Si je commente les trois lignes du fichier .htaccess liées au HTTPS et répète la même expérience, alors print_r ($ _ POST) me donne les résultats de la soumission du formulaire.

Comment puis-je faire en sorte que mon formulaire de formulaire fonctionne tout le temps?

+0

Avez-vous essayé de voir si l'utilisation de 307 au lieu de 301 le fait se comporter différemment? – Amber

Répondre

1

Oh, je me suis dit le problème

Mon adresse du navigateur web dit https://www.helloworld.org/test/login/ avec le https mais mon [form action = "http://www.helloworld.org/test/login"] n'a pas la https Lorsque je clique sur submit, le .htaccess redirige vers https, ce qui détruit probablement les informations POST.

Donc tout ce que j'ai fait était d'utiliser PHP pour imprimer le même protocole http ou https affiché l'url du navigateur dans l'action de la balise de formulaire.

Questions connexes