Bonjour à tous,

j'ai un petit soucis sur le code après plusieurs vérification , impossible de voir l'erreur.
J'ai mis le mot erreur sur les ligne en question

<!--- Securiter anti-hack--->
<?php
// Si c'est pas vide, y a un prenom et un mail et valide alors inscription reussi. (1 erreur)
if(!empty($_POST) && (strlen($_POST'prenom'])>4) && filter_var($_POST'email'], FILTER_VALIDATE_EMAIL))
// Verifie si le formulaire a deja ete soumis. Bref eviter double inscription.
// strlen: Champs prenom requis avec 4 Caractere minimum.
// filter_var: Champs email Requis
// FILTER_VALIDATE_EMAIL: Champs email requis avec validation email
    {
    // Anti-Hack (empeche certains caratere de passer)
    $prenom=addslashes($_POST'prenom']) ; // 
    $email=addcslashes($_POST'email']);
    $password=sha1($_POST'password']) ;
    $token=sha1(uniqid(rand())) ;
    $q=array('prenom'=>$prenom, 'email'=>$email, 'password'=>$password, 'token'=>$token) ;

    // Commande Requete
    $sql= 'INSERT INTO users (prenom, email,password, token) VALUES (:prenom, :email, :password, :token)';

    // Preparation de la requete
    $req = $cnx->prepare($sql);

    // Execution de la Requete
    $req->execute($q);

    // Envoyer un mail pour la validation du compte

    $to =$email;
    $sujet= 'Activation de votre compte';
    $body = '
    Bonjour , veuillez activer votre compte en cliquant ici -> 
    <a href="http://localhost/connexion/activate.php?token='.$token.'email='.$to.'">Activation du compte</a>';
    // 

    // Email entete
    $entete ="mime-version: 1.0\r\n";
    $entete .= "Content-type: text/html; charset=utf-8\r\n";
    $entete .= 'From: admin@monsite.fr' . "\r\n" .
    'Reply-to: teste74@hotmail.fr' . "\r\n" .
    'X-mailer: php/' .phpversion();

    // Envoie de mail : A , Sujet , corps du message , entete
    mail($to,$sujet,$body,$entete);
}else{
    if(!empty($_POST) && (strlen($_POST'prenom'])>4))
        {
            $error_prenom = 'Votre prénom doit comporter 4 Caractère.';
        }

    // Erreur 1 present
    if(!empty($_POST) && !filter_var($_POST'email'], FILTER_VALIDATE_EMAIL))
        { 
            $error_mail = 'Votre email est pas bonne , veuillez la retaper !' ; 
        }

}

6 réponses


heu, sans message d'erreur ou explication sur ce qui ne vas pas, on va avoir du mal à t'aider.

pour le moment je ne vois pas de try catch pour tes requete sql, c'est pas grave en soit, mais c'est pratique,

je ne vois pas de connexion à la BD, et les fonctions filter_var() sont absente, donc 2 possibilité,

soit tu n'as pas mis le code complet, sois tu as oublier de faire des choses.

à priorie $CNX est ta connexion PDO,

donc un petit message d'erreur, serai le bienvenue pour nous guider ainsi que le détails de ta fonction filter_var()

dexter74
Auteur

Salut,

Désoler pour l'oublie du message d'erreur:

( ! ) Notice: Undefined index: email in C:\Program Files (x86)\wamp\www\connexion\register.php on line 5
Call Stack
#   Time    Memory  Function    Location
1   0.0000  148560  {main}( )   ..\register.php:0
( ! ) Notice: Undefined index: email in C:\Program Files (x86)\wamp\www\connexion\register.php on line 58
Call Stack
#   Time    Memory  Function    Location
1   0.0000  148560  {main}( )   ..\register.php:0

bon à la grosse c'est ta fonction

filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)

qui catouille, on pourrait avoir le détails stp

dexter74
Auteur

Quel détail tu veux car je t'est mis tous le code php pour la partie requête , le formulaire ne sert strictement pas.

Je suis d'accord avec le flo, si PHP te dit qu'il connait pas l'index 'email', c'est que le problème vient du formulaire.
Affiche le résultat d'un var_dump($_POST), pour voir ... (a mettre en tout premier dans ton script, éventuellement suivit d'un die).

hum pas faut, c'est vrai que j'ai foncé sur la fonction qui pourrait être plantards, mais j'ai pas pensé à savoir si elle recevait bien $_POST[email].

Donc oui fait déjà un var_dump pour voir si email est bien envoyé ou pas sous un nom différent.

Ensuite on avisera, il faudra peut être se pencher sur ta fonction, si le var_dump est cohérent.