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 :

script d'identification


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut script d'identification
    Bonjour, j'ai un problème de formulaire.


    J'ai 3 pages php :

    - identification.php ( une simple page d'identification qui récupère une donné dans la BDD via le login & mdp et la garde en mémoire via session )

    - donation2.php ( une simple page avec un script rentabiliweb, aucun problème sur cette page, si le script rentabiliweb est bon cette page redirige vers don.php )

    - don.php ( Ici si le code rentabiliweb est bon le script va incrémenter la valeur amount de +1 sur la valeur récupéré via la session ( login&mdp ) de identification.php, c'est à dire l'account_id correspond au login & mdp de identification.php va être selectionné et incrémenté de +1.


    Voilà le problème :

    Le script marche bien si la valeur gardé en mémoire ( ici : account_id ) existe déjà : il incrémente amount de +1
    MAIS
    si account_id n'existe pas dans la table donate il ne peut pas incrémenter amount de +1 , je lui demande donc avec une fonction if de créer la valeur account_id et de mettre 1 à amount. Cependant ça ne marche pas, voici les script :

    identification.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
     
    <?php
    session_start();
    $root = "localhost";
    $login="*****";
    $pass="*******";
    $db="*******";
     
    if(isset($_POST['login'])&&isset($_POST['password'])) 
    {
     
     
    	$mysql = mysql_connect( $root, $login, $pass ) or die( "Impossible de se connecter au serveur MySQL [1]" );
    	mysql_select_db( $db, $mysql) or die( "Impossible de se connecter au serveur MySQL [2]" );
     
     
     
     
    	$username = trim($_POST['login']);
    	$password = trim($_POST['password']);
    	$result = mysql_query("SELECT `account_id` FROM `login` WHERE userid = '$username' AND user_pass = '$password'", $mysql);
    	$account_id = mysql_fetch_assoc($result);
           $_SESSION['account_id'] = $account_id['account_id'];
     
    if(mysql_num_rows($result) > 0){
    	die("<meta http-equiv=\"refresh\" content=\"0; URL=index.php?lien=donation2.php\">" );
    			}
     
     
    		else{
        die("mauvais mot de passe ou login");
      }
    }
    ?>
    donation2.php : pas la peine c'est un script rentabiliweb

    don.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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <?php
    session_start();
     
    /** * Protection micropaiement Rentabiliweb */
     
     
    // id du document protégé
    $idprotect      = "******";
     
    // PHP5 avec register_long_arrays désactivé?
    if (!isset($HTTP_GET_VARS))
    {
        $HTTP_SESSION_VARS    = $_SESSION;
        $HTTP_SERVER_VARS     = $_SERVER;
        $HTTP_GET_VARS        = $_GET;
    }
     
    //construction de la requête
    if ($idprotect==$HTTP_GET_VARS[id])
    {
        $requete      = "http://secure.rentabiliweb.com/Micropaiement.php?act=ss&";
        $requete     .= $HTTP_SERVER_VARS['QUERY_STRING'];
        $requete     .= "&REMOTE_ADDR=".$HTTP_SERVER_VARS['REMOTE_ADDR'];
        $tabrep       = @file($requete);
    }
    else
    {
        unset($tabrep);
    }
     
     
    if($tabrep[0] == "OUI")
    {
        $HTTP_SESSION_VARS["RentaSess"]    = true;
        // Ici le code de votre page protégé
        // ou bien une requete dans votre base de données suivis d'une redirection
     
     
    $root = "localhost";
    $login="******";
    $pass="*******";
    $db="******";
     
    $mysql = mysql_connect( $root, $login, $pass ) or die( "Impossible de se connecter au serveur MySQL [1]" );
     
    mysql_select_db( $db, $mysql) or die( "Impossible de se connecter au serveur MySQL [2]" );
     
    if (!mysql_fetch_assoc(mysql_query("SELECT `account_id` FROM `donate` WHERE `account_id` = '{$account_id['account_id']}'")))
    {
        mysql_query("INSERT INTO `donate` VALUES('{$account_id['account_id']}','1','')");
     
    die("<meta http-equiv=\"refresh\" content=\"0; URL=merci.php\">" );
     
    }
    else
    {
     
    $query = ("UPDATE `donate` SET `amount` = `amount`+1  WHERE `account_id` = '".$_SESSION['account_id']."'");
     
     
    $result = mysql_query($query);
     
     
     
    die("<meta http-equiv=\"refresh\" content=\"0; URL=merci.php\">" );
     
    }
     
     
    session_destroy();
    }
     
    ?>

    Je pense que ça foire particulièrement ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!mysql_fetch_assoc(mysql_query("SELECT `account_id` FROM `donate` WHERE `account_id` = '{$account_id['account_id']}'")))
    {
        mysql_query("INSERT INTO `donate` VALUES('{$account_id['account_id']}','1','')");
     
    die("<meta http-equiv=\"refresh\" content=\"0; URL=merci.php\">" );

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Par défaut
    dans ton 2eme script, elle viens d'où cette valeur ?:

    $account['account_id']

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Citation Envoyé par maximenet Voir le message
    dans ton 2eme script, elle viens d'où cette valeur ?:

    $account['account_id']
    C'est account_id, désolé j'ai effacé sans faire exprès en arrangeant le script dans la code box. Mais c'est bien account_id et pas account

  4. #4
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    est-ce que tu pourrais ajouter php derrière <? dans le dernier code de ton premier message? ce serait plus clair stp! merci.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Voilà désolé.

    La balise avait du mal avec le gras

  6. #6
    Membre éclairé Avatar de schwarzy2
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 464
    Par défaut
    que te donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $res=mysql_query("SELECT `account_id` FROM `donate` WHERE `account_id` = '{$account_id['account_id']}'");
    $i=mysql_result($res,0,'account_id');
    echo $i;
    ?

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query("SELECT `account_id` FROM `login` WHERE userid = '$username' AND user_pass = '$password'", $mysql);
    Attention aux failles de sécurité (injections SQL)

    http://julien-pauli.developpez.com/t...-web-securite/

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Citation Envoyé par schwarzy2 Voir le message
    que te donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $res=mysql_query("SELECT `account_id` FROM `donate` WHERE `account_id` = '{$account_id['account_id']}'");
    $i=mysql_result($res,0,'account_id');
    echo $i;
    ?

    Ca m'affiche "0"

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Je crois avoir réglé le problème avec :

    don.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
     
    $mysql = mysql_connect( $root, $login, $pass ) or die( "Impossible de se connecter au serveur MySQL [1]" );
     
    mysql_select_db( $db, $mysql) or die( "Impossible de se connecter au serveur MySQL [2]" );
     
     
    if (!mysql_fetch_assoc(mysql_query("SELECT `account_id` FROM `donate` WHERE `account_id` = '".$_SESSION['account_id']."'")))
    {
        mysql_query("INSERT INTO `donate` VALUES('".$_SESSION['account_id']."','1','')");
     
    die("<meta http-equiv=\"refresh\" content=\"0; URL=merci.php\">" );
    }
    else
    {
     
     
    $query = ("UPDATE `donate` SET `amount` = `amount`+1  WHERE `account_id` = '".$_SESSION['account_id']."'");
     
     
    $result = mysql_query($query);
     
     
     
    die("<meta http-equiv=\"refresh\" content=\"0; URL=merci.php\">" );
     
    }
    Pour les injections SQL je vais essayer de me documenter plus là dessus merci pour la remarque

  10. #10
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par harima Voir le message
    Pour les injections SQL je vais essayer de me documenter plus là dessus merci pour la remarque
    • En fait, pour contrer l'attaque, selon moi, il vaut mieux 2 requêtes : Déjà une pour vérifier si le pseudo existe et dans ce cas, une seconde pour comparer le mot de passe.

    • Sinon, une autre solution consiste tout simplement à filtrer la saisie de l'utilisateur de façon à ce qu'il ne puisse pas intégrer des caractères spéciaux dans sa saisie - Utiliser des fonctions comme mysql_real_escape() ou htmlentities() devrait suffir...

    [EDIT] J'en profite aussi :
    • Attention, dans ton code ci-dessus, les 2 conditions finissent avec un die() si bien que le code qui suivra ne sera jamais exécuté... Ainsi, il se peut que ton session_destroy() ne soit jamais exécuté, non ?

    • Et finalement, puisque ce sont les 2 mêmes redirections, autant n'en mettre qu'une seule, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(condition){
    ...
    }else{
    ...
    }
    die('...');
    Qu'en penses-tu ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/09/2011, 02h43
  2. [MySQL] Script d'identification
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 17/10/2008, 23h43
  3. Cherche script pour d'identification
    Par bisro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/07/2007, 23h47
  4. [MySQL] Recherche script d'identification
    Par zoom61 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 15h52
  5. Simuler une identification via un script
    Par Comawhite dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2006, 14h26

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