Bonjour, Je suis en plein projet d'un espace membre avec un design Basic (bootstrap) pour le moment. Sur cet espace membres il y aura plusieurs fonctionnalités : Possibilité de se connecter / s'inscrire / se déconnecter La possibilité d'avoir un profil avec ses informations personnelles où l'utilisateur pourra les modifier si il le souhaite (biographie, compétences etc..) Un accès à une salle de discutions (tchat) ** Pour l'instant je ne fais que ces fonctionnalités en vue des mes capacités en PHP, mais plus tard je rajouterais Une messagerie (messages envoyé, boîte de réception) Une liste d'amis ** Rien que avec ces quelques idées cela fait déjà une base de donnée assez grande. mais passons sur mes "problèmes" vu que maintenant vous savez mon projet. D'Ailleurs ce n'est pas vraiment des problèmes mais je demande à ce qu'on me guide un peu vers le code sur certains script Script inscription Voilà ce que je pense faire pour le script d'inscription [code]<?php // On va dans un premier temps vérifier si les champs sont définit et si ils sont remplis
if(isset($_POST['identifiant'], $_POST['password'], $_POST['confirmpassword'], $_POST['email'])
{
if(empty($_POST['identifiant'], $_POST['password'], $_POST['confirmpassword'], $_POST['email']){
// Si le mot de passe correspond au password-confirm
if($_POST['password'] == $_POST['confirmpassword']){
// Si l'email est valide
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
// alors on fais les requete
$req = $bdd->prepare("INSERT INTO mabase (identifiant, password, email) VALUES(identifiant, password, email)"); $req->execute(); // on execute par un array // et apres je ne sais pas }else{ echo = "l\'email n\'est pas valdie."; } }else{ echo = "les mot de passe ne sont pas identiques"; } }else{ echo = "Un ou plusieurs champs sont vides."; } }else{ echo = "Les champs n'existe pas."; } ?> [/code] Je galère à partir des requetes ! est ce que j'ai oublié quelques choses ? Je sais je n'ai pas mis de sécurité mais je les mettrais et le merci de m'aider

4 réponses


Glaived
Réponse acceptée
<?php
/*
filter_var($email, FILTER_VALIDATE_EMAIL)
J'ai entendue de mauvais echo sur l'utilisation de ceci pour vérifier les email, utilise plutot preg_match() (Voir ce que sont les regex PCRE)
*/
/*
Ligne XXXXXX
On utilise === et non pas ==
test == Test -> true
test === Test -> false
*/
/*
On prefere utilise les ' que les " pour du texte simple quand on utilise pas de variables
les ' sont plus rapide que les "
les " prennent en compte les variables ex:
    $test = 'mon test'; echo "Titre : $test" ---------> AFFICHE -> Titre : mon test
    $test = 'mon test'; echo 'Titre : $test' ---------> AFFICHE -> Titre : $test
*/
/*
On utilise les binds pour la requete histoire d'avoir de la sécurité (Voir ligne XXXXXXXXXX-XXXXXXXXXXX)
*/
/*
mettre des variable comme $mon-test c'est moche, prefere $monTest ou $mon_test
*/
$errors = array(
    'success-register' => 'YOUHOU!',
    'error-register' => 'hm?',
    'error-email' => 'Pb avec email',
    'error-password' => 'pb avec password',
    'error-empty-postdata' => 'pb avec l\'envoie du formulaiure'
);
if(!empty($_POST'identifiant']) && !empty($_POST'password']) && !empty($_POST'confirmpassword']) && !empty($_POST'email'] && !empty($_POST'prenom'] && !empty($_POST'nom'])){
    $identifiant = trim($_POST'identifiant']);
    $password = sha1($_POST'password']);
    $passwordRepeat = sha1($_POST'password-repeat']);
    $prenom = trim($_POST'prenom']);
    $nom = trim($_POST'nom']);
    $email = trim($_POST'email']);
    if($password === $passwordRepeat){
        if(filter_var($email, FILTER_VALIDATE_EMAIL)){
            $dns = 'localhost';
            $user = 'root';
            $database_name = 'espace_membres';
            $password = null;
            $bdd = new PDO($dns, $user, $database_name, $password);
            $sql = "INSERT INTO profil (`identifiant`, `password`, `email`, `prenom`, `nom`) VALUES(':identifiant', ':password`, ':email', ':prenom', ':nom')"
            $req = $bdd->prepare($sql);
            $req->execute(array(
                'identifiant' => $identifiant,
                'password' => $password,
                'email' => $email,
                'prenom' => $prenom,
                'nom' => $nom
            ));
        }else{
            echo $errors'error-email'];
        }
    }else{
        echo $errors'error-password'];
    }
}else{
    echo $errors'error-empty-postdata'];
}

