PHP & MySQL

tinylinks.php remplacer les liens par des liens cliquables et raccourcis

5 réactions Le 2 mai 2008 à 21:19 par chris

Dernièrement, je regardais à l’API Tinyurl afin d’utiliser cette fonction sur vibstars. Et puis je me suis dit: je suis idiot, ce n’est pas compliqué du tout ça?

alors j’ai fait la fonction tinylinks qui va rechercher les liens dans un texte, les convertir en liens cliquables et si nécessaire, les raccourcir.

(lire la suite…)

Frameworks & API, PHP & MySQL

L’organisation sécurisée du code

15 réactions Le 15 mars 2008 à 12:07 par Séverin

Pour bien débuter un projet web, il faut d’entrée de jeu penser à la sécurité. Une fois que des milliers de lignes de codes auront été écrites et des centaines d’URL diffusées, il sera beaucoup plus compliqué de revoir sa copie.

Donc, voilà quelques astuces pour structurer son projet en prenant la sécurité en compte.

La structure des dossiers

Dans cet exemple, chaque dossier à une place et un rôle précis pour éviter les ennuis :

Structure de répertoires d’un projet PHP

(lire la suite…)

PHP & MySQL

Manipuler les pays en PHP

8 réactions Le 10 février 2008 à 12:25 par chris

Si il y a bien quelques chose qui m’a pris du temps lors de mes premiers pas en PHP, c’est la manipulation des pays.

  • Choisir son pays dans le formulaire d’inscription.
  • Modifier son pays sans son profil
  • Afficher son pays dans sa page perso.

Avec le nombre de pays disponibles, c’est vraiment très lourd à gérer

Maintenant, je gagne pas mal de temps avec mon petit tableau contenant les pays et franchement, ce n’est plus galère du tout. Je le propose aux personnes pouvant eux aussi en avoir besoin.

Cliquez sur ce lien pour récupérer le tableau des pays que vous intégrerez dans une page php, par exemple, paysarr.php.

Choisir un pays dans le formulaire d’inscription:

  1.  
  2.  
  3. <?php include "paysarr.php";
  4.  
  5. echo ‘<select name="country" id="country" class="cel" >’;
  6.         foreach ($payslist as $key => $value) {
  7.          echo ‘<option value="’.$key.‘">’.$value.‘</option>’."n";
  8. }
  9.  
  10. echo ‘</select>’; ?>
  11.  
  12.  

récupérer le pays dans le formulaire de modification de profil:

  1.  
  2.  
  3. <?php include "paysarr.php";
  4.  
  5. $mypays = "fr"; // récupéré depuis la DB par exemple.
  6.  
  7. echo ‘<select name="country" id="country" class="cel" >’;
  8.         foreach ($payslist as $key => $value) {
  9.         if ($mypays==$key) echo ‘<option value="’.$key.‘" selected="selected">’.$value.‘</option>’."n";
  10.         else echo ‘<option value="’.$key.‘">’.$value.‘</option>’."n";
  11. }
  12.  
  13. echo ‘</select>’; ?>
  14.  
  15.  

récupérer le nom du pays d’un membrel:

  1.  
  2.  
  3. <?php include "paysarr.php";
  4.  
  5. $mypays = "fr"; // récupéré depuis la DB par exemple.
  6.  
  7. echo $payslist[$mypays];
  8.  
  9.  
  10.  

on ne peut pas faire plus simple

PHP & MySQL

Comparatif rapide des diffèrents Frameworks PHP

6 réactions Le 17 janvier 2008 à 22:23 par chris

Vous cherchez un Frameworks PHP mais vous n’avez pas le temps de tous les tester afin de voir si ils correspondent a vos besoins.

Voici un comparatif rapide:

(lire la suite…)

PHP & MySQL

Ajouter automatiquement son logo sur les images volées

6 réactions Le 14 décembre 2007 à 12:59 par Séverin

Ajouter automatiquement son logo sur les images volées

Une image volée c’est une image hébergée sur votre site et affichée sur un autre.

Sur le principe, je ne suis pas contre, tant qu’on rend à César ce qui appartient à César…
Mais la grande majorité des sites/forums/blogs qui affichent les images hébergées ailleurs ne prennent même pas la peine de préciser d’où elle provient. C’est rageant de perdre de la bande passante dans ces conditions.

Il y’a deux solutions à ce problème : interdire l’accès à vos images depuis d’autres sites ou signaler vous-même que cette image est hébergée chez vous en ajoutant un filigrane à l’image.

C’est de cette deuxième solution que je vais parler. Mais pour faire ça proprement, on va ajouter ce filigrane de façon automatique et uniquement en cas de vol d’image, de façon à ce que le filigrane ne s’affiche pas sur votre site.

(lire la suite…)

PHP & MySQL

Un watermak PNG propre en PHP

13 réactions Le à 12:04 par Séverin

Le watermark (filigrane), consiste à rajouter une image sur une autre. Elle va par exemple servir à signaler de quel site provient une image.

Exemple de filigrane

Il existe déjà des fonctions de gestion des images en PHP dont imagecopymerge qui permet de faire le collage rapidement mais qui gère très mal la transparence des fichiers PNG.

Pour faire un collage propre il va donc falloir le faire soit même. Voilà donc l’explication pas à pas.

(lire la suite…)

PHP & MySQL

Les tableaux en php - 2ème Partie

Une réaction Le 30 novembre 2007 à 0:11 par Tom

La deuxième partie (Les tableaux en php - 1ère partie) de ce long tutoriel sur les tableaux (array) concerne les tableaux multi-dimensionnels (ne vous inquiétez pas, même si le nom peut vous perturber, vous allez voir c’est très simple).

Pour définir les tableaux multi-dimensionnels, nous allons dire que ce sont des tableaux de tableaux.
En effet, nous avons vu plus haut que nous pouvions créer un tableau simple. Mais si vous utiliser un très gros tableau et le garder facilement utilisable, nous allons devoir créer des tableaux “de tableaux” (comprenez multi-dimensionnels).
Et pourquoi faire compliqué, quand on peut faire simple :)
Un tableau “de tableau”, s’écrit de cette façon $array[’tableau’][’donnee’];
Aussi, vous pouvez même faire $array[’tableau1′][’tableau2′][’tableau3′][’donnee’]; mais à ce stade, un tableau multi-dimensionnel n’est plus conseillé :p et vous comprenez pourquoi.

(lire la suite…)

PHP & MySQL

Les tableaux en php - 1ère partie

Une réaction Le 29 novembre 2007 à 23:57 par Tom

En programmation, il est important d’avoir un code propre… Je ne parle pas seulement de concaténation, commentaires, etc.
Je parle surtout du code en lui même… Et quoi de plus propre que d’utiliser des tableaux pour stocker des données ?

En effet, beaucoup de programmeurs n’utilisent pas assez les array(tableau) en php, ce qui est regrettable car utilisez des arrays et vous verrez la programmation sous un autre angle :). C’est ce que nous allons essayer de voir ensemble. (lire la suite…)

PHP & MySQL

Librairie “mail” en PHP5 : Partie III

Une réaction Le 26 novembre 2007 à 16:22 par Tomtom

Voilà la dernière partie du tutorial. On va donc finir par voir comment ajouter une ou plusieurs pièces jointes au mail. Rappelez vous dans la partir II, la fonction BuildMessage() appelait 3 fonctions. Les deux premières ont été détaillé dans la partie II, nous allons donc voir la dernière : la fonction GetParts(). Mais avant cela, il nous faut ajouter un ou plusieurs fichiers à l’objet $mail. C’est avec la fonction Attach() que l’on fait ça :

Fonction Attach() :

  1. function Attach($file){
  2. switch(strrchr(basename($name), ‘.’)){
  3. case ‘.gz’: $ctype = ‘application/x-gzip’; break;
  4. case ‘.tgz’: $ctype = ‘application/x-gzip’; break;
  5. case ‘.zip’: $ctype = ‘application/zip’; break;
  6. case ‘.pdf’: $ctype = ‘application/pdf’; break;
  7. case ‘.png’: $ctype = ‘image/png’; break;
  8. case ‘.gif’: $ctype = ‘image/gif’; break;
  9. case ‘.jpg’: $ctype = ‘image/jpeg’; break;
  10. case ‘.txt’: $ctype = ‘text/plain’; break;
  11. case ‘.htm’: $ctype = ‘text/html’; break;
  12. case ‘.html’: $ctype = ‘text/html’; break;
  13. default: $ctype = ‘application/octet-stream’; break;
  14. }
  15. $name = basename($file);
  16. $path = dirname($file);
  17. $this->parts[] = array (
  18. ‘path’ => $path,
  19. ‘name’ => $name,
  20. ‘ctype’ => $ctype
  21. );
  22. }

Cette fonction est appelée comme ceci :

  1. $mail->Attach(/chemin/du/fichier/fichier.extension);

Cette fonction ajoute un attribut parts qui est en fait un tableau contenant le nom du fichier, son chemin ainsi que son extension. On peut donc, lorsque la fonction BuildMessage() appelle GetParts() générer le code pour ajouter les pièces jointes.

Fonction GetParts() :

  1. function GetParts(){
  2. $eol = $GLOBALS[‘eol’];
  3. foreach($this->parts as $part){
  4. if(is_file($part[‘path’].‘/’.$part[‘name’])){
  5. $file = fread(fopen($part[‘path’].‘/’.$part[‘name’], ‘r’), filesize($part[‘path’].‘/’.$part[‘name’]));
  6. $file = chunk_split(base64_encode($file));
  7. $res = ‘–’.$this->boundary.$eol.
  8. ‘Content-Type: ‘.$part[‘ctype’].‘; name="’.$part[‘name’].‘"’.$eol.
  9. ‘Content-Transfer-Encoding: base64′.$eol.
  10. ‘Content-Description: ‘.$part[‘name’].$eol.
  11. ‘Content-Disposition: attachment; filename="’.$part[‘name’].‘"’.$eol.$eol.
  12. $file.$eol.$eol;
  13. }
  14. }
  15. return $res;
  16. }

On fait une boucle sur l’attribut parts pour ajouter le ou les fichiers à l’objet $mail. Ces fichier sont encodés en base 64 pour être inclus dans le mails. Ils sont délimités par un frontière (l’attribut boundaty de l’objet $mail)

Il ne nous reste plus qu’à envoyer notre email généré via la fonction send();. Et comme je vous l’avez promis, voilà la classe complète à télécharger ici. Il y a les détails d’utilisation au début du fichier

Enjoy :)

PHP & MySQL

Librairie “mail” en PHP5 : Partie II

réagissez à cet article Le 11 novembre 2007 à 23:42 par Tomtom

Dans les premières parties, j’ai détaillé le code pour les entêtes. Je vais donc m’attaquer dans ce billet au code pour générer le corps du mail. Voyons voir ce dont on a besoin construire ça. Il nous faut :

  1. Préciser l’encodage du message (et en définir un par défaut)
  2. Si l’on envoie le message en HTML, il faut penser à envoyer dans le mail le même message mais en texte pour que ceux qui ne puissent pas lire l’HTML puissent quand même voir le mail.

Pour 1. , c’est l’attribut utf8 de l’objet $mail (défini dans la première partie) qui va nous aider. Par défaut, on va considérer que notre message est en ISO-8858-1. Mais si l’on passe à l’objet $mail l’attribut utf8 à true, cela veut dire que l’on veut envoyer le mail en UTF-8. Il suffira alors de tester, une fois le message construit, la variable utf8 puis encoder le message comme ceci :

  1. if($this->utf8){
  2. utf8_encode($message);
  3. }

Pour le 2. , On voit bien que l’on peut avoir une ou deux partie pour le message. Il faut donc écrire ça de la bonne manière afin que le client puisse lire le mail correctement. En effet, un mail peut contenir du texte en HTML et du texte pur. Le client prendra donc l’une ou l’autre partie suivant les préférences définies par l’utilisateur. On utilise pour ça des frontières qui vont servir à délimiter ces deux parties du reste du mail. Ces frontières sont définies par l’attribut tboundary de l’objet $mail.

La fonction BuildMessage() :

  1. function BuildMessage(){
  2. $eol = $GLOBALS[‘eol’];
  3. $msg = ‘This is a multi-part message in MIME format.’.$eol.$eol.
  4. ‘–’.$this->boundary.$eol.
  5. ‘Content-Type: multipart/alternative; boundary="’.$this->tboundary.‘"’.$eol.
  6. $this->GetMessageText().
  7. $this->GetMessageHtml().
  8. $this->GetParts().
  9. ‘–’.$this->boundary.‘–’;
  10. return $msg;
  11. }

Cette fonction en appelle trois autres : GetMessageText() - GetMessageHtml() et GetParts(). Je vais détaillé les deux première, la troisième sera pour la partie III du tutorial

La Fonction GetMessageText() :

  1. function GetMessageText(){
  2. $eol = $GLOBALS[‘eol’];
  3. $res = ‘–’.$this->tboundary.$eol.
  4. ‘Content-Type: text/plain; ‘.
  5. (($this->utf8) ? ‘charset=utf-8′.$eol : ‘charset=iso-8859-1′.$eol ).
  6. ‘Content-Transfer-Encoding: 8bit’.$eol.$eol;
  7. if($this->html){
  8. $tmp = ereg_replace("<(br[:blank:]?/?)>","n",$this->message);
  9. $tmp = ereg_replace("<!–(p|div)–>","nn",$tmp);
  10. $res .= ereg_replace("<[^>]*>","",$tmp);
  11. } else {
  12. $res .= $this->message;
  13. }
  14. $res .= $eol.$eol;
  15. $res = utf8_decode($res);
  16. return ($this->utf8) ? utf8_encode($res) : $res;
  17. }

Comme vous pouvez le voir, on test d’abord si on veut le message en utf8 puis si le message est en HTML auquel cas on va supprimer toutes les balise de formatage du texte. On renvoie ensuite le message en l’encodant ou non toujours suivant l’attribut utf8

La Fonction GetMessageHtml() :

  1. function GetMessageHtml(){
  2. $eol = $GLOBALS[‘eol’];
  3. if($this->html){
  4. $res = ‘–’.$this->tboundary.$eol.
  5. ‘Content-Type: text/html; ‘.
  6. (($this->utf8) ? ‘charset=utf-8′.$eol : ‘charset=iso-8859-1′.$eol ).
  7. ‘Content-Transfer-Encoding: 8bit’.$eol.$eol;
  8. if(!empty($this->template)){
  9. if(ereg(‘^<.*’,$this->template)){
  10. $res .= str_replace(‘%texte%’,$this->message,$this->template);
  11. } else {
  12. $f = fopen($this->template,‘r’);
  13. $buffer = fread($f,filesize($this->template));
  14. fclose($f);
  15. $res .= str_replace(‘%texte%’,$this->message,$buffer);
  16. }
  17. } else {
  18. $res .= $this->message;
  19. }
  20. $res .= $eol.$eol;
  21. $res = utf8_decode($res);
  22. return ($this->utf8) ? utf8_encode($res) : $res;
  23. }
  24. }

On test toujours l’attribut html auquel cas on va traiter le message sinon en renvoie rien. Si on a initialisé html à true, on encode correctement le message et, petite subtilité, on teste si on utilise un template avec l’attribut template. Si c’est le cas, on ouvre ce fichier puis on remplace %texte% par le message en html. On renvoie le tout à la fonction BuildMessage() pour ensuite récupérer les fichiers joints.

Mais on verra ça dans la partie III.

Page suivante »
Valid XHTML 1.0 Transitional