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 :

Problème sur un Login


Sujet :

PHP & Base de données

  1. #1
    Membre émérite Avatar de FraK
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 828
    Par défaut Problème sur un Login
    Salut tout le monde, je d'implémenter un script d'authentification dans mes pages afin de rediriger l'utilisateur vers une session protégée.
    Un login et MDP unique pour tous les utilisateurs ayant le droits d'accès.

    REQUETE CREATION DE LA TABLE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE phplogin (
      CodeTemporaire varchar(50) default NULL,
      Date timestamp(14) NOT NULL,
      Pseudo varchar(20) NOT NULL default '',
      Passe varchar(20) NOT NULL default '',
      PRIMARY KEY  (Pseudo)
    ) TYPE=MyISAM;
    FORM : (le code n'est pas entier ici, pas la pein, et de toute façon le problème ne vient pas de là)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action="login.php">
    <input type="text" name="pseudo_membre">
    <input type="password" name="passe_membre">
    <input type="image" src="images/login_11.gif">
    </form>
    LOGIN.PHP :
    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
    47
    48
    <?php
    include('fonctions.php');
    include('variables.php');
     
    // CONNEXION A LA BASE DE DONNEE
    connexion();
    no_cache();
     
    if(intval($login)==1 && isset($id))
    	{
    	$requete=requete("UPDATE "._TABLE_." set CodeTemporaire='', Date=NOW()-10000 where CodeTemporaire='".$id."'");
    	header("Location: ".$pagelogin);
    	}
    else
    	{
    	// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
    	// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
    	$requete=requete("select Pseudo from "._TABLE_." where Pseudo='".$pseudo_membre."' and Passe='".$passe_membre."'");
     
    	// SI AUCUN ENREGISTREMENT NE CORRESPOND
    	if(mysql_num_rows($requete)==0)
    		{
    		// REDIRECTION VERS LA PAGE ERREUR
    		header("Location: ".$pagelogin);
    		}
    	// SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
    	else
    		{
    		// CREATION D'UN IDENTIFIANT ALEATOIRE
    		$taille = 50;
    		$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=requete("UPDATE "._TABLE_." set CodeTemporaire='".$id."', Date=NOW()+".$validitesession." where Pseudo='".$pseudo_membre."' and Passe='".$passe_membre."'");
     
    		// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    		header("Location:".$pagelogged."?id=".$id);
    		}	
     
    	// DECONNEXION MYSQL
    	deconnexion();
    	}
    ?>

    FONCTIONS.PHP :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
     
    /*-
    AFFICHAGE DES ERREURS DE CONNEXION
    */
     
    function erreur( $message )
     {
     echo $message ;
     exit ;
     }
     
     
    /*
    CONNEXION A LA BASE DE DONNEES
    */
     
    function connexion()
    {
      // connexion au serveur de données
      @mysql_connect( _HOST_ , _USER_ , _PWD_ ) or erreur( 'Connexion au serveur de données impossible' ) ;
     
      // sélection de la base de données
      @mysql_select_db( _DB_ ) or erreur( 'Sélection de la base de donnée impossible' ) ;
    }
     
     
    /*
    DECONNEXION A LA BASE DE DONNEES
    */
     
    function deconnexion()
    {
     @mysql_close();
    }
     
     
    /*
    EXECUTION D'UNE REQUETE
    */
     
     function requete( $requete )
     {
     if($resultat = mysql_query( $requete )) return $resultat ;
     erreur( "Erreur dans la requête : $requete<br>" . mysql_error() ) ;
     }
     
     
    /*
    FONCTION DE DESACTIVATION DU CACHE DU NAVIGATEUR
    */
     
    function no_cache() {
      header("Pragma: no-cache");
      header("Cache-Control: no-cache");
    }
     
    ?>

    VARIABLES.PHP
    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
    <?php
     
    /*
    CONNEXION A LA BASE DE DONNEE
    */
     
    define("_HOST_", "***");
    define("_USER_", "***");
    define("_PWD_", "***");
    define ("_DB_", "***"); 
    define ("_TABLE_", "phplogin"); // nom de la table utilisée
     
     
    /*
    VARIABLES
    */
    $validitesession = 3600; // durée de validité de la session
    $pagelogin = 'login.html'; // page de login et de sortie
    $pagelogged = 'redir.php'; // page suivant la connexion
    ?>
    SECU.PHP :
    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
    <?php
    include('fonctions.php');
    include('variables.php');
    no_cache();
     
    // CONNEXION MYSQL
    connexion();
     
    // SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
    $requete=requete("select * from "._TABLE_." where CodeTemporaire='".$id."' and Date>NOW()");
     
    // SI L'ID N'EXISTE PAS
    if(mysql_num_rows($requete)==0)
    	{
    	// REDIRECTION PAGE ERREUR
    	requete("UPDATE "._TABLE_." set CodeTemporaire=NULL, Date=NOW()-10000");
    	header("Location:".$pagelogin);
    	exit;
    	}
     
    // LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
    $pseudo=mysql_result($requete,0,"Pseudo");
     
     
    // DECONNEXION MYSQL	
    deconnexion();
    ?>

    REDIR.PHP :
    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
    <?php
    include('secu.php');
    ?>
     
    <html>
    <head>
    <title> ****** </title>
    </head>
     
    <body bgcolor="#FFFFFF">
     
    <?php
    echo "Pseudo : ".$pseudo;
    echo "<br>Id de session : ".$id;
    echo "<br>Exemple de lien : &lt;a href=\"page.php?id=".$id."\"&gt;lien&lt;/a&gt;";
    echo "<br>Déconnexion : <a href=\"login.php?login=1&id=".$id."\">Partir d'ici</a>";
     
    ?>
     
    </body>
    </html>
    Voila pour les pages concernées ...

    Mon problème est le suivant : lorsque je saisis le pseudo et mdp unique sur la page login.html, apres validation, je retourne sur la même page (voir fichier "variables") comme si il ne prenait pas en compte le login et mdp comme étant valides ... alors que normalement il devrait m'envoyer sur la page "redir.php" au lieu de "login.html"

    Si une âme généreuse voit ou est le problème, je lui en serais très reconnaissant ...

    Merci d'avance à ceux qui suivront et posteront dans ce topic.
    Infographiste / Webdesigner / Intégrateur (un peu Développeur aussi si on peut dire ;p)
    On me trouve souvent dans la partie Hardware, Systèmes et Logiciels ou encore Webmasters - Développement Web et surtout dans le forum Wordpress.
    »» Mon Blog Musical (drumnbass)

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete=requete("select Pseudo from "._TABLE_." where Pseudo='".$_POST['pseudo_membre']."' and Passe='".$_POST['passe_membre' ]."'");

  3. #3
    Membre émérite Avatar de FraK
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 828
    Par défaut
    Merci de ta réponse, mais même problème qui persiste, aucun changement ...
    Infographiste / Webdesigner / Intégrateur (un peu Développeur aussi si on peut dire ;p)
    On me trouve souvent dans la partie Hardware, Systèmes et Logiciels ou encore Webmasters - Développement Web et surtout dans le forum Wordpress.
    »» Mon Blog Musical (drumnbass)

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    et en remplaçant les single-quote par des double-quote

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pagelogin = 'login.html'; // page de login et de sortie
    $pagelogged = 'redir.php'; // page suivant la connexion
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pagelogin = "login.html"; // page de login et de sortie
    $pagelogged = "redir.php"; // page suivant la connexion

  5. #5
    Membre émérite Avatar de FraK
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 828
    Par défaut
    Toujours pareil :'(
    Infographiste / Webdesigner / Intégrateur (un peu Développeur aussi si on peut dire ;p)
    On me trouve souvent dans la partie Hardware, Systèmes et Logiciels ou encore Webmasters - Développement Web et surtout dans le forum Wordpress.
    »» Mon Blog Musical (drumnbass)

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    où sont initialisé les variables suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(intval($login)==1 && isset($id))

  7. #7
    Membre émérite Avatar de FraK
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 828
    Par défaut
    Effectivement elle n'aparaissent nul part en déclaration ... juste ici ...
    Une idée de comment je pourrais y remédier ?
    (débutant en php)
    Infographiste / Webdesigner / Intégrateur (un peu Développeur aussi si on peut dire ;p)
    On me trouve souvent dans la partie Hardware, Systèmes et Logiciels ou encore Webmasters - Développement Web et surtout dans le forum Wordpress.
    »» Mon Blog Musical (drumnbass)

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je ne sais pas d'où viens ton script, mais il me semble utiliser de veilles conventions.

    a vue de nez je dirais de faire ceci, sans garantie

    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
     
    <?php
     
    // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
    // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
    $requete="select Pseudo from "._TABLE_." where Pseudo='".$_POST['pseudo_membre']."' and Passe='".$_POST['passe_membre']."'";
     
    // SI AUCUN ENREGISTREMENT NE CORRESPOND
    if(mysql_num_rows($requete)==0)
    {
    	// DECONNEXION MYSQL
    	deconnexion();
    	// REDIRECTION VERS LA PAGE ERREUR
    	header("Location: ".$pagelogin);
    }
    // SI LE LOGIN ET MOT DE PASSE SONT EXACTES
    else
    {
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 50;
    	$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="UPDATE "._TABLE_." set CodeTemporaire='".$id."', Date=NOW()+".$validitesession." where Pseudo='".$_POST['pseudo_membre']."' and Passe='".$_POST['passe_membre']."'";
     
    	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    	// DECONNEXION MYSQL
    	deconnexion();
    	header("Location:".$pagelogged."?id=".$id);
    }
     
     
     
    ?>

  9. #9
    Membre émérite Avatar de FraK
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 828
    Par défaut
    il a été fait sous php 3 il me semble ...
    je vais tester ton code voir ce que ca donne, merci

    Apres test, toujours le même problème ...

    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
    <?php
    include('fonctions.php');
    include('variables.php');
     
     
    // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
    // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
    $requete="select Pseudo from "._TABLE_." where Pseudo='".$_POST['pseudo_membre']."' and Passe='".$_POST['passe_membre']."'";
     
    // SI AUCUN ENREGISTREMENT NE CORRESPOND
    if(mysql_num_rows($requete)==0)
    {
    	// DECONNEXION MYSQL
    	deconnexion();
    	// REDIRECTION VERS LA PAGE ERREUR
    	header("Location: ".$pagelogin);
    }
    // SI LE LOGIN ET MOT DE PASSE SONT EXACTES
    else
    {
    	// CREATION D'UN IDENTIFIANT ALEATOIRE
    	$taille = 50;
    	$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="UPDATE "._TABLE_." set CodeTemporaire='".$id."', Date=NOW()+".$validitesession." where Pseudo='".$_POST['pseudo_membre']."' and Passe='".$_POST['passe_membre']."'";
     
    	// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
    	// DECONNEXION MYSQL
    	deconnexion();
    	header("Location:".$pagelogged."?id=".$id);
    }
     
     
     
    ?>
    Sinon y a t il quelque part un script simple de login dans le meme style que lui ? (pas de zone d'admin, pas d'inscriptions, pas de modérations, etc ...)

    J'avais utilisé un autre code ce matin, mais IIS me bloquait une instance, don't know why :'(
    Infographiste / Webdesigner / Intégrateur (un peu Développeur aussi si on peut dire ;p)
    On me trouve souvent dans la partie Hardware, Systèmes et Logiciels ou encore Webmasters - Développement Web et surtout dans le forum Wordpress.
    »» Mon Blog Musical (drumnbass)

Discussions similaires

  1. Problème sur la page login
    Par ivoratparis dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 07/07/2014, 07h20
  2. [MySQL] Problème sur des comptes (login/mdp)
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/03/2006, 15h41
  3. [WebForms][2.0] Control login, problème sur site publié
    Par seb.49 dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 14/02/2006, 16h13
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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