Voilà je viens de commencer le php il n'y a pas très longtemps et j'ai décidé de créer mon portfolio avec des news etc ...
j'aimerais savoir ce que vous pensez de mon script inscription et j'aimerais vraiment que vous me dites ce qu'il y a changer ou à améliorer dans mon script

inscription.php :

<?php
    if(isset($_POST'username']) && isset($_POST'password']) && isset($_POST'password-confirm']) && isset($_POST'email']))
    {
        // Je protège mes champs.
        $username = addslashes($_POST'username']);
        $email = addslashes($_POST'email']);
        $password = sha1($_POST'password']);
        $passwordConfirm = sha1($_POST'password-confirm']);
        if($password === $passwordConfirm) // si les deux mots de passe sont identiques.
        {
            if(strlen($_POST'username']) > 4) // Si l'username est plus grand que 4.
            {
                if(filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)) // Je vérifie si l'email est valide.
                {
                    $select = array('username'=>$username, 'password'=>$password, 'email'=>$email);
                    $sql = 'INSERT INTO users (username, password, email) VALUES (:username, :password, :email)';
                    $req = $db->prepare($sql);
                    $req->execute($select);
                }else{
                    echo "Votre adresse e-mail n'est pas valide.";
                }
            }else{
                echo 'Votre username doit être plus que grand que 4 caractères.';
            }
        }else{
            echo 'Les mots de passe ne sont pas identiques.';
        }
    }else{
        echo "Certains champs n'ont pas été remplis.";
    }
?>

Merci.

7 réponses


Glaived
Réponse acceptée

<UselessVousPouvezSkip>
Ah, donc faut te demander 3 fois poliment, après avoir passer 30min à t'aidé sur teamspeak, attendre que tu poste un nouveau topic, t'envoyer sur les roses, et enfin, et seulement après avoir fais cela, tu mes le post en résolu (sur un ancien topic) ... et ne me parle pas de maturité quand tu n'es pas apte à respecter les utilisateurs d'un forum, et une charte de bonne utilisation (Cf: http://www.grafikart.fr/forum/topic/12112, Cf2: « N'oubliez pas ! Si un des message répond à votre question validez la réponse pour fermer le sujet »)
Et on noterais que t'en a pas tant « rien à foutre » de moi, puisque t'es bien content que je répond en partie à te demande (drôle de façon d'en avoir « rien à foutre » de quelqu'un)
bwef.
</UselessVousPouvezSkip>

J't'aurais bien aidé, mais j'aime pas tendre la joue, j'ai juste vue que tu utilisais filter_var pour vérifier l'email, regarde plutôt avec un preg_<u>replace</u> (preg_ match () ), j'ai pas eu de bon echo sur filter_var, et quand j'avais voulue faire des tests avec, ils étaient pas concluants

(Tu me diras si mon image est assé grosse hein :) )

C'est d'la merde, faudrait changer celui qui est derrière l'écran, gros bisou (non non je t'es pas oublié toi)

apart rager car je ne validais pas mes réponse sur le forum ?
belle maturité ?
et puis j'en ai rien à foutre de toi !

le preg_match je suis entrain de voir pour mais merci tout de même

voilà mes modifcations :

<?php
    // Traitement des Erreurs & Success //
        $errors = array(
            'error-champs'] = 'Tout les champs doivent être remplis.';
            'error-password'] = 'Les deux mots de passe ne sont pas identiques.';
            'error-email'] = 'Votre adresse e-mail n\'est pas valide, veulliez vérfifier son format.';
            'error-caracteres-email'] = 'Votre adresse e-mail doit contenir moin de 255 cractères.';
            'error-caracteres-username'] = 'Votre username doit contenir plus de 6 caractères.';
            'error-caracteres-password'] = 'Votre mot de passe doit contenir plus de 8 caractères.';
            'error-username-exist'] = 'Votre username est déjà utilisé par un autre utilisateur.';
            'error-email-exist'] = 'Votre adresse e-mail est déjà utilisé par un autre utilisateur.';
        );
        $success = array(
            'success-register'] = 'Bravo ! vous êtes désormais inscrit sur le site.';
        );
    // Traitement du formulaire d'inscription ..
        if(isset($_POST'username']) && isset($_POST'password']) && isset($_POST'password-confirm']) && isset($_POST'email']))
        {
            // Je protège mes champs.
            $username = addslashes(trim(($_POST'username']);
            $email = addslashes(trim($_POST'email']);
            $password = sha1($_POST'password']);
            $passwordConfirm = sha1($_POST'password-confirm']);
            if($password == $passwordConfirm) // si les deux mots de passe sont identiques.
            {
                if(strlen(trim($username)) > 6) // Si l'username est plus grand que 46
                {
                    if(strlen(trim($email) < 255) // Si l'email est inférieur à 255 caractères.
                    {
                        if(strlen(trim($password && $passwordConfirm)) > 8) // Si les deux mots de passe sont inférieur à 8 caractères.
                        {
                            if(!preg_match("#^[a-z0-9._-]+@^hotmail|outlook|gmail].[a-z]{2,4}$#",$_POST"email"]))) // Je vérifie si l'email est valide.
                            {
                                $emailVerif = $db->query("SELECT email FROM users WHERE email = '$email'");
                                $countEmail = $emailVerif->rowCount(); // Je vérifie si l'email n'est pas déjà utilisé par un autre utilisateur.
                                if($countEmail == 0)
                                {
                                    $usernameVrerif = $db->query("SELECT id FROM users WHERE username = '$username'");
                                    $countUsername = $usernameVrerif->rowCount(); // Je vérifie si leusername n'est pas déjà utilisé par un autre utilisateur.
                                    if($countUsername == 0)
                                    {
                                        $select = array('username'=>$username, 'password'=>$password, 'email'=>$email);
                                        $sql = 'INSERT INTO users(username, password, email) VALUES(:username, :password, :email)'; // Ma requête SQL pour insérer les valeurs de l'utilisateur.
                                        $req = $db->prepare($sql);
                                        $req->execute($select);
                                            echo $success'success-register']; // Un message 'success' si l'inscription est terminée.
                                        header('Location: connexion.php'); // Redirection vers la page de conenxion si l'inscription s'est bien déroulée.
                                    }else{
                                        echo $errors'error-username-exist'];
                                    }
                                }else{
                                    echo $errors'error-email-exist'];
                                }   
                            }else{
                                echo $errors'error-email'];
                            }
                        }else{
                            echo $errors'error-caracteres-password'];
                        }
                    }else{
                        echo $errors'error-caracteres-email'];
                    }
                }else{
                    echo $errors'error-caracteres-username'];
                }
            }else{
                echo $errors'error-password'];
            }
        }else{
            echo $errors'error-champs'];
        }
?>

Pour le rowcount(); c'est a evité

PHP =>
Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.

Que mettre à la place ?