PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > SOS debutant : bloque sur header location
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
SOS debutant : bloque sur header location

Réponse
 
LinkBack Outils de la discussion
Vieux 22/07/2007, 16h18   #1
Ben74
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut SOS debutant : bloque sur header location

Bonjour à tous

je débute en php et je dois, suite à un formulaire d'authentification,
rediriger un visiteur vers une URL
j'ai essayé avec header("location:....) et ça ne fonctionne pas
voici le code


// connexion à la base de données
$db = mysql_connect ('xxxx' , 'yyyyy' , 'zzzzz') or die ( ' Erreur de
connexion '.mysql_error());
mysql_select_db('uuuuuuuu', $db) or die('Erreur de
sélection'.mysql_error());

// vérification des données du formulaire
$sql = "Select * from Users where NOM_US='".$nom."' and PRE_US='".
$prenom."'";
$result = mysql_query($sql) or die("Query failed");
$valide = false;
while ($line = mysql_fetch_assoc($result))
{
$valide = true;
}
mysql_free_result($result);
if($valide == true)
{
////////////////// c'est là que ça plante ////////////////////////
header("Location: test.php");
}
else
{
echo("BAD CHOICE !");
return false;
}
/ Fermeture de la connexion
mysql_close($db);


pouvez vous m'indiquer une piste ?
merci d'avance

BV
  Réponse avec citation
Vieux 23/07/2007, 09h21   #2
Emmanuel Petit
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

Il est préférable de créer un buffer de sortie pour utiliser la fonction
header. En effet, il ne faut pas que des données aient été déjà envoyés
au navigateur par le script.
pour ce faire, voici la méthode que j'utilise:
En toutdébut de votre page php utilisez la fonction suivante:

//début de session
ob_start();

dans votre script à la ligne précédent votre function header :
//rediriger
ob_end_clean();
>>> header("Location: test.php");


Enfin a la fin de votre script :

//vider le buffer
ob_end_flush();

Ca marche très bien dans tous mes scripts, mais si vous n'avez pas
compris, faites le moi savoir.
Bonne chance....
  Réponse avec citation
Vieux 23/07/2007, 09h36   #3
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

Le 22/07/2007 17:18, Ben74 a écrit :
>
> je débute en php et je dois, suite à un formulaire d'authentification,
> rediriger un visiteur vers une URL
> j'ai essayé avec header("location:....) et ça ne fonctionne pas


Ah, « ça ne fonctionne pas ». Mais parmi les zillions de façons
possibles de « ne pas fonctionner », quelle est la tienne ?

Par exemple :
1) Rien ne s'affiche.
2) Tu as un message d'erreur (lequel ?).
3) Les « é » sont transformés en « é ».
4) Ton écran explose.
5) Tes toasts sont trop grillés.
6) Le script tourne pendant une minute sans résultat.
7) Ta femme t'a quitté.
8) etc.

Vu que tu utilises la fonction header (avec comme paramètre un truc
interdit par la noreme HTTP, mais passons...), as-tu déjà lu la FAQ ?

http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12

> voici le code


Sans une description de la façon dont « ça ne fonctionne pas », c'est un
peu inutile.
  Réponse avec citation
Vieux 23/07/2007, 13h51   #4
Ben74
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

On 23 juil, 10:21, Emmanuel Petit <emmanuel.peti...@free.fr> wrote:
> Il est préférable de créer un buffer de sortie pour utiliser la fonction
> header. En effet, il ne faut pas que des données aient été déjà envoyés
> au navigateur par le script.
> pour ce faire, voici la méthode que j'utilise:
> En toutdébut de votre page php utilisez la fonction suivante:
>
> //début de session
> ob_start();
>
> dans votre script à la ligne précédent votre function header :
> //rediriger
> ob_end_clean();
>
> >>> header("Location: test.php");

>
> Enfin a la fin de votre script :
>
> //vider le buffer
> ob_end_flush();
>
> Ca marche très bien dans tous mes scripts, mais si vous n'avez pas
> compris, faites le moi savoir.
> Bonne chance....


je vais essayer ! même si j'avoue ne pas tout saisir, je vais
également aller regarder l'aide PHP pour en savoir plus
sur la notion de buffer
merci bq pour votre reponse, je vous tiens au courant pour vous dire
si cela fonctionne
  Réponse avec citation
Vieux 23/07/2007, 13h51   #5
Ben74
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

On 23 juil, 10:36, Olivier Miakinen <om+n...@miakinen.net> wrote:
> Le 22/07/2007 17:18, Ben74 a écrit :
>
>
>
> > je débute en php et je dois, suite à un formulaire d'authentification,
> > rediriger un visiteur vers une URL
> > j'ai essayé avec header("location:....) et ça ne fonctionne pas

>
> Ah, « ça ne fonctionne pas ». Mais parmi les zillions de façons
> possibles de « ne pas fonctionner », quelle est la tienne ?
>
> Par exemple :
> 1) Rien ne s'affiche.
> 2) Tu as un message d'erreur (lequel ?).
> 3) Les « é » sont transformés en « é ».
> 4) Ton écran explose.
> 5) Tes toasts sont trop grillés.
> 6) Le script tourne pendant une minute sans résultat.
> 7) Ta femme t'a quitté.
> 8) etc.
>
> Vu que tu utilises la fonction header (avec comme paramètre un truc
> interdit par la noreme HTTP, mais passons...), as-tu déjà lu la FAQ ?
>
> http://faqfclphp.free.fr/#rub2.11htt...ee.fr/#rub2.12
>
> > voici le code

>
> Sans une description de la façon dont « ça ne fonctionne pas », c'est un
> peu inutile.



Bonjour
j'aime le coté sarcastique du message....
quand je dis que ca ne fonctionne pas c'est que j'ai un écran vide
maintenant concernant l'interdiction et la norme, je débute, je sais
que j'ai encore
pleind e choses à lire et à découvrir, mais l'euphorie du débutant à
fait que je me suis
lancé sur des lignes de codes pour tester
désolé de ne pas respecter les cadres et les standards

BV
  Réponse avec citation
Vieux 23/07/2007, 16h17   #6
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

Le 23/07/2007 14:51, Ben74 a écrit :
>>
>> Ah, « ça ne fonctionne pas ». Mais parmi les zillions de façons
>> possibles de « ne pas fonctionner », quelle est la tienne ?

>
> j'aime le coté sarcastique du message....


;-)

> quand je dis que ca ne fonctionne pas c'est que j'ai un écran vide


C'est déjà une indication, et même plusieurs :
- tu n'as pas de message d'erreur ;
- et le navigateur n'affiche rien.

Mais même dans ce cas là tu devrais commencer par regarder le code HTML
généré (View/Page source) car il y a sûrement des choses à voir.

> maintenant concernant l'interdiction et la norme, je débute, je sais
> que j'ai encore
> pleind e choses à lire et à découvrir, mais l'euphorie du débutant à
> fait que je me suis
> lancé sur des lignes de codes pour tester
> désolé de ne pas respecter les cadres et les standards


En quelques mots, le header("Location: ...") ne devrais jamais servir à
rien d'autre qu'à rediriger d'un site vers un autres, et pas entre deux
pages du même site. D'ailleurs il devrait toujours y avoir une URL
absolue (du genre http://www.example.com/test.html) et jamais une URL
relative (telle que test.html).

Par ailleurs, merci de ne rien citer de plus que ce qui est utile quand
tu réponds à un message sur usenet. Quelques lignes de citations en
plus, et ton article aurait été refusé par la modération pour citation
excessive.

Cf. <http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/>.
  Réponse avec citation
Vieux 23/07/2007, 16h17   #7
Ben74
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

On 23 juil, 10:21, Emmanuel Petit <emmanuel.peti...@free.fr> wrote:
> Il est préférable de créer un buffer de sortie pour utiliser la fonction
> header. En effet, il ne faut pas que des données aient été déjà envoyés
> au navigateur par le script.
> pour ce faire, voici la méthode que j'utilise:
> En toutdébut de votre page php utilisez la fonction suivante:
>
> //début de session
> ob_start();
>
> dans votre script à la ligne précédent votre function header :
> //rediriger
> ob_end_clean();
>
> >>> header("Location: test.php");

>
> Enfin a la fin de votre script :
>
> //vider le buffer
> ob_end_flush();
>
> Ca marche très bien dans tous mes scripts, mais si vous n'avez pas
> compris, faites le moi savoir.
> Bonne chance....


J'ai essayé mais ca ne marche pas
toujours une page blanche
  Réponse avec citation
Vieux 23/07/2007, 19h09   #8
Bruno Desthuilliers
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: SOS debutant : bloque sur header location

Olivier Miakinen a écrit :
(snip)
> En quelques mots, le header("Location: ...") ne devrais jamais servir à
> rien d'autre qu'à rediriger d'un site vers un autres, et pas entre deux
> pages du même site.


Chapitre et verset, s'il te plait ?

Moi, ce que je vois dans la rcf, c'est:

14.30 Location

The Location response-header field is used to redirect the recipient
to a location other than the Request-URI for completion of the
request or identification of a new resource. For 201 (Created)
responses, the Location is that of the new resource which was created
by the request. For 3xx responses, the location SHOULD indicate the
server's preferred URI for automatic redirection to the resource. The
field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI

Qui ne dit en rien que l'URI doivent appartenir à un autre domaine - au
contraire, cf la partie sur le code 201, ainsi que cet autre extrait:

9.5 POST
(...)
If a resource has been created on the origin server, the response
SHOULD be 201 (Created) and contain an entity which describes the
status of the request and refers to the new resource, and a Location
header (see section 14.30).


qui pour ce que j'en comprend implique au contraire qu'il est non
seulement autorisé mais dans certaines circonstances *recommandé*
d'utiliser un header Location avec une URI pointant sur le même domaine.

nb : http://www.faqs.org/rfcs/rfc2616


>D'ailleurs il devrait toujours y avoir une URL
> absolue (du genre http://www.example.com/test.html) et jamais une URL
> relative (telle que test.html).


Là par contre on est d'accord. C'est d'ailleurs documenté dans la doc PHP.

http://fr.php.net/manual/en/function.header.php
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 20h19.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14930 seconds with 16 queries