Problème register.php

Par dexter74, il y a 12 ans


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

flo3376, il y a 12 ans

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.

flo3376, il y a 12 ans

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, il y a 12 ans

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
flo3376, il y a 12 ans

bon à la grosse c'est ta fonction

filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)

qui catouille, on pourrait avoir le détails stp

dexter74, il y a 12 ans

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.

Vallyan, il y a 12 ans

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).