J'ai configuré cette page de test sur mon serveur. S'il vous plaît dites-moi pourquoi le tableau $_POST
ne contient rien même lorsque je soumets le formulaire. J'ai essayé ceci dans trois navigateurs différents et rien ne se produit. J'ai écrit du code PHP pendant des années et cela ne s'est jamais produit avant cela. Quel est le problème avec ce code?
Répondre
Vos éléments d'entrée n'ont pas d'attributs de nom. Devrait être:
<input type="text" id="login_email" name="login_email" />
Si un élément d'entrée ne possède pas d'attribut de nom, il n'est pas envoyé dans le cadre des données POST.
Eh bien, vous n'avez pas d'action pour l'étiquette de formulaire? Il devrait être le nom du script:
<form method="post" action="scriptname.php">
... et vous configurez pas non plus les noms pour chaque entrée de forme - le navigateur ne présente pas l'ID comme nom d'élément.
Il n'y a pas d'attribut de nom pour les éléments d'entrée.
<form method="POST" action="<?php echo $PHP_SELF; ?>
<p><label>Email: </label>
<input type="text" name="login_email" />
</p>
<p><label>Password: </label>
<input type="password" name="login_password" />
</p>
<p><label>Remember Me?: </label>
<input type="checkbox" name="login_remember" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</form>
Cela fonctionnera ... vous avez oublié le nom et les parties d'action. – MichaelICE
Tous vos éléments d'entrée nécessitent un attribut de nom.
Je vous suggère d'écrire quelque chose comme les fonctions suivantes basées sur les helpers de Zend_View.
formText($name, $value = null, array $attribs = null)
formPassword($name, $value = null, array $attribs = null)
formLabel($id, $text, array $attribs = null)
formHidden($name, $value = null, array $attribs = null)
formSubmit($name = null, $text = null, array $attribs = null)
formSelect($name, $selected, array $attribs = null, array $options = null)
formCheckbox($name, $default, array $attribs = null, array $options = null)
Ensuite, vous n'oublierez plus jamais quelque chose comme ça.
<form method="POST" action="<?php echo $PHP_SELF; ?>
<p>
<?php
echo formLabel('login_email', 'Email'), ':',
formText('login_email');
?>
</p>
<p>
<?php
echo formLabel('login_password', 'Password'), ':',
formPassword('login_password');
?>
</p>
<p>
<?php
echo formCheckbox('login_remember'), ' ',
formLabel('login_remember', 'Remember me');
?>
</p>
<p>
<?php
echo formSubmit(null, 'Login');
?>
</p>
</form>
Astuce:
- Si id non défini attribs, id est le même que le nom, à l'exception des étiquettes où id est utilisé dans le for = attribut "id $" et formHidden ne devrait pas avoir un identifiant par défaut non plus. FormCheckCheck écrit un formHidden du même nom avant lui-même avec la valeur négative, de sorte que vous obtenez une valeur de retour si la case n'est pas cochée. Les options formCheckbox sont un tableau dont les valeurs sont cochées ou non cochées.
- Utilisez un filtre avec FILTER_VALIDATE_BOOLEAN pour lire la valeur de retour d'une case à cocher pour vérifier si elle a été marquée ou non.
Vous avez oublié les attributs de nom pour que votre script fonctionne. Vous pouvez également inclure la balise "for" dans vos étiquettes pour correspondre aux attributs de noms de vos entrées. Ce n'est pas une exigence, mais peut aider à CSS formattage de votre formulaire:
<p>
<label for="login_email">Email: </label>
<input type="text" name="login_email" id="login_email" />
</p>
tout Contribue match et garder votre code plus lisible et rationaliser si vous devez y revenir 6 mois plus tard. L'attribut d'action si vous n'allez remplir un j'inclure ce que votre action:
<form method="POST" action="<?php echo $PHP_SELF; ?>
Cela fera en sorte que votre page est bonne dans la mesure où les exigences du formulaire ainsi que faire que votre script doit exécuter . On dirait une simple vue. J'espère que cela t'aides.
- 1. Fermer un bookmarklet après la soumission du formulaire
- 2. Comment arrêter la soumission du formulaire?
- 3. Téléchargement du fichier de démarrage automatique après la soumission du formulaire
- 4. montre jquery thickbox lors de la soumission du formulaire?
- 5. l'envoi de la valeur du bouton de soumission du formulaire?
- 6. Formulaire de problème de tableau de _POST
- 7. Formulaire de soumission automatique après x millisecondes de clavier inactif
- 8. Pourquoi _POST est-il parfois vide lorsqu'une zone de texte est publiée dans PHP
- 9. Soumission d'un formulaire plusieurs fois
- 10. erreur de soumission de formulaire php
- 11. Problème avec la soumission directe de formulaire
- 12. JQuery Ajax formulaire de soumission
- 13. La soumission du formulaire avec des erreurs affiche le formulaire + erreurs à une URL différente du formulaire original
- 14. Soumission de formulaire JQuery et contrôleur CakePHP
- 15. Déterminez si une case à cocher est cochée lors de la soumission du formulaire
- 16. formulaire de soumission dans thickbox
- 17. Comment conserver la valeur du formulaire après l'actualisation du navigateur?
- 18. Transporter des valeurs de ligne à partir de MYSQL après la soumission d'un formulaire
- 19. Actualisation d'un DIV après la soumission d'un formulaire dans ruby on rails
- 20. Quitter la page avant la soumission d'un formulaire
- 21. Appel d'un ScriptMethod sur la soumission d'un formulaire?
- 22. Flux d'extension SOAP vide après la sérialisation
- 23. Comment activer la soumission de formulaire en utilisant l'événement onchange?
- 24. Formulaire de prévention de soumission avec silverlight
- 25. variation du champ de formulaire sélectionné après le post php
- 26. soumission de formulaire jQuery/amélioration des effets?
- 27. Comportement de soumission de formulaire par défaut après jQuery forms.js ajaxSubmit exécute
- 28. La soumission du formulaire échoue lorsque les données du formulaire contiennent une balise <script> LAMP
- 29. Réorganiser la boîte déroulante après le redimensionnement du formulaire
- 30. Populate Collection de Struts2 Formulaire de soumission
En fait, je pense qu'il est valide de laisser le nom de l'action. Si vous le faites, le navigateur affiche/accède à la page en cours. –
La plupart des navigateurs présentent ce comportement, mais selon les spécifications officielles, l'attribut action est obligatoire - http://www.w3.org/TR/html401/interact/forms.html. – BrynJ
Merci pour la clarification. Je suis d'accord que c'est une mauvaise idée d'exprimer ce genre d'ambiguïté lorsque la spécification ne définit pas un comportement par défaut. –