Page 1 sur 3

création espace membre

Posté : 25 août 2011, 16:22
par lezarts
Bonjour à tous,

Dabord j'aimerai que vous sachiez que je suis novice et autodidacte en php comme je l'ai été pour le html et le css, j'ai un site que je gère tout seul il est en html et css, j'aimerai le rendre plus dynamique voila la raison pour laquelle je me lance dans le php, qui au dire de certain est un langage facile "surtout pour ceux qui le connaissent et travail avec", mais pour le débutant cela reste quand même un casse tête chinois... |*() , quand il faut trouver les erreurs, et saché que j'en ai visité des forums et des sites sur le sujet, et copié à la main du code différent et minimaliste pour le même sujet mais chaques codes est codé différement de l'autres, cela pour mieux compliquer la vie du pauvre novice que je suis. Surtout quand on veut rajouter de nouvelle fonction ou autres et là commence le périple de la grande solitude.......

Bref..?

Après cet intro pour me présenté voilà le problème actuel sur lequel je planche depuis un temps certain et j'en suis qu'au début des problèmes :

J'ai fait un formulaire d'inscription qui fonctionnait à l'état minimaliste, je lui ai rajouté du code pour vérifier la validité des champs ou j'ai planché pendant plusieurs jour pour l'intéger, bien..? Mais à force de persévérence j'y suis arrivé, maintenant j'essaye de lui intégrer une clef d'activation avec envoi par email comme le site phpfrance et voilà que je me retrouve avec une ou des erreurs que je dois corrigé j'ai cherché sur internet des solutions mais je n'arrive pas à touver la solution....

La table sql :
ALTER TABLE `comptes_utilisateurs`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`pseudo` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 
`password` VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 
`email` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 
`url` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 
`date_enregistrement` DATETIME NULL DEFAULT NULL, 
`clef_activation` VARCHAR(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, 
`compte_actif` `compte_actif` ENUM('0','1') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0'
) ENGINE=MyISAM  DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=1 ;
Le code d'erreur :
Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\site\Lezarts\000_membres\membre_test\inscription02.php on line 33
Le code php : Le else qui me pose prblème se trouve juste après $data = mysql_fetch_array($req);
<?php
header('Content-type: text/html; charset=UTF-8');
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	
	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
	if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['url']))) {
		
		// Vérification de la validitée des champs
        if (!preg_match('#^[A-Za-z0-9_]{4,20}$#', $_POST['pseudo'])) {			
			
$erreur = "Votre pseudo doit comporter un minimum de 4 caractéres,<br /><br />L'utilisation de l'underscore est autorisée."; 
		}
		elseif (!preg_match('#^[A-Za-z0-9]{6,}$#', $_POST['pass'])) {
			
			$erreur = "Votre mot de passe doit comporter un minimum de 6 caractéres.";
		}
		elseif ($_POST['pass'] != $_POST['pass_confirm']) {
			$erreur = "Les 2 mots de passe sont différents.";
		}
		elseif (!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$#',$_POST['email'])) {
			
			$erreur = "Votre adresse e-mail n'est pas valide";
		}
		else {
			
			$database = mysql_connect ('localhost', 'root', '');
			mysql_select_db ('espace_membres', $database);
			// on recherche si ce login est déjà utilisé par un autre membre
			$sql = 'SELECT count(*) FROM comptes_utilisateurs WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
			$data = mysql_fetch_array($req);
			else {
                         
					// Génération de la clef d'activation
					$caracteres = array("a", "b", "c", "d", "e", "f", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
					$caracteres_aleatoires = array_rand($caracteres, 8);
					$clef_activation = "";
							 
					foreach($caracteres_aleatoires as $i) {
						
						$clef_activation .= $caracteres[$i];
					}		
				if ($data[0] == 0) {
				$sql = 'INSERT INTO comptes_utilisateurs VALUES("", "'.mysql_real_escape_string($_POST['pseudo']).'", "'.mysql_real_escape_string(sha1($_POST['pass'])).'", "'.mysql_real_escape_string($_POST['email']).'", "'.mysql_real_escape_string($_POST['url']).'", "'.mysql_real_escape_string($clef_activation).'", NOW())';
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
				
				session_start();
				$_SESSION['pseudo'] = $_POST['pseudo'];
				header('Location: membre.php');
				exit();
				}
			else {
				
				$erreur = 'Un membre possède déjà ce login.';
			}
					  else {
                              
                              // Envoi du mail d'activation
                              $sujet = "Activation de votre compte utilisateur";
                              
                              $message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
                              $message .= "http://" . $_SERVER["SERVER_NAME"];
                              $message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
                              $message .= "&clef=" . $clef_activation;
                              
                              // Si une erreur survient
                              if(!@mail($_POST['email'], $sujet, $message))
                              {
                                   $erreur = "Une erreur est survenue lors de l'envoi du mail d'activation \n";

                                   $erreur .= "Veuillez contacter l'administrateur afin d'activer votre compte";
                              }
                              else
                              {
                                   // Message de confirmation
                                   $message = "Votre compte utilisateur a correctement été créer \n";

                                   $message .= "Un email vient de vous être envoyer afin de l'activer";      
                              }
				
							}
			}	
	
		} 
	}
	else {
			$erreur = 'Au moins un des champs est vide.';
		}
}
?>

<html>
<head>
<title>Inscription</title>
</head>

<body>
<div>
<form action="inscription02.php" method="post">
<h1>Inscription à l'espace membre :</h1>
<fieldset>
<p><label for="pseudo"><span id="aster">*&nbsp;</span>Pseudo :</label><input type="text" name="pseudo" value="<?php if (isset($_POST['pseudo'])) echo htmlspecialchars(trim($_POST['pseudo'])); ?>"></p>
<p><label for="pass"><span id="aster">*&nbsp;</span>Mot de passe :</label><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlspecialchars(trim($_POST['pass'])); ?>"></p>
<p><label for="pass_confirm"><span id="aster">*&nbsp;</span>Confirmez mot de passe :</label><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlspecialchars(trim($_POST['pass_confirm'])); ?>"></p>
<p><label for="email"><span id="aster">*&nbsp;</span>Votre adresse mail :</label><input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlspecialchars(trim($_POST['email'])); ?>"></p>
<p><label for="url">Votre site web :</label><input type="text" name="url" onfocus="this.value='http://'" value="<?php if (isset($_POST['url'])) echo htmlspecialchars(trim($_POST['url'])); ?>"></p>
<p><input type="submit" name="inscription" value="Inscription" id="bouton"><input type="reset" value="effacer" id="bouton"></p>
</form>
</fieldset>
<p><span id="note2">Note :</span> Les champs avec un <span id="aster">*</span> doivent obligatoirement être remplis.</p>
<p><?php if (isset($erreur)) echo $erreur; ?></p>
<p><?php if (isset($message)) echo $message; ?></p>
</div>
</body>
</html>
Dans l'attente de votre aide pour améliorer ce code et le sécurisé d'avantage, et contribuer à aider d'autres internautes qui se trouvent dans la même galère, et aussi pour que je puisse continuer ce code en lui intégrant un capcha, et me reprendre la tête en devant rechercher de l'aide, je vous en remercie d'avance... :agenouille:

Re: création espace membre

Posté : 25 août 2011, 17:41
par lezarts
Bonjour,

Je viens de m'inscrire sur ce forum et j'ai fait une erreur avec mon premier message intitulè création d'un espace membre + forum et je m'en excuse d'avance, j'ai refait ce message comme vous pouvez le constater ci-dessus ou j'ai corrigé mes erreurs en insérant la table sql, le code d'erreur et le code php.

Suite à mon premier message et en réponse à ceux qui mon répondu :

1.- à de Ryle
En gros, php t'informe qu'il est tombé sur une instruction ELSE à la ligne 33 de ton code, mais que celui-ci ne devrait pas se trouver là... Ca peut être parce que tu as omis le IF, parce que tu n'as pas le bon nombre d'accolades ouvertes/fermées à partir du IF, ... ou tout simplement parce que ton ELSE n'a rien à faire à cet endroit précis

Rèponse :
Pour ce qui est du code d'erreur j'ai déjà essayer plein de solution mais rien y fait s'est pour cela que je suis sur ce forum.......

