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...
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 :
Le code php : Le else qui me pose prblème se trouve juste après $data = mysql_fetch_array($req);Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\site\Lezarts\000_membres\membre_test\inscription02.php on line 33
<?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">* </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">* </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">* </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">* </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...