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 :

[SQL] Modification du "header" lors d'authentification sql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut [SQL] Modification du "header" lors d'authentification sql
    Bonjour, je suis en train de réaliser un site dans lequel j'ai mis une page d'authentification de l'utilisateur par une base de donnée sql. Cependant quand je teste pour voir si ça marche, j'ai le message suivant qui se charge :

    Notice: Undefined variable: identifiant in d:\en cours\html2007\version1\zone_membre\login.php3 on line 14

    Warning: Cannot modify header information - headers already sent by (output started at d:\en cours\html2007\version1\zone_membre\login.php3:14) in d:\en cours\html2007\version1\zone_membre\login.php3 on line 20
    Je travaille en local mais j'ai bien crée ma base avec EasyPhp. Sur un autre site que j'ai crée, j'ai le même code d'authentification et ça marche nickel. Est-ce que ce message est dû au fait que je travaille en local et qu'il ne peut pas réactualiser l'identifiant ainsi ? Merci d'avance.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Peut etre qu'avec un petit bout de code ça aiderais un peu la recherche......Histoire de pas deviner des trucs faux
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bonjour,

    Tu as une erreur de varaible identifiant. Rien à voir avec le header.
    Cependant, cette erreur provoque un affichage à l'écran, donc les en-têtes html ont déjà été envoyés.
    Tu ne peux ainsi plus les envoyer en ligne 20 de ton script.

    Peut-être devrais-tu gérer les headers avant même de travailler sur tes variables.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut voici le fichier qui gère les identifiants
    En fait je modifie l'identifiant d'origine pour que la connexion se fache sur un identifiant aléatoire mis à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?
    require("conf.php3");
     
    /*-----------------------------------------------------------------*/
    /*	PROGRAMME PRINCIPAL			*/
    /*-----------------------------------------------------------------*/
     
    // CONNEXION A LA BASE DE DONNEE
    $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
     
    // ON SELECTIONNE L'ENREGISTREMENT CONTENANT 
    // LE LOGIN SAISIS A LA PAGE LOGIN.HTM
    $requete=mysql_db_query($sql_bdd,"select nom,passe,lien from ret where nom=\"$identifiant\"",$db_link) or die(mysql_error());
     
    // SI AUCUN ENREGISTREMENT NE CORRESPOND
    if(mysql_num_rows($requete)==0)
    	{
    	// REDIRECTION VERS LA PAGE ERREUR
    	header("Location:$url_erreur");exit;
    	}
     
    // SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
    else
    	$destination=mysql_result($requete,$i,"lien");
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 
    	$requete=mysql_db_query($sql_bdd,"update ret set id=\"$id\" where nom=\"$identifiant\"",$db_link) or die(mysql_error());
     
    	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    	header("Location:$destination?id=$id");
    	}	
     
    // DECONNEXION MYSQL
    mysql_close($db_link);
    ?>

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    C'est pas un peu abuser des redirections ?
    Il est vrai que cela dépend des goûts et des couleurs.
    Personnellement, à la place de redirections, j'aurais tout simplement fait des require_once pour insérer le bon code.

    --- edit ---
    Et surtout déplacer la gestion de bdd dans un fichier à part, du genre "include/bdd.php" pour ne pas surcharger

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Le problème c'est que je débute pas mal dans ce domaine de redirection par base de donnée donc je me base sur des exemples que je trouve sur le net, et de ceux que j'ai testé c'est le seul que j'ai réussi à utiliser, et surtout comprendre ... un peu. Alors c'est pour ça que je m'en sors pas trop. Quant à la bd normalement elle est gérée directement chez le FAI, sur phpMyAdmin ...

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bon alors, dans l'ordre, il faut d'abord que tu résolves ton problème d'identifiant.
    C'est vrai qu'il n'est pas alimenté, ni même défini avant la création de la requête.

    D'où boum !

  8. #8
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Quelquechose dans ce genre (je n'ai pas les moyens de tester au taff)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?
    require("conf.php3");
     
    /*-----------------------------------------------------------------*/
    /*	PROGRAMME PRINCIPAL			*/
    /*-----------------------------------------------------------------*/
     
    // CONNEXION A LA BASE DE DONNEE
    $db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
    if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
     
    // ON SELECTIONNE L'ENREGISTREMENT CONTENANT 
    // LE LOGIN SAISIS A LA PAGE LOGIN.HTM
    $identifiant = $_POST['identifiant'];
    if ($identifiant) $requete=mysql_db_query($sql_bdd,"select nom,passe,lien from ret where nom=\"$identifiant\"",$db_link) or die(mysql_error());
     
    // SI AUCUN ENREGISTREMENT NE CORRESPOND
    if(!$identifiant OR mysql_num_rows($requete)==0)
    	{
    	// REDIRECTION VERS LA PAGE ERREUR
    	header("Location:$url_erreur");exit;
    	}
     
    // SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
    else
    	$destination=mysql_result($requete,$i,"lien");
    	{
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 20;
    	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand(time());
    	for ($i=0;$i<$taille;$i++)
    		{
    		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
    		}
     
    	// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 
    	$requete=mysql_db_query($sql_bdd,"update ret set id=\"$id\" where nom=\"$identifiant\"",$db_link) or die(mysql_error());
     
    	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    	header("Location:$destination?id=$id");
    	}	
     
    // DECONNEXION MYSQL
    mysql_close($db_link);
    ?>

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    alors je viens de tester et ça ne marche pas non plus, ça me mets le meme message d'erreur + une ligne d'erreur par rapport à celle que je viens de rajouter !

Discussions similaires

  1. [Toutes versions] Requête SQL avec Simples et Doubles Quotes
    Par Roums dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/03/2010, 10h00

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