2.- à de Manserk
En général quand j'ai cette erreur c'est que j'ai oublié une partie du code (un ; un ) ou un } )
mais sinon est ce que tu a vu la programmation objet ? c'est vraiment quelque chose de bien pour creer un espace membre
(tu creer une classe qui logue les utilisateurs en appelant une fonction, puis met les SESSION et les COKIES aussi si necessaire)

Réponse :
Pour ce qui est de la programmation Objet, je pense que je devrais d'abord m'améliorer en php simple, car si déjà à ce niveau je plante alors je ne préfére pas imaginer pour ce qui est de l'orientation Objet, alors chaque chose en son temps et un temps pour chaque chose.... ne mettont pas les boeufs avant la charrue....

Encore sincèrement désoler et merci...

Re: création espace membre

Posté : 25 août 2011, 18:02
par moogli
tu n'a pas de } ligne 31 avant le else donc tu a une erreur
je pense donc moi aussi qu'il manque un if avant

@+

PS : si ton sujet est résolu ou l'autre marque le résolus, a la limite demande la suppression de l'un sinon c'est la merde XD

Re: création espace membre

Posté : 25 août 2011, 18:35
par lezarts
merci man,

de ta réponse je vais relire mon code et me refaire une migraine de php.

Pour ce qui est de mon premier message je suis entrain de voir la procédure pour que l'on me le delete

merci.....

Re: création espace membre

Posté : 25 août 2011, 18:45
par Ryle
Le mieux pour éviter ce genre d'erreur, c'est de respecter l'indentation... tu insères une tabulation de plus à chaque fois que tu ouvres une accolade, et tu retires une tabulation dans tu la refermes... du coup ton code sera aligné et tu verras rapidement s'il y a un problème de structure :)
if (...) { 
        // j'ai ouvert une accolade, du coup je décale
        if (...) {
                // nouveau décalage
        }
        // j'ai refermé l'accolade, je reviens au niveau précédent
        elseif { 
                // nouveau décalage
        }
        ...
        else {
                // ...
        }
} 
et si tu as bien joué le coup, ta dernière accolade arrive au même niveau que ton bloc de départ :)

Re: création espace membre

Posté : 25 août 2011, 19:31
par lezarts
merci man,

Normalement quand je copie du code c'est ce que je fait, par exemple le code cité ci-dessus était minimaliste au départ et par la suite j'ai recherché à l'améliorer en lui inserant de nouveau bout de code que je t'avoue avoir récupérer sur d'autre code et qui mon donné un peut de fil à retordre avant de trouver l'emplacement exact dans le code, et c'est pour cela que je me retrouve coincé maintenant, mais, je ne désespère pas, car l'espoir fait vivre et les erreurs que j'arrive à corrigé, avec parfois l'aide d'autrui me serviront pour la suite de mon apprentissage en php et il n'y a que ce qui font rien qui ne font pas d'erreur.....

Encore merci de ton aide qui me sera fort utile pour ma continuité en php et ce qu'il y de sympa sur ce forum..? On reçoit des réponses assez rapidement pourvu que cela dur..? car d'autres questions et prise de tête sont en attente....

Merci

Re: création espace membre

Posté : 26 août 2011, 20:21
par lezarts
Bonjour,

Dabord un grand merci au staff de phpfrance de m'avoir enlever ce message publicitaire qui venait pollué mon problème.Et en ce moment ce n'est pas d'une paire de chaussure que j'ai besoin, mais plutôt de régler mes lacunes en php. On reçois déjà assez des spam dans nos messagerie privé.

Maintenant revenons au choses qui me tracasse pour ce qui est du code erreur précédent, je l'ai corrigé mais..?

Je me retrouve avec un soucis nouveau..? Je n'arrive plus à enregistrer les données dans la base et un nouveau message d'erreur vient d'apparaître pour combler ma grande solitude, mais..? Il est différent du précédent donc..? Grâce à ceux qui mon apporté leur soutient..' Je dirais abat l'avarice et merci, merci et encore merci....
Voici le code d'erreur
Erreur SQL !INSERT INTO comptes_utilisateurs(pseudo, password, email, clef_activation, date_enregistrement) VALUES("", "ssssss", "7c4a8d09ca3762af61e59520943dc26494f8941b", "[email protected]", "", "bd024569", NOW())
Column count doesn't match value count at row 1
Ce que je ne pige pas dans cette erreur, c'est la ligne..? Column count doesn't match value count at row 1 (Nombre de colonnes ne correspond pas au nombre de valeur à la ligne 1) mais quelle ligne 1..? Celle de ma base ou celui de mon code php....

