Archives pour la catégorie Programmation

Ruby on Rails : Find() et ses scopes ActiveRecord

Il existe plusieurs manières, dans le controler, de faire une requête grâce à la fonction magique find().
Lire le reste de cet article »

Ruby on Rails : Jointure « has_many » et « belongs_to »

J’entame aujourd’hui une série d’articles concernant Ruby on Rails, le célèbre framework.
Cette série est initiée grâce à l’un de mes amis, Thomas, qui développe en Ruby depuis quelques temps maintenant avec une passion étonnante mais justifiée. Lire le reste de cet article »

HTML 5, le multimédia envahit vos navigateurs

Le HTML5 est la prochaine norme HTML du W3C, elle se présente à la fois comme le successeur de la norme 4 du HTML et de la norme 1 du XHTML.

Contrairement à ses ainés, qui se concentrent principalement sur l’aspect sémantique du contenu d’une page, une des révolutions du HTML 5 est qu’il apporte toute une série de nouveautés multimédia aux pages.

Le HTML5 offre un ensemble de composants qui permettent de gérer ce type de contenu sans avoir à faire appel à des plug-ins externes (comme Flash ou Silverlight).

Que ce soit pour la vidéo, le son ou encore le dessin vectoriel, une toute nouvelle gamme de balises ont été incorporées aux spécifications du HTML 5. Celles-ci nous permettent d’accéder à tout un monde auquel on n’osait aspirer tellement le HTML était vu comme un langage statique et faible en interactions.

Lire le reste de cet article »

Background-image, pensez à la couleur de fond

A chaque fois que vous spécifiez une image d’arrière-plan dans votre CSS, prenez en compte ce qui peut arriver lorsque l’image est manquante.
S’il y a un texte au dessus de l’image, est-il toujours lisible ? Si non, spécifiez une couleur pour le navigateur pour l’utiliser à la place de l’image ainsi le texte deviendra lisible à nouveau. Lire le reste de cet article »

N’oubliez pas d’ajouter un doctype

Ajouter un quoi ?

Il n’y a pas qu’un seul type de HTML, il y en a plusieurs : HTML 4.01 Strict, HTML 4.01 Transitionnel, XHTML 1.0 Strict, et d’autres encore. Tous ces types de HTML sont définis dans leurs spécifications respectives (en langage humain), mais ils sont également définis dans un langage compréhensible par les machines, qui précise la structure légale, les éléments et les attributs de chaque type de HTML. Lire le reste de cet article »

Menu Dock avec JQuery

css-dock-menu Lire le reste de cet article »

Connexion à MySQL

Gagner du temps, c’est toujours intéressant.
Pour cela, il faut utiliser les fonctions, les classes et la POO.
Aujourd’hui, nous verrons une fonction simple et rapide : la connexion Php à une base MySQL.

<?
#############################################
## FONCTION DE CONNEXION A LA BASE DE DONNEES
function appel_base(){
$serveur = "localhost";
$user = "utilisateur";
$pass = "mot_de_passe";
$bdd = "nom_de_la_base";
$connect_db = mysql_connect($serveur, $user, $pass);
mysql_select_db($bdd,$connect_db);
mysql_query("SET NAMES UTF8");
}
?>

Comme nous le voyons, après avoir fourni les paramètres (serveur, user, pass et bdd), nous lançons la connexion.
Rien de très compliqué en somme, sauf que nous incluons tous les éléments dans une fonction…

Notez que j’utilise une requête pour passer en utf-8.
C’est pour la bonne raison que l’ensemble des pages (dans mon cas) est en utf-8.
Sans cette instruction, cela nous donnerait des caractères en « point d’interrogation » à  la place des caractères accentués (à cause de la différence d’encodage 8 bits et 32 bits).

Variables globales sur off ? no problem !

La fonction extract() est notre amie.
Toutes les variables sont récupérées, parsées dans un tableau et redonnées dans leur intitulé d’origine, pour cela pas besoin d’un script de 2000 lignes…

<?
extract($_REQUEST,EXTR_SKIP);
extract($_SERVER,EXTR_SKIP);
extract($_ENV,EXTR_SKIP);
extract($_GET,EXTR_SKIP);
extract($_POST,EXTR_SKIP);
extract($_SESSION,EXTR_SKIP);
# etc.
?>

Certains diront que ça ajoute une couche d’insécurité (« tu comprends, après je te balance une injection en _GET et c’est fini. »), je suis d’accord pour les sites dont les algorithmes ne sont pas contrôlés, pour les autres : aucun problème puisqu’en bons professionnels, ils contrôlent toutes les variables traitées (n’est-ce-pas ? >)).
Ce n’est pas parce que les hébergeurs toussent qu’il nous faut prendre une veste !

Supprimer les accents des caractères accentués

Solution boiteuse mais couramment utilisé par les franco-français (fan de la norme iso-8859-1)

<?php
$str = strtr($str, ‘ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝ’, ‘AAAAAACEEEEEIIIINOOOOOUUUUY’);
$str = strtr($str, ‘áàâäãåçéèêëíìîïñóòôöõúùûüýÿ’, ‘aaaaaaceeeeiiiinooooouuuuyy’);
?>

Solution qui fonctionne et utilisée par les développeurs internationaux (basé sur utf-8)

<?php
function suppression_accents($str, $charset=’utf-8′)
{
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace(‘#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#’, ‘\1′, $str);
$str = preg_replace(‘#\&([A-za-z]{2})(?:lig)\;#’, ‘\1′, $str);
$str = preg_replace(‘#\&[^;]+\;#’,  », $str);
return $str;
}
?>

Pourquoi la première solution n’en est pas une ?

Je cite : « si … vous travaillez en utf-8, les caractères accentués sont bien souvent encodés avec plus de 8bits (un caractère), mais jusqu’à 32bits. Ainsi, les techniques basées sur une substitution de caractères (ndlr : strtr() )sont totalement obsolètes parce qu’elles produisent des résultats erronés. C’est triste, mais c’est vrai. »

source : WDBlog

Envoi d’email en Php


function EnvoiEmail($Destinataire, $Sujet, $MessageTexte, $MessageHTML , $Expediteur, $AdresseRetour) {
$Codage = "_NextPart_".md5(uniqid(rand()));

$Entete = "Reply-to: ".$AdresseRetour."\n";
$Entete .= "From:".$
Expediteur."\n";
$Entete .= "Date: ".date("l j F Y, G:i")."\n";
$Entete .= "MIME-Version: 1.0\n";
$Entete .= "Content-Type: multipart/alternative;\n";
$Entete .= " boundary=\"----=".$Codage."\"\n\n";

//--- Message au format Text
$Texte = "This is a multi-part message in MIME format.\n";
$Texte .= "Ceci est un message est au format MIME.\n";
$Texte .= "------=".$Codage."\n";
$Texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$Texte .= "Content-Transfer-Encoding: 8bit\n\n";
$Texte .= $
MessageTexte."\n\n";

//--- Message au format HTML
$HTML = "------=".$Codage."\n";
$HTML .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$HTML .= "Content-Transfer-Encoding: 8bit\n\n";
$HTML .= $
MessageHTML."\n\n\n------=".$Codage."\n";

return mail($Destinataire, $Sujet, $Texte.$HTML, $Entete);
}

Sinon, il existe toujours les classes qui gère l’envoi d’email sous tous les formats, par exemple : PhpMailer.

Protéger un email des sniffers

aspirateur

function encode_email($email='info@domain.com', $linkText='Contact Us',
$attrs ='class="emailencoder"' )
{
 // remplace l'arobase et le point
 $email = str_replace('@', '&#64;', $email);
 $email = str_replace('.', '&#46;', $email);
 $email = str_split($email, 5);

 $linkText = str_replace('@', '&#64;', $linkText);
 $linkText = str_replace('.', '&#46;', $linkText);
 $linkText = str_split($linkText, 5);

 $part1 = '<a href="ma';
 $part2 = 'ilto&#58;';
 $part3 = '" '. $attrs .' >';
 $part4 = '</a>';

 // generer le javascript
 $encoded = '<script type="text/javascript">';
 $encoded .= "document.write('$part1');";
 $encoded .= "document.write('$part2');";
 foreach($email as $e)
 {
 $encoded .= "document.write('$e');";
 }
 $encoded .= "document.write('$part3');";
 foreach($linkText as $l)
 {
 $encoded .= "document.write('$l');";
 }
 $encoded .= "document.write('$part4');";
 $encoded .= '</script>';

 return $encoded;
}

Préchargement d’images en CSS

loading

Pendant longtemps, le préchargement d’images dans le cache du navigateur se faisait par le biais de Javascript. Beaucoup ont utilisé pendant longtemps des scripts tout droit en provenance de Dreamweaver avec la fonction MM_preloadImages().

Hors, il existe, bien entendu, une solution plus simple, plus accessible et plus rapide :

Créer un div qui contiendra les images en arrière plan avec l’astuce consistant à les cacher grâce à des dimensions nulles.

#preloadedImages {
 width: 0px;
 height: 0px;
 display: inline;
 background-image: url(mon_image1.png);
 background-image: url(mon_image2.png);
 background-image: url(mon_image3.png);
}

Petit guide .htaccess

https

De tous les éléments de développement web, .htaccess est certainement le plus intimidant.
Après tout, c’est un outil incroyablement puissant, et l’un de ceux qui a le potentiel de détruire votre site si vous ne faites pas attention.
Nous allons voir quelques techniques et astuces permettant de bien démarrer avec .htaccess. Ce n’est pas aussi effrayant que cela et si vous étudiez le code quelques minutes, vous saisirez rapidement comment ça fonctionne et pourquoi.
Ensuite, nous verrons les points qu’il ne faut pas rater pour ne pas se créer des soucis supplémentaires lors de manipulation de .htaccess. Lire le reste de cet article »

Menu animé avec JQuery

Ou comment ne plus utiliser Flash pour des besoins basiques !
snookca

Il suffit d’un client qui souhaite avoir un menu animé de façon aussi « smooth » (ndlr :  le client veut-il dire « fluide » ?) que ce qu’on trouve avec Flash Player pour que l’utilisation du plug-in soit l’idée universelle. Hors, il n’en est rien. Flash Player n’est pas un passage obligé.
En voici la preuve.

Grouper les éléments avec « optgroup »

html

Il est quelquefois pratique de grouper les éléments d’un menu/liste.
Certains développeurs utilisent des styles CSS imbriqués couplés à des espaces insécables (&nbsp;) sans savoir qu’ils réinventent la roue !
Cette roue trop souvent oubliée se nomme optgroup. Lire le reste de cet article »

Un menu animé avec JQuery

LavaLamp_3

Un effet de slide sur le background d’un menu.  Possible qu’avec Flash ? Pas du tout !

ça s’appelle LavaLamp.

101 trucs et astuces pour WordPress

noupe1

Voici le premier article d’une série intitulée « Guide pour un CMS puissant utilisant WordPress ».

A travers cet article, le focus sera mis sur de nombreux hacks, ideés et astuces WordPress.

Le lien vient de chez Noupe.com

Encore plus d’astuces ? Lisez Smashing Magazine et WPBeginner et ça.

Je veux un « effet génie » !

dock1-example

… Dixit « le client », qui, d’une sobriété à toute épreuve n’en rajouta pas plus.
La réponse me fut donnée par Jarel Remick.

Un script simple et efficace qui fait effet pour peu d’effort. Que demander de mieux ?
C’est ici qu’il se trouve.

Slideshow fonctionnant avec et sans Javascript

slide_jquery
Jenna Smith, freelance britannique, nous présente un script basé sur JQuery. Ce script possède le double avantage de fonctionner avec et sans JavaScript.
Ça se passe ici.

Générer un flux RSS

Un petit lien qui explique clairement et de façon détaillée la manière de créer un flux RSS en provenance d’une base MySQL.
C’est ici que ça se passe.