J'ai la forme la plus simple possible et tout ce que je veux faire, c'est faire écho à tout ce qui est écrit dans la zone de texte.
HTML:
<form action="" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
PHP:
if(isset($_POST['submit'])){
$test = $_POST['firstname'];
echo $test;
}
Le problème est que cela ne fonctionne pas sur mon serveur (cela fonctionne sur un autre serveur). Est-ce que quelqu'un a une idée de ce qui pourrait être faux? Il existe d'autres formulaires sur le serveur et fonctionnent bien.
Une petite chose à faire:
[Facultatif] Essayez d'inclure à la fois un attribut "nom" et un attribut "id", par exemple.
<input type="text" name="firstname" id="firstname">
Si vous êtes dans un environnement Linux, vérifiez que vous disposez des deux autorisations de lecture/écriture sur le fichier.
En outre, ce lien pourrait également aider.
MODIFIER:
Vous pouvez également remplacer if(isset($_POST['submit'])){
Par ceci: if($_SERVER['REQUEST_METHOD'] == "POST"){
. C’est toujours le meilleur moyen de vérifier si un formulaire a été soumis ou non
J'ai eu quelque chose de similaire ce soir qui me rendait fou. Soumettre un formulaire me donnait les valeurs dans $ _REQUEST mais pas dans $ _POST.
Finalement, j'ai remarqué qu'il y avait en fait deux demandes sur l'onglet réseau de Firebug; d’abord un POST avec une réponse de 301, puis un GET avec une réponse de 200.
En recherchant les interwebs, la plupart des gens pensaient que cela était dû à mod_rewrite, ce qui entraînait la demande de la requête POST de se rediriger et de passer ainsi à un élément GET.
Dans mon cas, ce n'était pas mod_rewrite à blâmer, c'était quelque chose de beaucoup plus simple ... mon URL pour le POST contenait également une chaîne de requête GET qui commençait sans une barre oblique finale sur l'URL. C'est ce qui a amené Apache à rediriger.
Repérer la différence ...
Bad: http: //blah.de.blah/my/path? Key = value & otherkey = othervalue
Bon: http: //blah.de.blah/my/path/? Key = value & otherkey = othervalue
Le dernier ne provoque pas de redirection et me donne $ _POST!
Videz la variable globale pour savoir ce que vous avez dans l'étendue de la page:
var_dump($GLOBALS);
Cela vous dira le "quoi" et "où" en ce qui concerne les données sur votre page.
J'ai aussi eu ce problème. L'erreur était dans le htaccess. Si une règle de réécriture affecte l’action URL, vous ne pourrez pas lire la variable POST.
Pour résoudre ce problème, vous devez ajouter cette règle à htaccess, au début, pour éviter de réécrire l'URL:
RewriteRule ^ my_action.php - [PT]
Au lieu d'utiliser $ _POST, utilisez $ _REQUEST:
HTML:
<form action="" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
PHP:
if(isset($_REQUEST['submit'])){
$test = $_REQUEST['firstname'];
echo $test;
}
essaye ça
Code HTML
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
code php:
if(isset($_POST['Submit'])){
$firstname=isset($_POST['firstname'])?$_post['firstname']:"";
echo $firstname;
}
Avez-vous vérifié votre php.ini?
J'ai cassé ma méthode de publication une fois que j'ai défini post_max_size
la même chose avec upload_max_filesize
.
Je pense que post_max_size
doit être inférieur à upload_max_filesize
.
Testé avec PHP 5.3.3 dans RHEL 6.0
FYI:
$ _POST en php 5.3.5 ne fonctionne pas
PHP POST ne fonctionne pas
essayez de faire var_dump($_GLOBALS)
.
Une cause potentielle pourrait être qu’un script en cours d’exécution précédant le vôtre efface les variables globales. Tel que:
unset($_REQUEST);
ou même.
unset($GLOBALS);
Cela pourrait être fait via l'option auto_prepend_file dans la configuration de php.ini.
Il n'y a rien de mal avec votre code. Le problème n'est pas visible sous forme ici.
Vérifiez si, après l'envoi, le script est appelé.
Regardez ce qui est soumis: var_dump($_REQUEST)