Et maintenant voici mon code, depuis la ligne de l'erreur précédente, que j'ai relu et relu et même rêvé et qu'enfin je pensais avoir résolu
			$data = mysql_fetch_array($req);
			
			// Génération de la clef d'activation
			$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
			$caracteres_aleatoires = array_rand($caracteres, 8);
			$clef_activation = ('');
							 
			foreach($caracteres_aleatoires as $i) {
						
				$clef_activation .= $caracteres[$i];
			}		
			
			if ($data[0] == 0) {
			$sql = 'INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement) VALUES("", "'.mysql_real_escape_string($_POST['pseudo']).'", "'.mysql_real_escape_string(sha1($_POST['password'])).'", "'.mysql_real_escape_string($_POST['email']).'", "'.mysql_real_escape_string($_POST['url']).'", "'.mysql_real_escape_string($clef_activation).'", NOW())';
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
			
			// Envoi du mail d'activation
			$sujet = "Activation de votre compte utilisateur";
							 
			$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
			$message .= "http://" . $_SERVER["SERVER_NAME"];
			$message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
			$message .= "&clef=" . $clef_activation;
								  
			// Si une erreur survient
			if(!@mail($_POST['email'], $sujet, $message)) {
					
			    $message = "Une erreur est survenue lors de l'envoi du mail d'activation \n";
			    $message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
			}
			else {
                                  
			     // Message de confirmation
			     $message = "Votre compte utilisateur a correctement été créer \n";
			     $message .= "Un email vient de vous être envoyer afin de l'activer";
			}
			session_start();
			$_SESSION['pseudo'] = $_POST['pseudo'];
			header('Location: membre.php');
			exit();
				
			}
			else {
			     $erreur = 'Un membre possède déjà ce login.';	
			}	
	
		}
	}
	else {
	     $erreur = 'Au moins un des champs est vide.';
	}
}
?>

Bref..?

Avant que je décide d'assembler un nouveau bout de prise de tête (clef activation et email d'activation), mon formulaire et ma base fonctionnaient à merveille, au point de penser que ma base et mon code étaient fait l'un pour l'autre, mais voilà depuis il y a péril en là demeure....

Ma question est simple et concis :

OU EST LE BUG..? Et qu'elles sont les corrections à apporter

Merci d'avance de votre aide et j'espère que mes soucis serviront à autruis.......

Re: création espace membre

Posté : 26 août 2011, 22:16
par xTG
$sql contient une requête qui préconise 5 champs (pseudo, password, email, clef_activation, date_enregistrement) alors que tu y insères 6 valeurs (valeur url).

Re: création espace membre

Posté : 27 août 2011, 04:19
par lezarts
Merci man,

J'ai rajouté le champs manquant (url) mais toujours le même message d'erreur apparaît....

Encore merci

Re: création espace membre

Posté : 27 août 2011, 10:12
par xTG
Remets à jour le code qu'on voit ce que tu as fait.

Re: création espace membre

Posté : 27 août 2011, 13:07
par lezarts
Voilà man,

Mon code remis à jour
<?php
header('Content-type: text/html; charset=UTF-8');

// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	
	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
	if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['password']) && !empty($_POST['password'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['url']))) {
		
		// Vérification de la validitée des champs
        if (!preg_match('#^[A-Za-z0-9_]{4,20}$#', $_POST['pseudo'])) {
			
			$erreur = "Votre pseudo doit comporter un minimum de 4 caractéres,<br /><br />L'utilisation de l'underscore est autorisée."; 
		}
		elseif (!preg_match('#^[A-Za-z0-9]{6,30}$#', $_POST['password'])) {
			
			$erreur = "Votre mot de passe doit comporter un minimum de 6 caractéres.";
		}
		elseif ($_POST['password'] != $_POST['pass_confirm']) {
			
			$erreur = "Les 2 mots de passe sont différents.";
		}
		elseif (!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$#',$_POST['email'])) {
			
			$erreur = "Votre adresse e-mail n'est pas valide";
		}
		else {
			
			$database = mysql_connect ('localhost', 'root', '');
			mysql_select_db ('espace_membres', $database);
			// on recherche si ce login est déjà utilisé par un autre membre
			$sql = 'SELECT count(*) FROM comptes_utilisateurs WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
			$data = mysql_fetch_array($req);
			
			// Génération de la clef d'activation
			$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
			$caracteres_aleatoires = array_rand($caracteres, 10);
			$clef_activation = ('');
							 
			foreach($caracteres_aleatoires as $i) {
						
				$clef_activation .= $caracteres[$i];
			}		
			
			if ($data[0] == 0) {
				$sql = 'INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement) VALUES("", "'.mysql_real_escape_string($_POST['pseudo']).'", "'.mysql_real_escape_string(sha1($_POST['password'])).'", "'.mysql_real_escape_string($_POST['email']).'", "'.mysql_real_escape_string($_POST['url']).'", "'.mysql_real_escape_string($clef_activation).'", NOW())';
				mysql_query($sql) or die('Erreur SQL !</br>'.$sql.'<br />'.mysql_error());
			
				// Envoi du mail d'activation
				$sujet = "Activation de votre compte utilisateur";
					 
				$message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
				$message .= "http://" . $_SERVER["SERVER_NAME"];
				$message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
				$message .= "&clef=" . $clef_activation;
								  
					// Si une erreur survient
				if(!@mail($_POST['email'], $sujet, $message)) {
					
					$message = "Une erreur est survenue lors de l'envoi du mail d'activation \n";
					$message .= "Veuillez contacter l'administrateur afin d'activer votre compte";
				}
				else {
                                  
					// Message de confirmation
					$message = "Votre compte utilisateur a correctement été créer \n";
					$message .= "Un email vient de vous être envoyer afin de l'activer";
				}
					session_start();
					$_SESSION['pseudo'] = $_POST['pseudo'];
					header('Location: membre.php');
					exit();
			}
			else {
				$erreur = 'Un membre possède déjà ce login.';	
			}	
	
		}
	}
	else {
			$erreur = 'Au moins un des champs est vide.';
	}
}
?>

<html>
<head>
<title>Inscription</title>
</head>

<body>
<div>
<form action="inscription02.php" method="post">
<h1>Inscription à l'espace membre :</h1>
<fieldset>
<p><label for="pseudo"><span id="aster">*&nbsp;</span>Pseudo :</label><input type="text" name="pseudo" value="<?php if (isset($_POST['pseudo'])) echo htmlspecialchars(trim($_POST['pseudo'])); ?>"></p>
<p><label for="pass"><span id="aster">*&nbsp;</span>Mot de passe :</label><input type="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlspecialchars(trim($_POST['password'])); ?>"></p>
<p><label for="pass_confirm"><span id="aster">*&nbsp;</span>Confirmez mot de passe :</label><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlspecialchars(trim($_POST['pass_confirm'])); ?>"></p>
<p><label for="email"><span id="aster">*&nbsp;</span>Votre adresse mail :</label><input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlspecialchars(trim($_POST['email'])); ?>"></p>
<p><label for="url">Votre site web :</label><input type="text" name="url" onFocus="this.value='http://'" value="<?php if (isset($_POST['url'])) echo htmlspecialchars(trim($_POST['url'])); ?>"></p>
<p><input type="submit" name="inscription" value="Inscription" id="bouton"><input type="reset" value="effacer" id="bouton"></p>
</form>
</fieldset>
<p><span id="note2">Note :</span> Les champs avec un <span id="aster">*</span> doivent obligatoirement être remplis.</p>
<p><?php if (isset($erreur)) echo $erreur; ?></p>
</div>
</body>
</html>
[/size]

Comme dit précédement avant que je rajoute le code pour la clef d'activation et le email d'activation, et que je modifie la base en rajoutant les colonnes clef_activation et compte_actif, tout fonctionnait et tout était enregistré dans ma base..? Mais depuis il y a toujours cet enfoiré de :

Message d'erreur
Erreur SQL !
INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement) VALUES("", "qqqqqqqqq", "7c4a8d09ca3762af61e59520943dc26494f8941b", "[email protected]", "http://", "acdf123458", NOW())
Column count doesn't match value count at row 1
Tout ce qui qui se trouve inscrit dans VALUES et que j'ai inséré dans les champs de mon formulaire, devrait être inscrite dans ma base..? Et de plus ce message m'empéche de savoir si le code du mail d'activation fonctionne..? Ha que coucou..

