Pages :: 1
Bonjour chers geeks,
Cette article est pour les dévellopeurs web, qui n'a jamais rêvé d'avoir sont propre site internet avec un forum ?
Voici un guide pour débutants et confirmés :
D'abord creez votre site en suivant ce lien
Ensuite téléchargez l'archive en .zip ou en .jar, c'est comme vous voulez
En format archive .zip
En format archive .jar
Après avoir téléchargé l'archive du forum, vous devez la décompresser(l'extraire) et l'envoyer sur le serveur de votre site internet.
Vous devez aussi créer les tables "users", "pm", "categories" et "topics" dans la base de donnée.
Nous passons à la partie plus compliqué...
Voici la requete SQL à effectuer:
-- -- Structure de la table `categories` -- CREATE TABLE `categories` ( `id` smallint(6) NOT NULL, `name` varchar(256) NOT NULL, `description` text NOT NULL, `position` smallint(6) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Structure de la table `pm` -- CREATE TABLE `pm` ( `id` bigint(20) NOT NULL, `id2` int(11) NOT NULL, `title` varchar(256) NOT NULL, `user1` bigint(20) NOT NULL, `user2` bigint(20) NOT NULL, `message` text NOT NULL, `timestamp` int(10) NOT NULL, `user1read` varchar(3) NOT NULL, `user2read` varchar(3) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Structure de la table `topics` -- CREATE TABLE `topics` ( `parent` smallint(6) NOT NULL, `id` int(11) NOT NULL, `id2` int(11) NOT NULL, `title` varchar(256) NOT NULL, `message` longtext NOT NULL, `authorid` int(11) NOT NULL, `timestamp` int(11) NOT NULL, `timestamp2` int(11) NOT NULL, PRIMARY KEY (`id`,`id2`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- Structure de la table `users` -- CREATE TABLE `users` ( `id` bigint(20) NOT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `avatar` text NOT NULL, `signup_date` int(10) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Après avoir fait ça, vous devrez mettre les identifiants de la base de donnée dans le fichier config.php
Ensuite, vous devez vous inscrire sur votre forum. Lorsque se sera fait, modifiez la variable $admin du fichier config.php pour y donner comme valeur le nom d'utilisateur que vous avez utilisé lors de votre inscription. Cette variable indique qui est l'administrateur du site en se basant sur son nom d'utilisateur.
Voilà, votre forum marche maintenant !!!
A tout à l'heure pour un nouvel outil
Voici maintenant un deuxième article cette fois sur les comptes de vues
Imaginez la situation:
-Eh ton site internet, il marche ?
-J'en ai aucune idée...
-AH mdr trop drôle !!! Si ça se trouve ton site, tout le monde le regarde !!!
-Je sais.. mais attend.. il y a un lien sur FR-Minecraft maintenant... par XelaCraft789
Bon bah voilà comment faire:
Alors déjà, il faut s'avoir que le fonctionnement d'un compteur de connectés est très simple, une personne est jugée être connectée pendant les 5 minutes suivant l'ouverture de la dernière page.
Vous pouvez évidement changer cette valeur.
Le script vas utiliser MYSQL.
Dans ce script nous allons utiliser l'adresse IP du visiteur pour le reconnaître. À chaque fois que le visiteur vas ouvrir une page, nous allons changer le timestamp de sa dernière activité au timestamp actuel.
Nous allons aussi supprimer toutes les entrées qui dates de plus de 5 minutes.
Et finalement, nous allons compter le nombre d'entrées.
Creez une table que vous nommerez cpt_connectes avec deux champs IP et timestamp
Vous pouvez aussi le faire automatiquement en exécutant le code SQL ci dessous:
CREATE TABLE `cpt_connectes` (
`ip` varchar(255) collate latin1_german2_ci NOT NULL,
`timestamp` varchar(255) collate latin1_german2_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
Voici le code php/mysql pour faire un compteur de connectés:
<?php
mysql_connect('localhost', 'username', 'password');
mysql_select_db('database');
$dnns = mysql_fetch_array(mysql_query('select count(ip) as nb from cpt_connectes where ip="'.$_SERVER['remote_addr'].'"'));
if($dnns['nb']>0)
{
mysql_query('update cpt_connectes set timestamp="'.time().'" where ip="'.$_SERVER['remote_addr'].'"');
}
else
{
mysql_query('insert into cpt_connectes (ip, timestamp) values ("'.$_SERVER['remote_addr'].'", "'.time().'")');
}
$times_m_5mins = time()-(60*5);
mysql_query('detete from cpt_connectes where timestamp<"'.$times_m_5mins.'"');
$dnns2 = mysql_fetch_array(mysql_query('select count(ip) as nb from cpt_connectes'));
echo 'Il y a actuellement <strong>'.$dnns2['nb'].'</strong> connecté.';
?>
C'est tout pour ce TUTO
Dernière modification par XelaCraft789 (21/04/2015 16:41:25)
Bon bien-sûr,
qui dit forum, dit espace membre, c'est ce qu'on va voir dans ce Tuto
L'espace membre est en .php, cela veut dire que la page varie selon l'utilisateur qui l'utilise.
Par contre, si aucun utilisateurs n'est connecté, la page ne possédera pas de .php
L'espace membre que nous allons faire sera constitué de 6 pages:
Inscription
Connection/Deconnection
Accueil
Modification du profil
Liste des membres
Profil d'un membre
-----------------------------------------------------------------------------------------------------------------------
Tout d'abord téléchargez l'archive suivante en .jar ou en .zip, elle nous servira à la suite,
En format .zip
En format .jar
Commencez par la base de donnée en créant une table utilisateur en téléchargement:
TELECHARGEMENT ICI
Ou bien manuelement:
--
-- Structure de la table `users`
--
CREATE TABLE `users` (
`id` bigint(20) NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`avatar` text NOT NULL,
`signup_date` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
TADAAAA !!!
Bon vous avez la table MAIS... (car il y a TOUJOURS un MAIS !!!) il faut bien sûr que vous soyez inscrit pour pouvoir en profiter,
Vous allez creer un formulaire pour permettre aux utilisateurs de s'inscrire, ils devront simplement entrer leur nom d'utilisateur, leur mot de passe et leur email. Ils peuvent aussi entrer l'adresse de leur image perso.
sign_up.php
ATTENTION !!! CETTE COMMANDE EST TRES LONGUE !!!
<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Inscription</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['avatar'] = stripslashes($_POST['avatar']);
}
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['password']==$_POST['passverif'])
{
//On verifie si le mot de passe a 6 caracteres ou plus
if(strlen($_POST['password'])>=6)
{
//On verifie si lemail est valide
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
//On echape les variables pour pouvoir les mettre dans une requette SQL
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$avatar = mysql_real_escape_string($_POST['avatar']);
//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
if($dn==0)
{
//On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
$dn2 = mysql_num_rows(mysql_query('select id from users'));
$id = $dn2+1;
//On enregistre les informations dans la base de donnee
if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")'))
{
//Si ca a fonctionne, on naffiche pas le formulaire
$form = false;
?>
<div class="message">Vous avez bien été inscrit. Vous pouvez dorénavant vous connecter.<br />
<a href="connexion.php">Se connecter</a></div>
<?php
}
else
{
//Sinon on dit quil y a eu une erreur
$form = true;
$message = 'Une erreur est survenue lors de l\'inscription.';
}
}
else
{
//Sinon, on dit que le pseudo voulu est deja pris
$form = true;
$message = 'Un autre utilisateur utilise déjà le nom d\'utilisateur que vous désirez utiliser.';
}
}
else
{
//Sinon, on dit que lemail nest pas valide
$form = true;
$message = 'L\'email que vous avez entré n\'est pas valide.';
}
}
else
{
//Sinon, on dit que le mot de passe nest pas assez long
$form = true;
$message = 'Le mot de passe que vous avez entré contien moins de 6 caractères.';
}
}
else
{
//Sinon, on dit que les mots de passes ne sont pas identiques
$form = true;
$message = 'Les mots de passe que vous avez entré ne sont pas identiques.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>
<div class="content">
<form action="sign_up.php" method="post">
Veuillez remplir ce formulaire pour vous inscrire:<br />
<div class="center">
<label for="username">Nom d'utilisateur</label><input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="password">Mot de passe<span class="small">(6 caractères min.)</span></label><input type="password" name="password" /><br />
<label for="passverif">Mot de passe<span class="small">(vérification)</span></label><input type="password" name="passverif" /><br />
<label for="email">Email</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="avatar">Image perso<span class="small">(facultatif)</span></label><input type="text" name="avatar" value="<?php if(isset($_POST['avatar'])){echo htmlentities($_POST['avatar'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
<input type="submit" value="Envoyer" />
</div>
</form>
</div>
<?php
}
?>
<div class="foot"><a href="<?php echo $url_home; ?>">Retour à l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
Ouf c'est terminé !!!
On attaque la partie la plus compliquée: La Connection/Déconnection !!!
Si l'utilisateur est connecté, il se deconnecte en supprimant les sessions, sinon, il affiche un formulaire, si la combinaison est bonne, la session pseudo est créée et il sera connecté.
connexion.php
<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Connection</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<?php
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION['username']))
{
//On le deconecte en supprimant simplement les sessions username et userid
unset($_SESSION['username'], $_SESSION['userid']);
?>
<div class="message">Vous avez bien été déconnecté.<br />
<a href="<?php echo $url_home; ?>">Accueil</a></div>
<?php
}
else
{
$ousername = '';
//On verifie si le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//Si le mot de passe es bon, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans la session username et son identifiant dans la session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
?>
<div class="message">Vous avez bien été connecté. Vous pouvez accéder à votre espace membre.<br />
<a href="<?php echo $url_home; ?>">Accueil</a></div>
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'La combinaison que vous avez entré n\'est pas bonne.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<div class="message">'.$message.'</div>';
}
//On affiche le formulaire
?>
<div class="content">
<form action="connexion.php" method="post">
Veuillez entrer vos identifiants pour vous connecter:<br />
<div class="center">
<label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
<label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
<input type="submit" value="Connection" />
</div>
</form>
</div>
<?php
}
}
?>
<div class="foot"><a href="<?php echo $url_home; ?>">Retour à l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
Pfiou !!! Je suis presque fatigué !!!
C'est presque terminé, ne vous inquiétez pas !!!
On va maintenant tout bonnement creer l'Acceuil de votre compte
<?php
include('config.php')
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Espace membre</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<div class="content">
<?php
//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
Bonjour<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>,<br />
Bienvenue sur notre site.<br />
Vous pouvez <a href="users.php">voir la liste des utilisateurs</a>.<br /><br />
<?php
//Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
if(isset($_SESSION['username']))
{
?>
<a href="edit_infos.php">Modifier mes informations personnelles</a><br />
<a href="connexion.php">Se déconnecter</a>
<?php
}
else
{
//Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
?>
<a href="sign_up.php">Inscription</a><br />
<a href="connexion.php">Se connecter</a>
<?php
}
?>
</div>
<div class="foot"><a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
Allez on est chauds !!!
C'est quasi fini, allez, on garde le rythme et on garde le sourire: C'est fini dans quelques lignes !!!
Plus qu'à faire la liste des membres !!!
Vous devez afficher les utilisateurs sous forme de tableau
users.php
<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Liste des utilisateurs</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<div class="content">
Voici la liste des utilisateurs:
<table>
<tr>
<th>Id</th>
<th>Nom d'utilisateur</th>
<th>Email</th>
</tr>
<?php
//On recupere les identifiants, les pseudos et les emails des utilisateurs
$req = mysql_query('select id, username, email from users');
while($dnn = mysql_fetch_array($req))
{
?>
<tr>
<td class="left"><?php echo $dnn['id']; ?></td>
<td class="left"><a href="profile.php?id=<?php echo $dnn['id']; ?>"><?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>
<td class="left"><?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?></td>
</tr>
<?php
}
?>
</table>
</div>
<div class="foot"><a href="<?php echo $url_home; ?>">Retour à l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
Enfin, en dernier, le profil et promis, c'est fini !!!
On affiche les informations d'un utilisateur. Pour savoir de quel utilisateur il sagit, on vas récupérer son idenfiant via la variable $_GET['id']
profile.php
<?php
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>Profil d'un utilisateur</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
</div>
<div class="content">
<?php
//On verifie que lidentifiant de lutilisateur est defini
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
//On verifie que lutilisateur existe
$dn = mysql_query('select username, email, avatar, signup_date from users where id="'.$id.'"');
if(mysql_num_rows($dn)>0)
{
$dnn = mysql_fetch_array($dn);
//On affiche les donnees de lutilisateur
?>
Voici le profil de "<?php echo htmlentities($dnn['username']); ?>" :
<table style="width:500px;">
<tr>
<td><?php
if($dnn['avatar']!='')
{
echo '<img src="'.htmlentities($dnn['avatar'], ENT_QUOTES, 'UTF-8').'" alt="Image Perso" style="max-width:100px;max-height:100px;" />';
}
else
{
echo 'Cet utilisateur n\'a pas d\'image perso.';
}
?></td>
<td class="left"><h1><?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?></h1>
Email: <?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?><br />
Cet utilisateur s'est inscrit le <?php echo date('d/m/Y',$dnn['signup_date']); ?></td>
</tr>
</table>
<?php
}
else
{
echo 'Cet utilisateur n\'existe pas.';
}
}
else
{
echo 'L\'identifiant de l\'utilisateur n\'est pas défini.';
}
?>
</div>
<div class="foot"><a href="users.php">Retour à la liste des utilisateurs</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div>
</body>
</html>
C'est termin... Ah bah non !!! Il reste encore à faire un fichier pour pouvoir se connecter à la base de donnée, et non, ce n'est pas fini!
Bon voici le code config.php
<?php
//On demarre les sessions
session_start();
/******************************************************
----------------Configuration Obligatoire--------------
Veuillez modifier les variables ci-dessous pour que l'
espace membre puisse fonctionner correctement.
******************************************************/
//On se connecte a la base de donnee
mysql_connect('hote', 'nomdutilisateur', 'motdepasse');
mysql_select_db('basededonne');
//Email du webmaster
$mail_webmaster = 'example@example.com';
//Adresse du dossier de la top site
$url_root = 'http://www.example.com';
/******************************************************
----------------Configuration Optionelle---------------
******************************************************/
//Nom du fichier de laccueil
$url_home = 'index.php';
//Nom du design
$design = 'default';
?>
Vous pouvez bien sûr changer les paramètres selon vos goûts
Petite démo
NON !!! C'est déjà terminé !!!
A bien tôt sur ce BEAU topic crée euh par... MOI
Chao les gens et RedStone is GOOOOD !!!
Vous avez TOUT crée, mais votre site n'est pas de protection contre le spam, tout le monde peut creer un compte, il faut alors un outil que google demande pour tout ses sites: Le captcha
C'est une image contenant une chaine de caractère que l'utilisateur doit recopier de façon à prouver qu'il est un humain et non un système automatisé. Pour qu'un captcha soit bon, l'image doit être difficilement déchiffrable par un ordinateur utilisant des techniques qui détectent les caractères sur l'image, mais l'image doit aussi être facilement déchiffrable par les humains.
Le fonctionnement d'un système de captcha est simple. Sur le formulaire, vous allez mettre l'image captcha, cette image contiendra les caractères aléatoires que l'utilisateur devra recopier. Lorsque l'utilisateur validera le formulaire, les caractères qu'il a copié seront comparés à ceux qui étaient sur l'image(ils auront étés stockés dans les sessions).
L'image que nous allons générer doit être aléatoire. Les lettres, leur couleurs et leur angle seront déterminés aléatoirement à l'aide de la fonction php: rand
Nous allons utiliser la police de caractère Liberation Sans:
Téléchargement ici
Pour rendre l'image plus complexe, nous allons aussi mettre des lignes de position, de taille et de couleurs différentes.
Voici le code pour faire l'image du système de captcha:
captcha.php
<?php
//Le nombre de caracteres
$ncarac = 5;
//Le nombre de lignes
$nlignes = 7;
//Les caractres qui seront utilises
$carac = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$nca = count($carac);//On determine le nombre de lettres possible: 26
//Police de caractere a utiliser
$font = 'liberation_sans.ttf';
//On determine les tailles de limage
$x = $ncarac*30+10;
$y = 40;
//On cree limage
$img = imagecreatetruecolor($x,$y);
//On remplit limage avec du blanc
imagefill($img,0,0,imagecolorallocate($img, 255,255,255));
//On ajoute les caracteres
$chaine = "";
for($i=1;$i<=$ncarac;$i++)//On ajoute $ncarac caracteres
{
$c = $carac[rand(0,($nca-1))];//Le nouveau caractere sera choisi aleatoirement
imagettftext($img, 25, rand(-10,10), (($i-1)*30)+5, 30, imagecolorallocate($img, rand(0,100), rand(0,100), rand(0,100)),$font, $c);//On ajoute le caractere sur limage
$chaine .= $c;//On ajoute le nouveau caractere a la chaine
}
//On ajoute les lignes
for($i=1;$i<=$nlignes;$i++)//On ajoute "$nlignes" lignes
{
imagesetthickness($img,rand(1,2));//On specifie lepaisseur de la ligne
imageline($img,rand(0,$x),rand(0,$y),rand(0,$x),rand(0,$y), imagecolorallocate($img, rand(0,100), rand(0,100), rand(0,100)));//On ajoute la ligne
}
//On stoque la chaine de caractere dans les sessions
session_start();
$_SESSION['captcha'] = $chaine;
//On affiche l'image finale
header('Content-type: image/png');
imagepng($img);
?>
Il faut aussi un code pour le formulaire, le voici:
formulaire.php
<?php
session_start();
//On verifie si le formulaire a ete valide
if(isset($_POST['nom'], $_POST['captcha'], $_SESSION['captcha']))
{
//On compare le code entre par lutilisateur avec celui de limage(qui avait ete stoque dans les sessions)
if(strtolower($_POST['captcha'])==strtolower($_SESSION['captcha']))
{
unset($_SESSION['captcha']);
echo '<strong style="color:#00bb00;">Le code que vous avez entré est le bon.</strong>';
$form = false;
//Ici, vous pouvez envoyer les donnes du formulaire
}
else
{
echo '<strong style="color:#bb0000;">Le code que vous avez entré est mauvais, veuillez réessayer.</strong>';
$form = true;
}
}
else
{
$form = true;
}
//Si $form vaut true, le formulaire sera affiche
if($form)
{
?>
<form action="formulaire.php" method="post">
Votre nom:<input type="text" name="nom" value="<?php if(isset($_POST['nom'])){echo htmlentities($_POST['nom']);} ?>" /><br />
Veuillez recopier le code cidessous:<input type="text" name="captcha" /><br />
<img src="captcha.php" alt="CAPTCHA" /><br />
<input type="submit" value="Envoyer" />
</form>
<?php
}
?>
Et là, thoriquement, plus aucun spam ne sera sur votre site
Pages :: 1