nabab a écrit 3 commentaires

  • [^] # Re: Inscription, vérifs, et préférences (à suivre)

    Posté par  . En réponse au message Développement site web. Évalué à 0.

    Quel est le problème de coller du code dans les forums ???

    Pour la vérif email, même si c'est plus classique, je ne crois pas que la méthode utilisant les expressions régulières apporte quoi que ce soit de plus ici.

    Tu aurais raison pour les enregistrements MX, si comme dans ce cas, le mot de passe généré n'était envoyé sur l'email en question : c'est tout aussi efficace pour vérifier que l'adresse existe ET qu'elle appartient bien à l'utilisateur.

    Pour le trou de sécurité, je crois que tu as raison dans l'absolu, mais avec les magic_quote_gpc à On dans le php.ini, cela ne résoud-il pas le problème ?
  • [^] # Re: La table members (à suivre)

    Posté par  . En réponse au message Développement site web. Évalué à 0.

    CREATE TABLE `members` (
    `id` mediumint(6) NOT NULL auto_increment,
    `login` varchar(35) NOT NULL default '',
    `prenom` varchar(35) NOT NULL default '',
    `nom` varchar(100) NOT NULL default '',
    `email` varchar(100) NOT NULL default '',
    `pass` varchar(50) NOT NULL default '',
    `cree_le` datetime NOT NULL default '0000-00-00 00:00:00',
    `dernier_acces` datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`id`)
    UNIQUE KEY `login` (`login`)
    UNIQUE KEY `email` (`email`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Je fais mes tables en UTF-8, mais ça implique de protéger tes caractères : tu peux préférer changer par latin1
  • # Inscription, vérifs, et préférences (à suivre)

    Posté par  . En réponse au message Développement site web. Évalué à 0.

    <?php
    //inscription.php
    //Les vérifs, puis l'inscription si tout est ok :

    // Deux fonctions qui portent bien leur nom

    function genere_password ($int_max=8, $int_min=6)
    {
    mt_srand();
    if ($int_min != 0) { $longueur = mt_rand($int_max, $int_min); }
    else { $longueur = $int_max; }
    $mdp = '';
    for($i=0; $i<$longueur; $i++)
    {
    $quoi= mt_rand(1,3);
    switch($quoi)
    {
    case 1: $mdp .= mt_rand(0,9); break;
    case 2: $mdp .= chr(mt_rand(65,90)); break;
    case 3: $mdp .= chr(mt_rand(97,122)); break;
    }
    }
    return $mdp;
    }

    function checkEmail($email)
    {
    if ( strrpos($email,'.') > strrpos($email,'@')+2 && strrpos($email,'@') > 1 && strlen($email) > strrpos($email,'.')+2 )
    { return true; }
    else { return false; }
    }

    // Vérification des infos envoyées

    if ( checkEmail($_POST[email]) == true )
    {
    $sql0 = "SELECT login FROM membres WHERE login='$_POST[login]'";
    $req0 = mysql_query($sql0) or die('Erreur avec la base !'.mysql_error());
    if ( @mysql_num_rows > 0 )
    { echo "Ce login est déjà pris !"; }
    else
    {
    $pass = genere_password();
    $sql = "INSERT INTO membres (email,login,pass) VALUES ('$_POST[email]','$_POST[login]','".md5($pass)."',0)";
    $req = mysql_query($sql) or die('Erreur avec la base !'.mysql_error());
    mail($_POST[email],"Inscription au tennis","Votre mot de passe : $pass \n\nCordialement \n\nToute l'équipe","From:ton_adresse@email.com");
    }
    }
    else
    { echo "E-mail non valide !"; }

    //Le formulaire :

    echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">
    Votre adresse e-mail : <input name=\"email\" type=\"text\" size=\"15\" maxlength=\"50\" value=\"$_POST[email]\">
    Choisir un login : <input name=\"login\" type=\"text\" size=\"15\" maxlength=\"25\" value=\"$_POST[login]\">
    <input type=\"submit\" value=\"OK\" />
    \n";


    //Login.php
    //Se logger, et créer une session utilisateur (N'oublie pas de commencer toutes tes pages par session_start();)

    session_start();
    if ( $_POST[login] == '' )
    {
    header("location: index.html?erreur=log");
    }
    else
    {
    include "ink/conn.php";
    $sql = "SELECT * FROM members WHERE login = '$_POST[login]' LIMIT 1";
    $req = mysql_query($sql);
    $data = mysql_fetch_array($req);
    if ( md5($_POST[pass]) == $data[pass] )
    {
    $_SESSION[member] = $data;
    $sql2 = "UPDATE members SET dernier_acces = NOW() WHERE id = '".$_SESSION[member][id]."'";
    $req2 = mysql_query($sql2);
    header("location: index.php");
    }
    else
    {
    echo "Mauvais login/mot de passe";
    }
    }

    echo "<form action=\"$_SERVER[PHP_SELF]\" method=\"post\">
    Votre login : <input name=\"login\" type=\"text\" size=\"15\" maxlength=\"25\" value=\"$_POST[login]\">
    Votre mot de passe : <input name=\"pass\" type=\"password\" size=\"15\" maxlength=\"15\" value=\"$_POST[pass]\">
    <input type=\"submit\" value=\"OK\" />
    \n";

    //preferences.php
    //Changer son mail, son mot de passe (pas son login -> N'oublie pas de mettre une clef unique dans ta table MySQL)

    $sql_verif = "SELECT * FROM members WHERE login='".$_SESSION[member][login]."'";
    $req_verif = mysql_query($sql_verif);
    $data_verif = mysql_fetch_array($req_verif);
    if ( md5($_POST[pass_old]) == $data_verif[pass] && $_POST[pass1] == $_POST[pass2] && checkEmail($_POST[email) == true )
    {
    $sql_mod = "UPDATE members SET pass='".md5($_POST[pass1])."',modifie_le=NOW() WHERE id='".$_SESSION[member][id]."'";
    $req_mod = mysql_query($sql_mod);
    $_SESSION[member][email] = $_POST[email]);
    $_SESSION[member][pass] = md5($_POST[pass1]);
    // Ici, tu aurais pu rajouter une vérification d'email, mais là j'ai la flemme...;)
    }

    echo "<form action=\"$_SERVER['PHP_SELF']\" method=\"post\">
    Votre adresse e-mail : <input name=\"email\" type=\"text\" size=\"15\" maxlength=\"50\" value=\"".$_SESSION[member][email]."\">
    Votre mot de passe actuel :    <input type=\"password\" name=\"pass_old\" size=\"10\" maxlength=\"20\" />
    Votre nouveau mot de passe :    <input name=\"pass1\" type=\"password\" size=\"10\" maxlength=\"20\" />
    Confirmez le nouveau mot de passe :    <input name=\"pass2\" type=\"password\" size=\"10\" maxlength=\"20\" />
    <input type=\"submit\" value=\"OK\" />
    \n";

    //admin.php
    //Mets cette page dans un répertoire à part que tu protèges avec htaccess...

    //Donne moi plus de précisions sur tes paris, pronostics, classements pour la suite

    ?>