Dans l'attente de trouver la solution merci...

Re: création espace membre

Posté : 27 août 2011, 13:46
par moogli
heu a tu compté les champs que indique comme étant ceux a remplir (pseudo, password, email, url, clef_activation, date_enregistrement) et les valeurs que tu fournis ?
( pseudo, password, email , url , clef_activation, date_enregistrement)
("", "ssssss", "7c4a8d09ca3762af61e59520943dc26494f8941b", "[email protected]", "", "bd024569" , NOW())

comme ça tu devrais mieux comprendre XD

enlève les deux première " et la virgule qui va avec

@+

Re: création espace membre

Posté : 27 août 2011, 14:22
par lezarts
Merci moogli,

Maintenant cela fonctionne et tout s'enregistre dans la base, bravo et un GRAND MERCI...

Mais comme je l'ai écrit dans des messages précédent maintenant c'est le mail qui ne s'envoi pas...?

Houps.... encore de quoi m'occuper pour un temps certain...... Mais quand même..? A petit pas je progresse et merci à ceux qui mon apporté leur soutient......

Bon je vais essayer de savoir le pourquoi du comment de la chose et @+

Re: création espace membre

Posté : 27 août 2011, 16:41
par Boro64
Merci moogli,

Mais comme je l'ai écrit dans des messages précédent maintenant c'est le mail qui ne s'envoi pas...?
C'est moi, ou tu n'a pas fait appel à la fonction mail ???? et l'@ devant la fonction mail empêchera l'affichage des (éventuelles!) erreurs....
// Envoi du mail d'activation
                                $sujet = "Activation de votre compte utilisateur";
                                         
                                $message = "Pour valider votre inscription, merci de cliquer sur le lien suivant :\n";
                                $message .= "http://" . $_SERVER["SERVER_NAME"];
                                $message .= "/activer-compte-utilisateur.php?id=" . mysql_insert_id();
                                $message .= "&clef=" . $clef_activation;
                                                                 
                                        // Si une erreur survient
                                if(!@mail($_POST['email'], $sujet, $message)) {

Re: création espace membre

Posté : 27 août 2011, 17:28
par lezarts
Merci man,

Pour les remarques et j'ai remodéliser le email mais point n'y fait..? Les infos sont bien enregistrer dans la base....

Mais les messages qui devraient s'afficher normalement, soit en qu'à d'erreur ou soit si tout se passe correctement donc..? comme je m'envoi le email je devrais recevoir un mail pour activer le compte, et avoir au bas de mon formulaire un message positif ou négatif, jusque là on est d'accord....

Voici le code que j'ai remodélisé pour l'envoi du mail de confirmation ne fonctionne pas....
<?php
<?php
header('Content-type: text/html; charset=UTF-8');

// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	
	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
	if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['password']) && !empty($_POST['password'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['url']))) {
		
		// Vérification de la validitée des champs
        if (!preg_match('#^[A-Za-z0-9_]{4,20}$#', $_POST['pseudo'])) {
			
			$erreur = "Votre pseudo doit comporter un minimum de 4 caractéres,<br /><br />L'utilisation de l'underscore est autorisée."; 
		}
		elseif (!preg_match('#^[A-Za-z0-9]{6,30}$#', $_POST['password'])) {
			
			$erreur = "Votre mot de passe doit comporter un minimum de 6 caractéres.";
		}
		elseif ($_POST['password'] != $_POST['pass_confirm']) {
			
			$erreur = "Les 2 mots de passe sont différents.";
		}
		elseif (!preg_match('#^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$#',$_POST['email'])) {
			
			$erreur = "Votre adresse e-mail n'est pas valide";
		}
		else {
			
			$database = mysql_connect ('localhost', 'root', '');
			mysql_select_db ('espace_membres', $database);
			// on recherche si ce login est déjà utilisé par un autre membre
			$sql = 'SELECT count(*) FROM comptes_utilisateurs WHERE pseudo="'.mysql_real_escape_string($_POST['pseudo']).'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
			$data = mysql_fetch_array($req);
			
			// Génération de la clef d'activation
			$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
			$caracteres_aleatoires = array_rand($caracteres, 10);
			$clef_activation = ('');
							 
			foreach($caracteres_aleatoires as $i) {
						
				$clef_activation .= $caracteres[$i];
			}		
			
			if ($data[0] == 0) {
				$sql = 'INSERT INTO comptes_utilisateurs(pseudo, password, email, url, clef_activation, date_enregistrement) VALUES("'.mysql_real_escape_string($_POST['pseudo']).'", "'.mysql_real_escape_string(sha1($_POST['password'])).'", "'.mysql_real_escape_string($_POST['email']).'", "'.mysql_real_escape_string($_POST['url']).'", "'.mysql_real_escape_string($clef_activation).'", NOW())';
				mysql_query($sql) or die('Erreur SQL !</br>'.$sql.'<br />'.mysql_error());
			
				$email = ($_POST['email']);
				$login = ($_POST['pseudo']);
				
				// Préparation du mail contenant le lien d'activation
				$destinataire = $email;
				$sujet = "Activer votre compte" ;
				$entete = "From: [email protected]" ;
				// Le lien d'activation est composé du login(log) et de la clé(cle)
				$message = 'Bienvenue sur VotreSite, Pour activer votre compte, veuillez cliquer sur le lien ci dessous ou copier/coller dans votre navigateur internet.<br />
				http://votresite.com/activation.php?log='.urlencode($login).'&cle='.urlencode($clef_activation).'
				---------------
				Ceci est un mail automatique, Merci de ne pas y répondre.';
				// Envoi du mail d'activation
				mail($destinataire, $sujet, $message, $entete) ; 
				
				if (!mail($_POST['email'],$sujet, $message)) {
				// Si une erreur survient
					
					$erreur = "Une erreur est survenue lors de l'envoi du mail d\'activation \n";
					$erreur .= "Veuillez contacter l'administrateur afin d\'activer votre compte";
				}
				else {
                                  
				// Message de confirmation
					$erreur = "Votre compte utilisateur a correctement été créer \n";
					$erreur .= "Un email vient de vous être envoyer afin de l\'activer";
				}
				session_start();
				$_SESSION['pseudo'] = $_POST['pseudo'];
				header('Location: #');
				exit();
				}
			else {
				$erreur = 'Un membre possède déjà ce login.';	
			}	
	
		}
	}
	else {
			$erreur = 'Au moins un des champs est vide.';
	}
}
?>

