• Aucun résultat trouvé

Retour sur l'avatar

Dans le document Créer son forum de toutes pièces (Page 31-34)

echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';

} }?>

</div>

</body>

</html>

Comment ça marche, ce code ? Notre variable $i nous indique le nombre d'erreurs, c'est pourquoi on a juste à vérifier qu'elle soit égale à 0 pour savoir si tout colle.

Et si jamais ce n'est pas le cas, on affiche tous les messages d'erreurs qu'on a créés auparavant.

Une fois que le tout est bouclé, on peut dire qu'on a terminé le système de login et d'inscription du forum. L'avantage par rapport à un forum comme phpbb, c'est que rien ne vous empêche de mettre les champs de connexions dans le menu plutôt que de mettre un lien (bon, c'était possible aussi avec phpbb, mais un peu plus compliqué ; puis là, vous savez comment marche votre système

).

Retour sur l'avatar

Revenons un peu sur cette ligne : Code : PHP

<?php

$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):'';

?>

On s'occupe ici de déplacer l'avatar qui a été uploadé. Malheureusement pour vous, la fonction move_avatar n'est pas native de php, il va falloir la créer, pour cela, pas de panique, rendez-vous sur le fichier function.php.

La fonction move_avatar va prendre en argument la variable de type array $avatar qui contiendra les infos sur le fichier à uploader (je vous renvoie sur le tuto de DHKold pour plus de précisions), elle va renvoyer un message si l'upload s'est bien passé et s'occupera d'enregistrer le fichier.

Code : PHP

<?php

function move_avatar($avatar)

{ $extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));

$name = time();

$nomavatar = str_replace(' ','',$name).".".$extension_upload;

$name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;

move_uploaded_file($avatar['tmp_name'],$name);

return $nomavatar;

}?>

Dans un premier temps, on lui donne le nom du timestamp actuel afin que celui-ci soit unique. Ensuite, on s'occupe d'ajouter l'extension. Le tout, nom de l'image + extension, est envoyé dans la base de données. Enfin, la fonction

move_uploaded_file() déplace l'image dans le dossier images/avatars.

Il faut donc que vous ayez créé un dossier avatars dans le dossier images. Pensez donc à mettre un CHMOD correct (à priori, sous windows, il est inutile de changer quoi que ce soit).

Améliorations

Maintenant, avant de se lancer dans la suite, je vais donner quelques améliorations que vous pouvez rajouter si vous en avez envie. Cela dit, elles ne sont pas nécessaires au fonctionnement même du forum.

Mail

Envoyez un mail au membre qui vient de s'inscrire : pour cela, il suffit d'utiliser la fonction native mail de php. Si vous voulez plus de détails, regardez le code suivant :

Code : PHP

<?php //Message

$message = "Bienvenue sur mon super forum !";

//Titre

$titre = "Inscription à mon super forum !";

mail($_POST['email'], $titre, $message);

?>

Vous pouvez rappeler dans ce mail le mot de passe et le pseudo.

L'usage de la fonction mail est limité à un nombre d'envois par mois chez certains hébergeurs.

Vous pouvez également faire un système d'enregistrement avec vérification par email de façon à ce que les membres n'entrent pas n'importe quoi comme adresse.

Un moyen de le faire est de créer au moment de l'inscription un code qu'on envoie ensuite par mail au futur membre, on ajoute du même coup 2 champs à la table forum_membres, un champ verif qui vaut 0 par défaut et qui sera mis à un une fois la vérification faite, et un champ code qui contiendra notre code.

On lui demande alors de se rendre sur une page spéciale du type /forum/verif_inscription.php?

code=012457505 puis réaliser la requête suivante : Code : PHP

<?php

UPDATE forum_membres SET membre_verif = 1 WHERE membre_code = :code

?>

cookie

Autre amélioration importante : pour l'instant, on utilise les variables de session pour reconnaître le membre ; rien ne vous empêche d'utiliser les cookies. Pour cela, il suffit de rajouter une checkbox en dessous du formulaire d'inscription :

Code : HTML

<label>Se souvenir de moi ?</label><input type="checkbox"

name="souvenir" /><br />

Ensuite, vous devez créer un cookie dans la page connexion.php.

Code : PHP

<?php

if (isset($_POST['souvenir'])) {$expire = time() + 365*24*3600;

setcookie('pseudo', $_SESSION['pseudo'], $expire);

}?>

Vérifiez bien que ce bout de code a été placé dans la partie où vous savez que le pseudo et le mot de passe entrés sont les bons !

Ensuite, si l'utilisateur a bien coché l'option Se souvenir de moi, il sera automatiquement connecté en arrivant sur le site. Il faut donc rajouter dans toutes les pages (utiliser la page debut.php pour ça) ce bout de code :

Code : PHP

<?php

if (isset ($_COOKIE['pseudo']) && empty($id)) {$_SESSION['pseudo'] = $_COOKIE['pseudo'];

/* On créé la variable de session à partir du cookie pour ne pas avoir à vérifier 2 fois sur les pages qu'un membre est connecté. */

}if (isset ($_COOKIE['pseudo']) && !empty($id)) {//On est connecté

}if (!isset ($_COOKIE['pseudo']) && empty($id)) {//On n'est pas connecté

}?>

Ça vous évitera d'avoir à modifier tous vos codes .

Et pour la déconnexion, il faut penser à supprimer aussi le cookie (sinon, on resterait connecté).

Code : PHP

<?php

session_start();

if (isset ($_COOKIE['pseudo'])) {setcookie('pseudo', '', -1);

}

session_destroy();

?>

Comme cela, on met une date d'expiration négative au cookie, et ça marche !

Il faut également entrer le mot de passe dans le cookie afin d'éviter qu'une personne mal intentionnée modifie son cookie en y inscrivant le pseudo d'un autre membre.

Signature

Vous pouvez également autoriser les balises de mise en forme du texte (l'équivalent du bbcode) et les smilies dans la signature. Toutefois, vous n'allez pas pouvoir le faire avant d'avoir créé ce "code". Donc, patience .

Dans le document Créer son forum de toutes pièces (Page 31-34)