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

Langage PHP Discussion :

[PHP-JS] Redirection en fonction du résultat d'identification


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut [PHP-JS] Redirection en fonction du résultat d'identification
    salut,
    j'ai le même problème je veux rediriger l'utilisateur vers la page index-intervenant dans le cas ou l'authentification est valide, sinon il revient a la page index-app après une alerte que les champs saisis sont invalides.
    voici mon code :
    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
     
    <?php
     
    if ((isset($_POST['login'])&& !empty($_POST['login']))&& (isset($_POST['mot_de_passe'])&& !empty($_POST['mot_de_passe'])))
    {
    include ("connexion.php");
    $login=$_POST['login'];
    $passwd=$_POST['mot_de_passe'];
     
     
    echo $sql = "SELECT count(*) FROM intervenant WHERE pseudo_inter='$login' and mdp_inter='$passwd' ";
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($req);
     
     
     
    	if ($data[0] == 1) 
           {// Ici la page de redirection si l'autentification est réussie
     
    		header('Location: index-intervenant.php'); 
    		exit();
           } 
     
     
    	  else if ($data[0] == 0) 
    	  {// Ici le message d'alerte si l'autentification n'est pas réussie
    	   print"<script>alert('Login ou password invalide.');</script>"; 
     
     
    	  }
     
     
          } 
      mysql_free_result($req);
      mysql_close();
     
     
    ?>
    j'ai essayé avec la fonction header comme vous le voyez ca m'affiche ceci:
    OBJET NON TROUVE !
    L'URL requise n'a pu etre trouvée sur ce serveur. La référence sur la page citée semble être erronée ou perimée. Nous vous prions d'informer l'auteur de cette page de cette erreur.
    Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
    Error 404
    localhost
    03/03/10 00:26:23
    Apache/2.2.11 (Win32) PHP/5.2.8

    merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    bon j'ai refait un codage rapide pour la forme
    j'ai pas vérifié s'il manque des ;
    en plus je code plus comme cela mais faut bien commencer
    petite chose aussi toujours faire des tests sur les variables ca évite les petites surprises.
    normalement on crypte les mots de passe (cf md5 + salt doit y avoir un truc dans la faq)

    pour finir un test suffit pas faut au moins faire des sessions
    encore une chose attention au injection sql il ne faut pas faire le test vrai ou faux via sql, y en a d'autre mais celle là, mieux vaut l'éviter
    sinon un login comme suis retourne vrai "admin' OR 1=1;" (ou un truc du genre)

    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
    <?php
    // test si on a bien les valeurs du formulaire
    if (!isset($_POST['login']) || !isset($_POST['mot_de_passe']){
     
        // ici on est dans le cas ou y a pas eu d'envois de formulaire
        header("HTTP/1.0 404 Not Found");
        exit;
    } else {
        // variable de validation
        $valid = false;
        if(!empty($_POST['login']) && !empty($_POST['mot_de_passe'])){
            include_once("connexion.php");
            $login=$_POST['login'];
            $passwd=$_POST['mot_de_passe'];
     
            // on recherche les données correspondant au login
            // pas faire une requete sur le login+pass
            // c'est une ouverture à l'injection sql
     
            // j'utilise cette ecriture sql car quand on rajoute
            // des jointures c'est plus propre et on recode pas tout
            $sql  = "SELECT intervenant.*";
            $sql .=" FROM intervenant";
            $sql .=" WHERE intervenant.`pseudo_inter`='".$login."'";
            $sql .=" LIMIT 1;";
     
            // retourne l'erreur que en mode test
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            // on récupère les data
            if($data = mysql_fetch_array($req)){
                // petite verif que c'est pas vide
                if(!empty($data)){
                    $mdp_inter = $data['mdp_inter'];
                    if($mdp_inter == $passwd){
                        $valid = true;
                    }
                }
            }
            mysql_free_result($req);
            mysql_close();         
        }
     
        // on redirige si valid = true
        if($valid == true){
            header('Location: index-intervenant.php'); 
            exit();
        } else {
            // Ici le message d'alerte si l'autentification n'est pas réussie
            print"<script>alert('Login ou password invalide.');</script>";
        }
    }
    edit: on ne met plus ?> à la fin des fichiers php depuis la 5.x (je sais plus quel version), ca évite les erreurs de fin de script très difficile à trouver

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 54
    Par défaut
    Tes conditions autorisations entre membres Admin,etc...
    Sont dans 2 tables ou 1 ????

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    à Helfima: j'ai essayé ton code cela m'affiche la même erreur dans le cas ou je met un mdp et login correcte dans le cas contraire le message d'alerte fonctionne !!

    Mortillus: j'ai une seule table intervenant la diffèrence entre eux se situe au niveau de la qualification, que mon encadreur m'a dit de faire deux tests le premier pour s'authentifier déjà si c'est bien un intervenant et le deuxième selon la qualification je le dirige vers sa page !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Merci Helfima c'est bon ca marche.
    stp ca sert a quoi cette ligne
    $sql = "SELECT intervenant.*";
    $sql .=" FROM intervenant";
    $sql .=" WHERE intervenant.`pseudo_inter`='".$login."'";
    $sql .=" LIMIT 1;"; ??

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    Citation Envoyé par nouha88 Voir le message
    Merci Helfima c'est bon ca marche.
    stp ca sert a quoi cette ligne
    $sql = "SELECT intervenant.*";
    $sql .=" FROM intervenant";
    $sql .=" WHERE intervenant.`pseudo_inter`='".$login."'";
    $sql .=" LIMIT 1;"; ??
    c'est pour garantir l'unicité des fois que par magie il y aurait 2 pseudos identiques

    LIMIT nb retourne nb lignes donc si nb=1 tu en aura qu'une

Discussions similaires

  1. Redirection en fonction d'une URL en PHP
    Par odoobe dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2009, 07h21
  2. Réponses: 5
    Dernier message: 12/02/2006, 22h00
  3. Redirection en fonction d'un formulaire
    Par kmayoyota dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/03/2005, 11h14
  4. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22
  5. Redirection en fonction d'un critere Access
    Par alfigor dans le forum ASP
    Réponses: 4
    Dernier message: 23/04/2004, 09h34

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