<html>
<head>
<title>Inscription</title>
</head>

<body>
<div>
<form action="inscription02.php" method="post">
<h1>Inscription à l'espace membre :</h1>
<fieldset>
<p><label for="pseudo"><span id="aster">*&nbsp;</span>Pseudo :</label><input type="text" name="pseudo" value="<?php if (isset($_POST['pseudo'])) echo htmlspecialchars(trim($_POST['pseudo'])); ?>"></p>
<p><label for="pass"><span id="aster">*&nbsp;</span>Mot de passe :</label><input type="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlspecialchars(trim($_POST['password'])); ?>"></p>
<p><label for="pass_confirm"><span id="aster">*&nbsp;</span>Confirmez mot de passe :</label><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlspecialchars(trim($_POST['pass_confirm'])); ?>"></p>
<p><label for="email"><span id="aster">*&nbsp;</span>Votre adresse mail :</label><input type="text" name="email" value="<?php if (isset($_POST['email'])) echo htmlspecialchars(trim($_POST['email'])); ?>"></p>
<p><label for="url">Votre site web :</label><input type="text" name="url" onfocus="this.value='http://'" value="<?php if (isset($_POST['url'])) echo htmlspecialchars(trim($_POST['url'])); ?>"></p>
<p><input type="submit" name="inscription" value="Inscription" id="bouton"><input type="reset" value="effacer" id="bouton"></p>
</form>
</fieldset>
<p><span id="note2">Note :</span> Les champs avec un <span id="aster">*</span> doivent obligatoirement être remplis.</p>
<p><?php if (isset($erreur)) echo $erreur; ?></p>
</div>
</body>
</html>
Tout est enregistré dans ma base mais l'envoi du mail d'activation, bin..? il ne s'envoi pas...