IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Système d'inscription [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut Système d'inscription
    Bonjour à tous.

    Je sollicite votre aide pour mon système d'inscription défaillant.

    Le problème est le suivant : Quand j'envoie un formulaire d'incscription, et que je vérifie dans la table PHP, je ne vois rien. La table est vide, aucun nouvel utilisateur est référencé.

    Sans plus attendre le script ainsi que la table PHP.

    PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    <?php
    /* Identification SQL */
    $serv  = "";
    $login = "";
    $pass  = "";
    /* ================== */
     
    /* ================================ SYSTEME ================================= */
    if (isset($_POST['Pseudonyme']) && isset($_POST['Mdp']) && isset($_POST['Confirmation_mdp']) && isset($_POST['Email']) && isset($_POST['Confirmation_Email'])) {
    	/* Affectation Variables */
    	$pseudo         	= $_POST['Pseudonyme'];
    	$mdp 			    = $_POST['Mdp'];
    	$confirmation_mdp   = $_POST['Confirmation_mdp'];
    	$email              = $_POST['Email'];
    	$confirmation_email = $_POST['Confirmation_Email'];
    	$erreur             = null;
    	/* Si verif different de true alors switch est utiliser pour afficher le type d'erreur */
    	if((verif($pseudo,$mdp,$confirmation_mdp,$email,$confirmation_email)) !== true){
    		switch ($erreur = verif($pseudo,$mdp,$confirmation_mdp,$email,$confirmation_email,$erreur)){ 
    		case 1: /* Erreur Mail */
    			erreur("Votre adresse email n'est pas valide.");
    			break;
    		case 2: /* Erreur Mdp ou Email */
    			erreur("Vous n'avez pas entrer deux mot de passe identique, ou, deux adresses emails identiques.");
    			break;
    		case 3: /* Erreur champs vides */
    			erreur("Un ou plusieurs champ du formulaires sont vides.");
    			break;	
    		}
    	}
    	else{
    		if(($mysql_connexion = connect_sql($login,$pass,$serv)) !== false){
    			mysql_select_db ('Membres');
    				$sql = "SELECT Pseudonyme, Email FROM Membres WHERE Pseudonyme = '".$_POST['Pseudonyme']." OR Email ='".$_POST['Email']."";
    				$exe = mysql_query($sql);
    				if(!$exe){
    					$message ="Une erreur s'est produite lors de la création de votre compte.";
    				}else{
    					if(mysql_num_rows($exe) > 0){
    						while($row = mysql_fetch_array($exe)){
                 				if($_POST['Pseudonyme'] == $row["Pseudonyme"]){
                   					$message = "Ce nom d'utilisateur est déjà utilisé.";
    			 				}
                 				elseif($_POST['Email'] == $row["Email"]){
                       				$message = "Cette adresse email est déjà utilisé.";
    			 				}
    						}
    					}else{
    						$cle = sha1(microtime(TRUE)*100000);
    					}
    				}
    			$compte = mysql_query("INSERT INTO Membres(Pseudonyme, Mdp, Email, Clef) VALUES ('" . $_POST['Pseudonyme'] . "', '" . sha1($_POST['Mdp']) . "', '" . $_POST['Email'] . "', '" . time() . "', '" . $Clef . "");
    			if((email_confirm($email,$pseudo,$cle)) !== false){
    				echo "";
    			}
    		}else {
    			echo "Erreur Connection SQL";
    		}
    	} 
    }
     
    /* FONCTIONS */
     
    function erreur($erreur){
    	echo("Erreur : ".$erreur."");
    }
     
    function verif($pseudo,$mdp,$confirmation_mdp,$email,$confirmation_email){ 
        if(!empty($pseudo) && !empty($mdp) && !empty($confirmation_mdp) && !empty($email) && !empty($confirmation_email)){ 
            if(($mdp == $confirmation_mdp) && ($email == $confirmation_email)){ 
                if(preg_match("#[a-z0-9]{2,30}@[a-z0-9]{2,30}.[a-z]{0,10}#",$email)){ 
                    return true; 
                } 
                return 1; 
            } 
            return 2; 
        } 
        return 3; 
    }
     
    function connect_sql($login,$pass,$serv){
    		if($mysql_connexion = mysql_connect($serv,$login,$pass)){
    			return $mysql_connexion;
    		}
    	return false;
    }
     
    function email_confirm($email,$cle,$pseudo){
    	$titre = "Activation de votre compte membre sur J.Newb.";
     
    	$message = "
    	
    	Bienvenue parmis nous. :) 
    			
    
     	Pour activer votre compte, c'est très simple, il vous suffit de cliquer sur le lien ci-dessous et votre compte sera activé immédiatement. 
     	http://jnewb.free.fr/activation.php?log='.urlencode($pseudo).'&cle='.urlencode($cle).'
     	
    	A très bientôt sur J.Newb.
     	
    	------------------------
     	Ceci est un message automatique, merci de ne pas y répondre.";
    	if(mail($email,$titre,$message)){
    		return true;
    	}
    	return false;
     
    }
     
    /* ================================= END =============================== */
     
    /* ================================= SYSTEME ANTI BOT =============================== */
     
    if($GLOBALS['REQUEST_METHOD'] == 'POST' || count($_POST) > 0) { 
    $pwf_message = "Le code de vérification que vous avez inscrit est erroné. Merci de reproduire le code affiché par l'image.";
     
    if(strlen($_POST['protectwebformcode']) > 30) {
    		die($pwf_message);
    }
     
    $protectwebformresult = 
    	@file_get_contents( "http://protectwebform.com/verify01?vui=30715&vp=mf8r4wpkqx6n&ri=" . 
    	urlencode($_SERVER['REMOTE_ADDR']) . "&vs=" . 
    	urlencode($_POST['protectwebformcode'])); 
    if(preg_match("|<authorization status=\"0\"|", $protectwebformresult)) { 
        echo "Warning. You are not authorithed to use image protection provided by 
    		<a href="http://www.protectwebform.com" target="_blank">http://www.protectwebform.com</a>. Read <a href="http://www.protectwebform.com" target="_blank">http://www.protectwebform.com</a> 
    		FAQ for more information"; 
    } elseif(!preg_match("|<verification result=\"yes\"/>|", $protectwebformresult)) { 
        die($pwf_message); 
    }
    }                                                                            
     
    /* ================================= END =============================== */
     
    ?>





    HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <form method="POST">
     
        <p class="normalgris"><strong>Formulaire d'inscription : </strong>
        </p><br/>
        <span class="petitvert">Pseudonyme : </span>
        <div id="champs"><input name="Pseudonyme" type="text"/></div><br />
        <span class="petitvert">Mot de Passe : </span>
        <div id="champs"><input type="password" name="Mdp"  /></div><br />
        <span class="petitvert">Confirmation du mot de passe :</span><br />
        <div id="champs"><input type="password" name="Confirmation_mdp" /></div><br />
        <span class="petitvert">Adresse e-mail : </span>
        <div id="champs"><input type="text" name="Email" /></div><br />
        <span class="petitvert">Confirmtion de l'adresse e-mail : </span>
        <div id="champs"><input type="text" name="Confirmation_Email" /></div><br /><br/>
        <span class="petitvert">Recopiez s'il vous plait ce le contenu de l'image ci-dessous : (Système anti-robots)  <br /><br/> 
        <a href="http://www.protectwebform.com/" title="Captcha service - protectwebform.com!"><img src="http://www.protectwebform.com/images/ssl_lock.gif" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="protectwebformcode" value="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://protectwebform.com/image/30715/" style="vertical-align:bottom">
    	</span><br /><br /><br />
    	<p><div id="reglement">
    		REGLEMENT
    		</div>
            </p>
            <br/><br/>
            <input type="checkbox" name="regagree" onclick="ChangeStatut(this.parentNode)" />
           	<span class="petitvert">J'ai <strong>lu</strong> et <strong>j'accepte</strong> le règlement de J.Newb.</span><br/><br/><br/>
        	<input type="submit" name="validation" value="S'enregistrer" disabled="disabled" />
    		<div id="message">
     
        	</div>
        </form>
    Merci !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 210
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 210
    Points : 8 437
    Points
    8 437
    Billets dans le blog
    17
    Par défaut
    Il y a des erreurs dans la chaîne "Warning. You are not authorithed to use image protection provided by...", les " n'y sont pas échappés.
    PHP n'affiche pas d'erreurs ? Dans ton php.ini passe display_errors à On.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Alors je pense que ta requete sql Insrt into n'est pas bonne.
    Essaye avec sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date=time();
    $compte = mysql_query("INSERT INTO Membres VALUES ('','$pseudo','$mdp','$email','$date','','$cle');
    Ce qui est sur, c'est qu'il faut que les 7 champs de ta table soit bien distincts dans ta requete.

    Byby
    JB

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Il y a des erreurs dans la chaîne "Warning. You are not authorithed to use image protection provided by...", les " n'y sont pas échappés.
    PHP n'affiche pas d'erreurs ? Dans ton php.ini passe display_errors à On.
    Le site est hébergé chez Free, je n'ai pas accès au php.ini.

    Le code PHP n'affiche aucune erreur.

    @Jean-Ba : Quand je remplace ma fonction par la tienne, sur Dreamweaver le texte s'affiche en rouge comme si la fonction n'était pas terminer. Je veux dire comme si il manquait la fin du script comme un ";" manquant ou autre.

    Tu n'aurais pas fait une erreur d'innatention par hasard ?

    Merci pour la réactivité de vos réponses. :d

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Tu as raison:
    comme sa c'est peut être mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date=time();
    $compte = mysql_query("INSERT INTO Membres VALUES('','$pseudo','$mdp','$email','$date','','$cle')");

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    YES !

    Ca marche ! Merci beaucoup.

    Cependant, dans la table la date du nouveau compte est comme ceci : 0000-00-00 00:00:00

    Vous avez une idée ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Salut,

    regarde le lien suivant il y a different format pour afficher la date selon tes envis:

    http://uk3.php.net/manual/en/function.date.php

    Sinon il faut egalement specifier le type de cette colonne dans ta table. regarde la:
    http://dev.mysql.com/doc/refman/5.0/...ime-types.html

    byby
    JB

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Le problème c'est pas la mise en place, mais le contenu. Parce que à la place de la date, de l'heure et tout, j'ai qu'une série de 0.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    mmm,

    tu utilises quoi comme fonction pour recuperer la date, date() ou time()?
    (envoie moi ce code si tu utilises des attributs)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    J'ai tout donné dans le 1er post il me semble.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    OK,
    Alors la fonction time() retourne le nombres de secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT).

    Ce n'est donc pas un format du type: 0000-00-00 00:00:00.

    Tu peut aussi essayer en metant ta colonne avec un type 'varchar'. (Comme sa sa prend tout, et tu verra si elle se remplis.)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    En 'VACHAR' ça me donne 1241792883

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Et bien le resultat est correct.

    Le probleme vien bien de la facon de representer les donnees.

    Si tu veut une date de la forme 0000-00-00 00:00:00 utilise la foction date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date=date("Y-m-d H:i:s");

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Merci, ça marche.

    Une autre question. J'aurais voulu appliquer un algo sha1 au mot de passe dans la BDD. Il faut quej'applique l'algo ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $compte = mysql_query("INSERT INTO Membres VALUES('','$pseudo','$mdp','$email','$date','','$cle')");

  15. #15
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Avant cette ligne tu indiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mdp_protege = sha1($mdp);
     
    $compte = mysql_query("INSERT INTO Membres VALUES('','$pseudo','$mdp_protege','$email','$date','','$cle')");
    Tu peut aussi garder la même variable :


  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Points : 47
    Points
    47
    Par défaut
    Merci, c'est ce que je pensais, mais je préférais en être sur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Système d'inscription avec validation sous Xcode
    Par Bibi2118 dans le forum XCode
    Réponses: 0
    Dernier message: 15/04/2015, 18h46
  2. probleme avec système d'inscription
    Par fromthesun dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2009, 01h13
  3. [MCD] gestion d'un systéme d'inscription
    Par laurentg2003 dans le forum Schéma
    Réponses: 5
    Dernier message: 01/01/2009, 14h46
  4. [SQL] Système d'inscription/connexion
    Par tokimitsu dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 06/03/2008, 14h15
  5. [Mail] Système de vérification d'inscription par e-mail
    Par franck.thibault dans le forum Langage
    Réponses: 14
    Dernier message: 12/01/2007, 21h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo