IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Gestion des visiteurs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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".

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    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...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Outils de gestion des visiteurs en PDO
    Par Bovino dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 26/05/2013, 10h56
  2. Réponses: 1
    Dernier message: 04/02/2013, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo