All posts in “Codage”

[#1]Créer un compteur en CSS

Hop ! J’ai parlé la semaine dernière d’une série d’astuces qui porterait sur tout ce qui touche au web sur mon twitter. Je vous présente donc le premier volume : la propriété counter en css !  Amusez-vous bien !

Utilisation de cette propriété :

  • Slider
  • Présentation
  • Mise en page avec php
  • Javascript(effet grâce aux numéros)
  • etc …
http://www.dailymotion.com/videoxmgr0u

A bientôt !

Installation du zend Framework …

zend

… Une vraie galère !  Sur leur quickstart, les dev’ de Zend nous disent de juste télécharger le Zend Server et ce sera fait, sinon, ajoutez juste le dossier library dans l’include_path du php.ini. Réellement? Ca marche pas !! Bon, ça y est, j’ai fini ma période pas content ^^. Je vais donc essayer de vous expliquer simplement comment installer le Zend Framework sur wamp, et c’est au final assez simple ! C’est parti, suivez le guide !

Téléchargeons et préparons le framework !

Allez sur le site de zend framework, http://framework.zend.com/, cliquez sur le GROS bouton « download now » et télécharger le framework. Pour les besoins du tuto, j’ai pris le full, mais le minimal devrait suffire .Après un interminable temps de téléchargement, décompresser le framework, et ouvrez le dossier (Ca aussi ça prends du temps ^^) , nous nous occuperons de 2 dossiers seulement !

Préparons l’environnement !

Tout d’abord, si vous avez bien la dernière version de wamp en cours ( la 2.1), allez dans le dossier C:\wamp\bin\php\php5.3.4 et ouvrez le fichier php.ini . Une fois cela fait, allez à la ligne 793 (Je ne suis pas sur de cette ligne, chez moi, c’est celle là, mais cela peut varier), vous devriez trouver ça : Vous allez supprimez la virgule devant le « include_path », qui décommentera et rendra active cette directive.

Une fois la directive activée, allez à la racine de votre ordinateur, le dossier C:\ et créez l’arborescence de dossiers suivante :

Enfin, allez dans le panneau ordinateur, faites clique droit->propriétés->paramètres système avancés->variables d’environnement.ensuite, à la fin de la valeur de la variable Path, rajoutez cela :

;C:\wamp\bin\php\php5.3.4;C:\wamp\bin\php\php5.3.4\zend-bin\;

Voilà, la préparation est finie, on installe le framework maintenant !

Dernière ligne droite !

Dans le dossier du framework, prenez le dossier bin, et mettez le dans le dossier C:\wamp\bin\php\php5.3.4\ puis renommez le dossier bin en zend-bin.

Enfin, prenez le dossier Zend qui se trouve dans le dossier library et mettez le dans le dossier C:\php\includes\

C’est fini !

Pour tester si tout à bien marché, lancer la commande (éxécuter->cmd) et tapez zf –help Si vous ne voyez aucune erreur, c’est bon ! Le Zend Framework est installé !

Bon développement !

Créer son portfolio avec Dribbble …

tuto

… est dorénavant possible, grâce à un plugin Jquery, je nomme : jribbble. L’avantage de ce plugin par rapport à l’API « de base » de dribbble est de supprimer une couche d’interaction de données, le JSON, et donc de pouvoir travailler plus vite ! Je vous laisse donc découvrir cette vidéo d’un 40aine de minutes

http://www.dailymotion.com/videoxktv6o

Continue Reading

Les bases du PHP en vidéo

bases-vidéo

Re-bonjour, comme promis, j’ai fait une vidéo pour vous expliquer les bases du PHP, en 3-4 parties : les mêmes que celle de l’article du même nom, mais avec des petits bonus ! Cette vidéo dure environ 45 minutes, filmée en HD (héhé ^^ ), et, j’espère, un son meilleur que les précédentes vidéos (en tout cas, les différents visionnage que j’ai fait semble indiquer que c’est le cas ). P.S : Il y a un peu (beaucoup) de baratin, et quelques petites erreurs: Excusez-moi, ça faisait longtemps que je n’avais pas tourner de tutos et je venais de recommencer a coder en php, mais ce n’est pas pour autant que le tuto n’est pas valable !!!

Bon visionnage !

http://www.dailymotion.com/videoxik2fm

Si vous avez des questions ou autres, n’hésitez pas : Commentez !

Salut !

Les bases du PHP

bases

Salut tout le monde ! Ca va bientôt faire deux mois que je n’aurais publié aucun article, le manque de temps se fait ressentir !En tout cas, aujourd’hui, je reviens avec un p’tit tuto sur les bases du php. Bien sur, ce tuto sera complété par un tuto vidéo, avec la toute nouvelle intro de site-waide . A toute suite !

Sommaire

  1. Php, pourquoi, comment,où?
  2. Les variables
  3. Les conditions
  4. [Théorie]Les différents systèmes de stockage

C’est parti !

1- Php, pourquoi, comment, où?

Le php est un langage côté serveur, c’est à dire, que contrairement au html, au css, au javascript, il lui faut l’intervention d’une machine autre que votre ordinateur pour faire fonctionner ce langage. Pour utiliser le php, il nous faudra toujours coder (je sais que vous aaaaadorez ça :p ), mais avec un nouveau language, dont je vous laisse deviner le nom … LE PHP ! Il est par contre nécessaire de préciser que les « conventions » (la forme, l’utilisation) du html ne s’applique surtout pas au php. Le html est un langage de balises, le php, lui, est un langage de fonctions, algorithmique : Chaque étape se passe en fonction d’une autre. (Merci aux gens d‘innaStudio pour m’avoir fait « découvir » cette subtilité du langage!)

Nous avons donc affaire à un langage … nouveau ! (dans tout les sens du terme !). Le php, du fait de son exécution côté serveur, est un langage « dynamique » :  Pour le html, une page = un contenu, pour le php, une page = une infinité de contenu (ok, j’exagère un peu ^^ ). Enfaite, c’est surtout, qu’en créant une seule page (exemple, index.php), nous pouvons afficher tout les articles d’un blog grâce a des liens, nous saurons quel lien affiché grâce à l’url de la page. Voilà donc le côté « dynamique » : En fonction d’un paramètre, on affiche un contenu. En html, il n’y a pas de paramètre(s) à passer, si on veut en avoir un, il faut créer toutes les pages d’un blog une par une et faire tout les liens manuellement, or, en php, tout cela est fait grâce à une seule page ! (vous remarquerez que je ferais pas mal référence au html et au système de blog dans cet article !). Pour dire au serveur que l’on utilise du php, notre document dois commencer par « <?php » et se finir par « ?> » et utiliser l’extension .php (ex : index.php).

En php, une des notions la plus importantes, est les variables, je vous donne donc rendez-vous dans le chapitre suivant pour comprendre leur utilité et leur fonctionnement !

2- Les variables

Une variable, et cela dans tout les langages que vous rencontrerez, est une partie de mémoire. Cette partie de mémoire vous sert à stocker uniquement des chiffres ou des caractères alphanumériques. En php, une variable se déclare sous la forme suivante : $nomDeLaVariable = « Sa valeur »; . On note donc le « $ » devant le nom de la variable, le « = » qui sert à assigner une valeur à cette variable et le « ; » qui sert à dire au serveur que l’instruction est finie. Comme un exemple parle plus que des dizaines de phrases, en voici un :


<?php

$bar = 0; // Pour assigner un chiffre, on ne mets pas de guillemets

$foo = "site-waide.fr"; // Pour assigner des caractères alphanumériques, on DOIT utiliser les guillemets.

?>

Php sert aussi à « jouer » avec ces variables, par exemple, a la place de mettre une url en dur dans une balise « a », vous mettez la variable.


<?php

$foo = "http://site-waide.fr";

?>

<a href="<?php echo $foo; ?>"></a>

Décortiquons cela : Nous déclarons la variable $foo qui contient l’url de site-waide. Nous fermons ensuite le php pour créer une balise de lien, dans laquelle nous rouvrons le php pour le paramètre href, que nous remplissons avec la variable foo. Nous refermons a la fois la balise a et le php .

Autre chose à savoir, une variable, si elle est re-déclarée, aura comme valeur celle assigner à ça dernière déclaration, exemple :


<?php

$foo = 0; // la variable vaut 0

$foo = 1; //la variable vaut 1

//La variable, au final, vaut 1

?>

Voilà, vous connaissez la « base » des variables, leurs utilisation, leurs règles etc … Passons aux boucles !

3- Les conditions

Les conditions sont très importantes en php, dans ce chapitres, je vous en montrerai 2 sur 3 : if et else. (si, sinon)

Commençons par la condition « if »: Cette condition est la base, elle permet de créer une condition de type : si … alors …, exemple, si foo = 2, alors tu affiches foo vaut 2 ! Mise en pratique:


<?php

$foo = 2;

if($foo = 2){

echo 'foo vaut 2 !';

}

Ici, vous avez la base des conditions, si foo aurait valu autre chose que 2, rien ne serait afficher, et nous allons justement remédier à cela grâce à la « condition » else, sinon.

Nous allons dire a php que si notre condition est fausse (que foo est différent de 2), d’afficher « foo ne vaut pas 2″, il suffit juste de rajouter après le bloc que nous venons de faire, un truc du genre : sinon affiche « foo ne vaut pas 2″. Mise en pratique :

</pre>
<?php

//bloc d'avant

else{

echo 'foo ne vaut pas 2';

}

?>
<pre>

Et voilà, la condition est bouclée ! Sympa non ? On vas maintenant passer a un petit paragraphe vous parlant des différents types de stockage !

4- [Théorie]Les différents systèmes de stockage

Pour moi, il existe principalement deux types de stockage, le premier étant la base de données (site-waide.fr utilise ce système). C’est une sorte de logiciel qui enregistre les données dans des meubles, qui contiennent différents tiroirs dans lesquels vous ferez des requêtes pour les récupérer. Ce système est utile lorsqu’il faut sotcker beaucoup de données, mais lorsque nous voulons juste stocker 2-3 bétises, je viendrait plutôt à utiliser le xml !

Ce système se présente sous la forme d’un fichier balisé, que nous parserons pour récupérer le contenu (je vous invite à vous informer sur ce terme, assez dur à définir ! Si quelqu’un a une définition à la fois simple et complètes, je prends !), ce fichier ce présente sous la forme d’un succession de balises de type : <titre></titre><contenu></contenu> etc .. Si vous suivez l’actu du blog, vous aurez vu que j’ai publié un kit graphique customisable, basé sur ce système.

Voilà voilà, cette partie était très théorique, car elle fera l’objet d’un tutoriel vidéo !

Je tiens à vous dire que cette présentation est très simple, PHP ne se borne pas a ça. Par exemple, dans les variables, je n’ai pas abordé les superglobales, les POST et GET etc .. Ne vous inquiètez pas, il y a de quoi bosser encore !

Allé, n’hésitez pas à poser vos questions et à faires des remarques !

Salut !

Allé, puisque je suis sympa, et pour les plus courageux, l’intro de site-waide, faites par mes soins sur after effect :

http://www.dailymotion.com/videoxidshg

Modifier la couleur de la séléction en CSS

code

Bonjour à tous, petite astuces CSS du jours, je vais vous apprendre à modifier la couleur de la séléction en CSS ! Pour ça c’est très simple il suffit d’ajouter ça dans votre code CSS !

[Note de sitewaide]

Attention, c’est un code CSS3, comme vous devez le savoir, le css3 n’est pas implanté sur tout les navigateurs.

De plus, chaque navigateur, même si cela à tendance à diminuer, utilise son propre préfixe (-moz, -k, -webkit etc…. Cette utilisation commence à diminuer sur les navigateurs basés sur webkit (Google Chrome et Safari).

[/note de sitewaide]


::-moz-selection { /* Pour firefox */
background:red;
color:white;
}
::selection { /* Pour les autres */
background: red;
color:white;
}

 

On va décrypter un peu le code tout d’abord pour que ce soit compatible avec Firefox il faut

mettre la balise ::-moz-selection et pour les autres navigateur (Attention, je n’ai pas testé

qu’avec Google Chrome) il suffit de mettre ::selection. Ensuite, il faut définir la couleur

de la sélection donc facile on utilise la propriété background (ou background-color) et comme

valeur vous mettez la couleur que vous voulez, et si vous voulez que votre texte soit un peu

plus lisible (en fonction des couleurs) je vous conseil de changer la couleur de votre texte

grâce à la propriété color.

Une démonstration est disponible ici !

Générer des extraits d’articles

Salut à tous !

Aujourd’hui on vas faire un petit truc en php, qui vas vous permettre de rendre plus « pros » vos système de news / blog etc..

En effet, je ne sais pas vous, mais avoir l’article en entier sur une page d’accueil, ça manque de « classe ».

Je vais donc vous apprendre à raccourcir vos billets en extraits et y rajouter un lien.

Pour ça, on part d’une base de données qui contient deux billets et une page show.php qui affiche l’article en fonction de l’id passé en paramètre du type ?id=:id .

Je vous mets  cela au téléchargement :

Téléchargement

Téléchargez extraits.zip

Lorsque vous dézippez ce fichier, vous pouvez y voir deux fichiers : show.php, qui contient l’affichage de l’article en entier et sql.txt, qui lui contient la base de données. Pour l’utiliser, allez sur http://localhost/phpmyadmin et créez une base que vous nommerez tutoextrait.

Ensuite, allez dans l’onglet « importer » et rensignez l’adresse du fichier sql.txt.

Si vous regardez la structure, vous apercevrez un champ « extrait ». Je vous montrerai a la fin comment on va le gérer.

Nous voilà donc fin prêt à aborder pleinement ce tuto !

Donc, tout d’abord, on créer un fichier index.php, dans ce tuto on oubliera le html pour se concentrer sur le php.

Ouvrez donc les balises php (<?php   ?> ) et nous allons nous connecter à la base de données en utilisant PDO :


try{

$pdo = new PDO("mysql:host=localhost;dbname=tutoextrait", "root", "" ) ;

$query = "SELECT id, contenu, titre FROM billets"; // Requète

$exec = $pdo->query($query);

while($fetch = $exec->fetch()){

//Affichage des articles

echo "<h1>".$fetch['titre']."</h1>";

echo "<p>".$fetch['contenu']."</p>";

}

}catch(Exception $e){

die("erreur SQL :".$e->getMessage());

}

Voilà, nous sommes donc connectés à la base de données, et nous avons affiché nos articles.

Comme vous pouvez le voir, nous voyons entièrement le contenu de nos articles.

Nous allons maintenant nous intéresser à la façon dont nous allons procéder :

  • Tout les, disons 50 caractères pour l’exemple, nous devons couper l’article, rajouter 3 petits points et mettre un lien « lire la suite ».
  • Nous opérerons sur la variable $exec['contenu'] car elle contient le contenu du billet
  • Il existe sûrement une fonction déjà prête de PHP pour faire ce que l’on veut.

Donc, en effet, il existe une fonction PHP, nous pas qui fait des extraits, mais qui coupe des chaines de caractères (ce qui revient au même, je vous l’avoue ^^) : substr

On voit donc que cette fonction s’utilise avec 3 paramètre dans notre cas : « string » => la chaine de caractère à couper; « start » => Le rang de départ; « end » => Où stoppe le « coupage » de la chaîne.

Je vous laisse donc imaginer ce que ça pourrait donner en php…

[...]

Correction !


<?php

//Connexion à la bdd plus haut

echo "<h1>".$fetch['titre']."</h1>";

$contenu = substr($fetch['contenu'], 0, 50);

echo "<p>".$contenu."</p>";

?>

Voilà ! On a rempli notre rôle « principal » : Créer un extrait à partir d’un billet de blog.

Maintenant, on vas rajouter quelques petites choses : On vas commencer par les 3 petits points après l’extrait, pour dire qu’il y a une suite.

Après la variable contenu, on vas incrémenter cette variable :

<?php

$contenu = substr($fetch['contenu'], 0, 50);

$contenu .= " ...";

?>

On vient donc d’incrémenter cette variable de 3 petits points, pour faire comprendre au lecteur qu’il y a une suite à l’article.

Maintenant, nous allons rajouter un lien « lire la suite ». Je vous rappelle juste la structure du lien pour voir le billet en entier : [votre url]/show.php?id=:id

Maintenant, c’est parti, voilà comment faire, toujours grâce à l’incrémentation :

<?php

//Code plus haut (connexion + deux variables contenu)

$contenu .= '<a href="show.php?id='.$fetch['id'].'" > Lire la suite </a>';

?>

Voilà, on a rajouté un lien fonctionnel sur le lire la suite .

On a donc bien fini notre objectif principal : créer un extrait d’un billet a partir de ce billet.

Maintenant, on vas passer au premier « bonus » : le champ extrait se trouvant en base de données, il sert à pouvoir définir un extrait personnalisé, exemple : vous présentez un artiste, vous pouvez créer un extrait perso du style « Aujourd’hui, présentation de xxxx, un artiste … » a la place d’avoir un extrait un peu « formaté » du style : « Salut à tous ! deuxième article en période de vacances ! Aujourd’hui, je vais vous présenter xxxx, un artiste … ». Cela fait un peu plus « pro » ! C’est parti !

Tout d’abord, on vas modifier la variable $query de notre script index.php, on doit rajouter le champ « extrait » à aller chercher :

<?php

$query = "SELECT id, contenu, titre, extrait FROM billets";

?>

Ensuite, on vas se retrouver dans la partie affichage des extraits de billets, on vas tester si le champ extrait est vide (NULL) avec une simple condition :

<?php

if($fetch['extrait'] == NULL){

$contenu = substr($fetch['contenu'], 0, 50);

$contenu .= " ...";

$contenu .= '<a href="show.php?id='.$fetch['id'].'" > Lire la suite </a>';

echo "<p>".$contenu."</p>";

}else{

echo "<p>".$fetch['extrait']."</p>";

}

?>

Voilà, c’est fait, tester, le post n°1 affichera l’extrait spécifié dans la base de données alors que le billet n°2 affichera un extrait « auto-généré ».

Maintenant, deuxième bonus : je vais vous passer une classe, que j’ai faite permettant de générer automatiquement tout ce que l’on a fait depuis le début, je vous explique comment l’utiliser  :

@param requete = requete à effectuer

@param from (facultatif) = Numéro du caractère a partir du quel on coupe la chaine

@param end (facultatif) = Numéro au bout du quel on stoppe l’affichage de la chaine

@param from-end = Defaut : 0-120

@param fields : array : 0: id, 1: titre, 2:extrait, 3:contenu,

static function generate($requete, $fields = array(), $from = 0, $end = 120){

Voilà, c’est expliqué, ce sera sur la classe, sur tout ! Si vous avez des questions : commentaires !

Téléchargement

A+ tout le monde

Installer PEAR

pear

Salut

Pour ceux qui ont déjà voulu utiliser un framework (symfony ici en l’occurence), il y a une manière « simple » d’installer son framework, je nommerais PEAR. Enfaite, PEAR marche avec un système de « channels » : Pour installer quelque chose en passant par pear, il faut déjà découvrir le channel et ensuite installé ce qu’on à découvert. Dans la pratique, c’est super simple ! Si, je veux installer quelque chose, j’ai juste à faire :

pear channel-discover url

Et voilà, le channel (je dirais canal maintenant) est découvert, ensuite, on fait :

install qqchose

Et voilà, c’est fini. Rapide non, PEAR s’occupe du téléchargement, de bien placé les fichiers etc.. Maintenant, passons à l’étape problématique, son installation.

En effet, si vous surfez un peu (sur le web, hein) et tapez « problèmes go-pear.bat », vous verrez pas mal de topics !  En effet, il semble qu’avec la dernière version de wamp, pear a un peu de mal à marcher tout seul, on va donc l’aider !

Donc, si vous aller dans le dossier C:\wamp\bin\php\php5.3.0 , vous trouverez un fichier nommé « go-pear.bat » . Double-cliquez dessus. Cela ouvre une invite de commande (nooon, ne partez pas en courant ! :p ), et vous devriez voir apparaître une erreur ! C’est cette erreur que nous allons combattre. Suivez le guide :

1) editez le fichier go-pear.bat et remplacez son contenu par :

</p>
<p>@ECHO OFF<br />
set PHP_BIN=php.exe<br />
%PHP_BIN% -d output_buffering=0 -d phar.require_hash=0 PEAR\go-pear.phar<br />
pause</p>
<p>

Voilà, déjà, vous avez un fichier « bien fait » ^^ .

2) Ensuite, allez dans l’ordinateur (poste de travail) et faites clique droit-> propriétés.

à partir de là, je suis sous windows 7, cela ne devrait pas trop changer pour les versions inférieures, mais je ne pourrais pas vous aider .

Donc, dans le panneau de droite, aller dans paramètres système avancés, une fenêtre vas apparaître. En bas de celle-ci, vous devriez avoir un bouton « variables d’environnement … » (dans l’onglet paramètres systèmes avancés). Cliquez sur ce bouton. Une nouvelle fenêtre s’ouvre, dans celle-ci, vous avez deux panneaux : Un en haut, un en bas : en haut, les variables utilisateur, en bas, les variables systèmes.

Nous allons travailler avec les variables utilisateur (en haut), cherchez la variable PHP_PEAR_INSTALL_DIR. Elle doit avoir la valeur C:\wamp\bin\php\php5.3.0\PEAR\pear .

Il faut que vous changiez cette valeur par celle-ci :  C:\wamp\bin\php\php5.3.0\PEAR

Maintenant, cliquez sur ok (en bas de la fenêtre), toujours sur ok dans l’autre fenêtre et vous pouvez maintenant quitter les fenêtres que je vous ai fait ouvrir. Fermer aussi la ligne de commande.

Rouvrez une ligne de commande, tapez cd C:\wamp\bin\php\php5.3.0\

et .. et .. et utilisez PEAR comme bon vous semble

Voilà, c’est fini, c’est tout simple, mais il faut l’avouer pour un débutant, ce n’est pas simple de changer ce type de réglage, mais on apprend en pratiquant !

Allez, bon codage !

Les cookies en PHP

382-1192221384-Cookies---465fx349f

Bonjour !

Au menu du jour .. des cookies ! (excusez-moi le jeu de mots vaseux ^^ ). Plus sérieusement, on va voir comment utiliser les cookies à travers un exemple pratique : la ré-authentification d’une personne qui s’est identifiée sur notre site et qui à cochée une case. On ne s’occupera pas de la partie traitement, mais juste de celle de la re-connexion et du cookie ! . Commençons :

Je vais créer un fichier trait.php qui contiendra le code du traitement des données et je vais faire la condition pour savoir si la personne a coché la case :


<?php

// Votre code

if(isset($_POST['connect_auto'] )){

// On initialisera le cookie

}

else{

// Rien.

}

?>

En PHP, pour utiliser un cookie, il nous faut juste utiliser une fonction qui prends plusieurs paramètres, cette fonction nous permet d’initialiser le cookie, de lui donner un nom et une valeur. cette fonction s’appelle setcookie et elle prend en paramètres « principaux » : Le nom du cookie, sa valeur, et sa date d’expiration.

Voilà comment cela marche :


<?php

setcookie('auto_connect',  'true', time()+3600*24*365);

?>

Donc, décryptons ce code:

‘auto_connect’ => Le nom du cookie

‘true’ => sa valeur

time() + 3600*24*365 => sa durée de « vie » (ici, un an)

On a donc créer un cookie, mais, et oui, il y a un mais, en php, on sait que si une chose est primordiale, c’est bien la sécurité, j’ai trouvé cette astuce sur le site du zero pour sécuriser vos cookies contre les failles XSS :


<?php

setcookie('auto_connect', 'true', time() + 3600*24*365, null, null, FALSE, TRUE);

?>

Et voilà, vous avez un cookie sécurisé !

Alors, maintenant, comment lancer une session automatiquement si le cookie est présent? Pour cette partie, je vais utiliser pas mal de théorie, pour que vous ayez de la matière pour vous entrainez :

Tout d’abord, il faut créer une clé unique pour l’utilisateur (ex: encoder mot de passe + pseudo en MD5) et stockez cette clé dans votre BDD. Ensuite, lorsque l’user coche la case, vous récupérez cette clé et la mettez comme valeur du cookie. C’était la partie « première authentification ».

Maintenant, l’utilisateur va venir se connecter une deuxième fois, vous tester donc si le cookie est présent, si il l’est, vous faire correspondre la clé contenu dans le cookie avec celle de la bdd et vous lancez une session.

C’est tout simple !

Si jamais vous voulez le code, demandez le dans les commentaires, mais essayez de le faire seul, cela vous entrainera, et si vous maîtrisez cela, vous avez tout compris sur les cookies.

Salut !

Timestamp et php

illu

Hello !

Aujourd’hui, on vas voir comment compter le temps qui s’écoule entre le chargement d’une page et le chargement d’une autre page.

Mais, à quoi vas nous servir cela ? Tout d’abord, pour un antispam : Les robots remplissent les champs d’un formulaire très vite, je ne m’avancerais pas sur un chiffre, mais je vous promets que c’est très court, on vas donc calculer le timestamp lors du chargement de la première page, puis lors du chargement de la deuxième, ensuite, on fera une différence, et on aura le nombre de secondes écoulées. Allez, c’est parti !

Le timestamp, qu’est-ce que c’est?

Le timestamp, c’est le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit, donc, a chaque secondes, le chiffre est augmenter de 1. Vous avez compris à quoi cela vas nous servir? Toujours pas? :p Aller, passons à l’étape suivant !

L’architecture et les bases.

Commençons par créer un dossier que vous mettrez dans le dossier www de wamp (par exemple), appelons ce dossier timestamp. Dans le dossier, créez deux pages : index.php et donnees.php . Index.php contiendra le formulaire de contact, par exemple et donnees.php fera le calcul.

On ne s’occupera pas de l’envoi du mail !

Codons !

Index.php :


<?php

$time = timestamp(); // On initialise la variable qui contient le timestamp du début du chargement de la page.

?>

<form action="donnees.php" method="post">

Pseudo :<input type="text" name="pseudo" /><br />

Email : <input type="text" name="email" /></br>

Message :

<textarea name="msg"></textarea><br />

<!-- On vas envoyer la variable $time à travers un champs caché, dont on récupèrera la valeur. -->

<input type="hidden" value="<?php echo $time; ?>" name="time" />

<input type="submit" />

</form>

Voilà, la page index est créée, petites explications :

On initialise la variable $time qui a pour valeur le timestamp lors du chargement de la page, on créer ensuite un formulaire normal, mais on y introduit un champ caché qui contiendra cette variable (donc sa valeur) et la transmettra à l’autre page.

Maintenant, donnees.php :


<?php

$time2 = timestamp(); // On charge le timestamp.

$result = $time2-$time;

$temps_limite = 2; //Le temps minimum qu'il faut pour remplir le formulaire pour un humain.

if($result<=$temps_limite){

//Spam

}

else{

//Le reste de votre code

}

?>

Et voilà. Explications : $time2 contient le timestamp lors du chargement de la deuxième page, $result contient la différence de $time2 par $time, on récupère donc un nombre semblable à 1, 6, 23 etc…, c’est un entier (pas de virgules).$temps-limite contient le nombre minimal de seconde qu’il faut à un humain pour remplir le formulaire, (ici, c’est 2 secondes). Ensuite, on fait une condition: si le résultat de la différence est inférieur ou égale à 2 secondes ,c’est un spam, sinon, on continue le code.

Note: si vous initialiser la variable $time a la fin de la première page, et la variable $time2 au début de donees.php, les données seront faussées: pour peu que la première page soit longue à charger, le timestamp gagnera quelques secondes, qui fausseront donc le résultat.

Il y a une autre solution, j’y ai pensé en écrivant ce tutoriel, et cette solution, c’est les sessions, elle est toute conne, mais vaut le détour, je vous met le code commenté, à vous de comprendre ; ) :

Index.php :


<?php

session_start(); // On lance les sessions

$_SESSION['time'] = timestamp();  // On créer une session qui contient le timestamp et qui a pour nom time.

?>

<!-- le formulaire -->

Et maintenant, donnes.php :


<?php

session_start(); //On lance les sessions

$result = timestamp() - $_SESSION['time']; // On fait la différence du timestamp d'index.php et de celui de donees.php.

$temps_limite = 2; // Le temps minimum que doit mettre l'utilisateur pour remplir le formulaire.

if($result<=$temps_limite){

//Spam

}else{

//Votre code.

}

?>

Et voilà! On à utilisé les sessions, moins « dangereuses » (bon, là, il y a pas trop de risques ^^ ) pour votre site, et plus pratique pour tout regroupé en un endroit !  A vous de faire votre choix !

N’hésitez  pas à commenter si vous avez des questions ! (ou si vous aimez, ça fait toujours plaisir ).

Salut !