déjà, mes de l'indentation, pour le reste, j'éditerais quand j'aurais dégueulassifier tout ça >.< ..

<?php
    // Si les champs sont définit et si ils ne sont pas vides.
    if(empty($_POST'identifiant'], $_POST'password'], $_POST'password-repeat'], $_POST'email'], $_POST'prenom'], $_POST'nom']))
    {
        // On sécurise tout les champs, on continue
        $identifiant = htmlspecialchars(trim($_POST'identifiant']));
        $password = sha1($_POST'password']);
        $password-repeat = $_POST'password-reeat'];
        $prenom = htmlspecialchars(trim($_POST'prenom']));
        $nom = htmlspecialchars(trim($_POST'nom']));
        $email = htmlspecialchars(trim($_POST'email']));
        // Si le password est égal password-repeat, on continue
        if($_POST'password'] == $_POST'password-repeat'])
        {
            // Si l'email a un bon format, on continue
            if(filter_var($email, FILTER_VALIDATE_EMAIL))
            {
                // On se connecte à la base de donnée, on continue
                $dns = 'localhost'; // adresse local
                $user = 'root'; // Nom de compte local
                $database_name = 'espace_membres'; // Base de donnée 
                $password = ''; // Mot de passe local
                $bdd = new PDO($dns, $user, $database_name, $password); // Puis on rassemble le tout dans une function de PDO 
                // On fais une requête pour insérer les informations rentrer par l'utilisateur
                $requete = $bdd->prepare("INSERT INTO profil (identifiant, password, email, prenom, nom') VALUES(`identifiant`, `password`, `email`, `prenom`, `nom`)");
                $requete->execute(array(
                    'identifiant'=> $identifiant,
                    'password'=> $password,
                    'email'=> $email
                ));
                // à partir de ce moment, je ne suis pas sur du Code.
                $count = $requete->rowCount($bdd);
                $info = $requete->fetch();
                if($count == 1) 
                {
                    $_SESSION = array(
                        'identifiant' => $info'identifiant'],
                        'password' => $info'password'],
                        'email' => $info'email'],
                        'prenom' => $info'prenom'],
                        'nom' => $info'nom'],
                        'id' => $info'id'],
                    );
                    echo $messageSuccessRegister; // Si l'inscription s'est bien déroulé alors on affiche un message de bienvenue.
                    header('Location: profil.php'); // Puis on redirige l'utilisateur vers son profil.
                }else{
                    echo $messageErreurRegister; // Si il y a eu une erreur lors de l'inscription alors on affiche un message d'erreur.
                }
            }else{
                echo $messageErreurEmail; // Si l'email n'a pas un format valdie alors on affiche un message d'erreur.
            }
        }else{
            echo $messageErreurPassword; // Si les mots de passe ne sont pas identiques alors on affiche un message d'erreur.
        }
    }else{
        echo $messageErreurChampsVide; // Si ils sont vides alors on affiche un message d'erreur.
    }

    $stmt->closeCursor();

    // Variables Messages 
        // Erreurs
            $messageErreurChampsVide = '<div class="">Un ou plusieurs champs n\'ont pas été remplis.</div>';
            $messageErreurPassword = '<div class="">Les deux mot de passe ne correspondent pas ensemble.</div>';
            $messageErreurEmail = '<div class="">Votre adresse email n\'a pas un format valide.</div>';
            $messageErreurRegister = '<div class="">Il y a eu une annomalie pendant l\'inscription.</div>';
        // Success  
            $messageSuccessRegister = '<div class="">Vous êtes bien inscrit sur l\'espace membre, vous pouvez désormais allez sur votre profil.</div>';
    // End Variables Messages 
?>

Voilà j'ai essayé quelques choses sur mon script d'inscription.
Est-ce que j'ai oublié quelques chose ?
si oui merci de me guider dans le code !
Merci Glaived !

merci !!!!