Php header
Résolu/Fermé
headsplinter
-
3 févr. 2010 à 14:33
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 5 févr. 2010 à 09:17
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 5 févr. 2010 à 09:17
A voir également:
- Php header
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Request header or cookie too large ✓ - Forum Réseaux sociaux
- Bouton php - Forum PHP
- Php?id=1 - Forum PHP
10 réponses
Bonjour
if( empty($Pseudo) or empty($password) or empty($password_conf) {
Il te manque une parenthèse ) juste avant l'accolade {
echo "Ce pseudo existe deja";
header("Location: http://127.0.0.1/form_inscription.html");
Ceci ne peut pas marcher. Quand tu fais ton premier echo qq chose, le serveur envoie d'abord les en-têtes HTTP puis ce qu'il y a dans l'echo. Tu ne peux pas demander à renvoyer un autre header après, c'est le protocole HTTP qui est comme ça : d'abord le header, puis les données. D'ailleurs dans ton cas ça ne veut pas dire grand chose, tu demandes à la fois d'afficher quelque chose et de changer de page
if( empty($Pseudo) or empty($password) or empty($password_conf) {
Il te manque une parenthèse ) juste avant l'accolade {
echo "Ce pseudo existe deja";
header("Location: http://127.0.0.1/form_inscription.html");
Ceci ne peut pas marcher. Quand tu fais ton premier echo qq chose, le serveur envoie d'abord les en-têtes HTTP puis ce qu'il y a dans l'echo. Tu ne peux pas demander à renvoyer un autre header après, c'est le protocole HTTP qui est comme ça : d'abord le header, puis les données. D'ailleurs dans ton cas ça ne veut pas dire grand chose, tu demandes à la fois d'afficher quelque chose et de changer de page
Merci beaucoup pour ta reponse rapide.
Oui en fait avant de mettre le header j'avais mis le echo pour voir si ma boucle marchait bien, ensuite j'ai rajouter le header, j'aurai du alors supprimer le echo.
Merci encore
Oui en fait avant de mettre le header j'avais mis le echo pour voir si ma boucle marchait bien, ensuite j'ai rajouter le header, j'aurai du alors supprimer le echo.
Merci encore
Par contre j'ai toujours un problème, je fais mes deux vérifications dans une seule boucle :
if(mysql_num_rows($result) != 0 or empty($Pseudo) or empty($password) or empty($password_conf))
{
header("Location: http://127.0.0.1/form_inscription.html");
}
else
Mais le coup du header ne marche toujours pas , il me dit qu'il ne peut pas recharger le header, qu'un header a deja été envoyé. JE pense que je ne met pas le code la ou il faut. Je l'ai mis dans <body> peut etre qu'il faut que je mette ces vérifications dans <head> non? Je ne sais pas trop comment s'utilise header.
if(mysql_num_rows($result) != 0 or empty($Pseudo) or empty($password) or empty($password_conf))
{
header("Location: http://127.0.0.1/form_inscription.html");
}
else
Mais le coup du header ne marche toujours pas , il me dit qu'il ne peut pas recharger le header, qu'un header a deja été envoyé. JE pense que je ne met pas le code la ou il faut. Je l'ai mis dans <body> peut etre qu'il faut que je mette ces vérifications dans <head> non? Je ne sais pas trop comment s'utilise header.
Tu ne peux mettre ce code ni dans le body, ni dans le head. Comme j'ai essayé de te l'expliquer plus haut, dès que tu as envoyé le moindre octet au client (dès le premier echo ou le premier caractère en dehors des balises PHP) tu ne peux plus envoyer de header HTTP. Donc plus de session_start(), setcookie() ni de header()
Tu dois mettre ce code avant tout envoi de données au client.
Tu dois mettre ce code avant tout envoi de données au client.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
3 févr. 2010 à 18:18
3 févr. 2010 à 18:18
juste un petit ajout. Il est en effet normalement impossible de renvoyer des headers HTTP quand on a commencé à envoyer le contenu de la page.
cependant, apache a un parametre permettant d'activer le buffer de sortie, qui permet de modifier les headers alors que l'envoi de la page vers le buffer a commencé. mais cette methode de programmation n'est pas propre car le bon fonctionnement de la page dépendra trop des reglages du serveur.
Bonne journée
cependant, apache a un parametre permettant d'activer le buffer de sortie, qui permet de modifier les headers alors que l'envoi de la page vers le buffer a commencé. mais cette methode de programmation n'est pas propre car le bon fonctionnement de la page dépendra trop des reglages du serveur.
Bonne journée
Alors s'il est impossible d'envoyer des headers quand on a commencer a afficher le contenu de la page, comment puis-je vérifier que mon utilisateur a rempli tous les champs du formulaires avant de charger la page d'après? Il faut que je fasse cette vérification dans la page formulaire?
Merci de m'aider
Merci de m'aider
en fait c'est bon j'ai enfin compris ce que tu voulais dire, j'ai mis tout mon code php pour vérifier que les champs étaient bien remplis juste entre la balise <html> et la balise <head>. Et les headers fonctionnent très bien.
Merci de ton aide
Merci de ton aide
Non, tu n'as pas dû tout comprendre. Il fallait le faire AVANT la balise <HTML>. Ça n'est pourtant pas compliqué, avant TOUT envoi de données au client. donc avant <HTML>
Ça marche quand même grâce à la bufferisation dont parlait Nabla's sans doute. Mais comme il le dit, Le bon fonctionnement de ta page dépend trop des réglages du serveur. Cette page risque de ne plus marcher si ton hébergeur touche à ce réglage, ou si tu changes d'hébergeur.
Ça marche quand même grâce à la bufferisation dont parlait Nabla's sans doute. Mais comme il le dit, Le bon fonctionnement de ta page dépend trop des réglages du serveur. Cette page risque de ne plus marcher si ton hébergeur touche à ce réglage, ou si tu changes d'hébergeur.
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
5 févr. 2010 à 09:17
5 févr. 2010 à 09:17
la balise <head> c'est le header HTML
la reponse http complete, ca ressemble plutoto a ca:
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT
<html>
<HEAD>
BLABLALBA
<HEAD>
<body>
blabla
</body>
</html>
en gras je t'ai mis le header http, et en italique le header html
consultes :
https://www.commentcamarche.net/informatique/technologies/26181-protocole-http-principe-de-fonctionnement/
fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol
la reponse http complete, ca ressemble plutoto a ca:
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT
<html>
<HEAD>
BLABLALBA
<HEAD>
<body>
blabla
</body>
</html>
en gras je t'ai mis le header http, et en italique le header html
consultes :
https://www.commentcamarche.net/informatique/technologies/26181-protocole-http-principe-de-fonctionnement/
fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol