Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 16h43   #1
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 43
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 43
Points : 27
Points : 27
Par défaut Gestion des visiteurs

Je rame comme un galérien toujours sur le même problème : identifier un visiteur enregistré dans une table MySQL et l'orienter vers une page A ou le dérouter vers une page B si son code d'accès n'est pas reconnu.

La structure formulaire-traitement est des plus classiques : un login et un mot de passe dans un formulaire en HTML appelant un script tri.php dont le code se resume à une seule ligne :

Code :
1
2
3
<?php
  header('Location: http://www.monsite.fr/bienvenu.html');
?>
J'obtiens le bien connu "header already sent". A plus de 63 ans, j'entre dans la catégorie de ceux qui devraient se mettre à la belote ; soit, mais j'aimerais régler ce problème une fois pour toutes. Entre nous, le seul qui m'ait posé un véritable problème en PHP !

Je suppose que le header déjà envoyé au navigateur est celui du formulaire, car j'ai enregistré mon code tri.php à l'aide du bloc-notes de Windows XP pour éviter les caractères indésirables comme un simple espace).

Question : comment faut-il faire ? Un exemple ultra-simple sera très apprécié.

Merci d'avance et n'hésitez pas à me parler comme à un très grand débutant.
Dormeur74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h59   #2
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Dans ton tri.php, appel la requête vérifiant si le duo identifiant et mot de passe existe dans la base de donnée, puis :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
ob_start(); 
if(count($ta_requete) == 1)
{
   //attribution de la session
   session_start();
   header('Location: index.php');
}
else
{
   session_destroy();
   header('location: connexion.php');
}
ob_end_flush();
la bufferisation de sortie te permet de placer tes header n'importe ou (il me semble) dans ton code.

Je te conseille si ce n'est pas le cas d'afficher les extensions de fichiers connus (poste de travail->outils->options des dossiers->affichage->masquer les extensions de fichier dont le type est connus (a décocher)) car le bloc-note de base enregistre en .txt donc si ça se trouve ton fichier se nomme "tri.php.txt".
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 17h06   #3
Membre expérimenté
 
Inscription : mai 2006
Messages : 501
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2006
Messages : 501
Points : 576
Points : 576
Bonjour,
Citation:
Envoyé par Dormeur74 Voir le message
J'obtiens le bien connu "header already sent".
A partir du moment où ce message est envoyé, alors il y a forcément au moins un caractère qui a été écrit avant ton header('Location [...]'). Cela peut-être un espace un saut de ligne... Ou un echo qui traîne quelque part...
Fabllot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/02/2011, 06h43   #4
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 43
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 43
Points : 27
Points : 27
Les jours se suivent et ne se ressemblent pas du tout. Ce matin, tout est rentré dans l'ordre. J'avais essayé la bufferisation avec ob_start, ob_end_flush et ob_get_contents() entre les deux, mais ça n'avait rien donné. En fait, je devais avoir un die() qui devait traîner dans mon code.
En tout cas, merci à tous les deux.
Dormeur74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h51.


 
 
 
 
Partenaires

Hébergement Web