samedi 24 février 2007 à 18:10
|
Quelques règles sympathiques pour sécuriser les fichiers de votre serveur :
#Interdire l'acces au fichier config.php
<FilesMatch config.php>
deny from all
</FilesMatch>
#Blocage d'extension (Sécurité)
<FilesMatch "\.(inc|tpl|h|ihtml|sql|ini|conf|bin|spd|theme|module|exe)$">
deny from all
</FilesMatch>
#Caché la liste des dossiers
Options -Indexes
CODE
#Interdire l'acces au fichier config.php
<FilesMatch config.php>
deny from all
</FilesMatch>
#Blocage d'extension (Sécurité)
<FilesMatch "\.(inc|tpl|h|ihtml|sql|ini|conf|bin|spd|theme|module|exe)$">
deny from all
</FilesMatch>
#Caché la liste des dossiers
Options -Indexes
|
| Catégorie : Php
lundi 8 janvier 2007 à 19:52
|
Parmi les messages les plus postés sur le forum php ou xml, on s'aperçoit souvent qu'il est question de problème d'encodage. Il est vrai que les hieroglyphe é, ce n'est pas plaisant à voir sur nos jolies pages
Ensuite, viens la réponse... qui est souvent du genre : "la solution est simple : on decode toutes les données qu'on reçoit en utf8 grâce à utf8_decode() et on encode tout ce qui doit sortir en utf8 grâce à utf8_encode().".
Oui mais en fait, ce n'est pas si simple, car la fonction utf8_decode() est destructrice, c’est à dire que les caractères dans la chaîne qui n’ont pas d’équivalent en latin1 seront remplacés par un point d’interrogation.
Mais que faire contre ces points d'interrogations?
Lire l'excellent tutoriel utf-8 disponible chez fassnet.net.
Je résume les principales actions a mener :
Dans l'éditeur
rajoutez la ligne suivante :
et verifiez bien que vous les enregistrez dans le codage utf-8
Sur votre Base de Donnée
créez vos tables avec utf8_general_ci au lieu de latin_swedish...
Dans vos scripts PHP
rajoutez a la connexion de la base de donnée la derniere ligne:
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se selectionner la base");
mysql_query("SET NAMES 'utf8'");
En conclusion, il faut retenir que le moteur de PHP ne sait pas gérer l'UTF-8 (en fait, PHP ne supporte pas nativement l'Unicode, mais cela fera parti des nouveautés de PHP6). et que systèmatiquement il faut prévenir que l'on utilise l'UTF-8 à toutes les sources de données alimentant nos programmes (base de données, fichier externe, libellé dans le code du script etc...)
Finalement, c'est pas si compliqué que cela !
Ensuite, viens la réponse... qui est souvent du genre : "la solution est simple : on decode toutes les données qu'on reçoit en utf8 grâce à utf8_decode() et on encode tout ce qui doit sortir en utf8 grâce à utf8_encode().".
Oui mais en fait, ce n'est pas si simple, car la fonction utf8_decode() est destructrice, c’est à dire que les caractères dans la chaîne qui n’ont pas d’équivalent en latin1 seront remplacés par un point d’interrogation.
Mais que faire contre ces points d'interrogations?
Lire l'excellent tutoriel utf-8 disponible chez fassnet.net.
Je résume les principales actions a mener :
Dans l'éditeur
rajoutez la ligne suivante :
CODE
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
et verifiez bien que vous les enregistrez dans le codage utf-8
Sur votre Base de Donnée
créez vos tables avec utf8_general_ci au lieu de latin_swedish...
Dans vos scripts PHP
rajoutez a la connexion de la base de donnée la derniere ligne:
CODE
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se selectionner la base");
mysql_query("SET NAMES 'utf8'");
En conclusion, il faut retenir que le moteur de PHP ne sait pas gérer l'UTF-8 (en fait, PHP ne supporte pas nativement l'Unicode, mais cela fera parti des nouveautés de PHP6). et que systèmatiquement il faut prévenir que l'on utilise l'UTF-8 à toutes les sources de données alimentant nos programmes (base de données, fichier externe, libellé dans le code du script etc...)
Finalement, c'est pas si compliqué que cela !
|
| Catégorie : Php
dimanche 17 décembre 2006 à 22:40
|
Comme je cherche toujours comment elles s'appellent ces variables... je vais me les noter ici une bonne fois pour toute 
Chemin du script courant
$_SERVER['PHP_SELF']
Nom du serveur
$_SERVER['SERVER_NAME']
Variables passées au script
$_SERVER['QUERY_STRING']
Document root
$_SERVER['DOCUMENT_ROOT']
Référant
$_SERVER['HTTP_REFERER']
Adresse ip de l'utilisateur
$_SERVER['REMOTE_ADDR']
et la suite, sur le site officiel de php : variables prédéfinies
Chemin du script courant
$_SERVER['PHP_SELF']
Nom du serveur
$_SERVER['SERVER_NAME']
Variables passées au script
$_SERVER['QUERY_STRING']
Document root
$_SERVER['DOCUMENT_ROOT']
Référant
$_SERVER['HTTP_REFERER']
Adresse ip de l'utilisateur
$_SERVER['REMOTE_ADDR']
et la suite, sur le site officiel de php : variables prédéfinies
|
| Catégorie : Scripts
jeudi 7 décembre 2006 à 23:19
|
IBAN est l'abréviation pour Internatinal Bank Account Number. Il s'agit d'un numéro de compte répondant au normes internationales ISA, désignant sans aucune ambiguïté une relation de compte dans les opérations de paiement transfrontalière entre pays européens.
l'IBAN doit être considéré comme une "enveloppe" internationalement reconnue à laquelle les numéros de compte existantes peuvent être intégrés.
l'IBAN a une longueur maximale de 34 caractères alphanumériques :
papier, l’IBAN est divisé en groupes de quatre.
Exemple d’un IBAN suisse représenté sur papier:
CH35 0023 0230 5042 2318 T
CdPays - Pays - Long. - Exemple d'IBAN
DE - Allemagne - 22 - DE89 3704 0044 0532 0130 00
AD - Andorre - 24 - AD12 0001 2030 2003 5910 0100
AT - Autriche - 20 - AT97 1904 3002 3457 3201
BE - Belgique - 16 - BE68 5390 0754 7034
CY - Chypre - 28 - CY17 0020 0128 0000 0012 0052 7600
HR - Croatie - 21 - HR12 1001 0051 8630 0016 0
DK - Danemark - 18 - DK50 0040 0440 1162 43
ES - Espagne - 24 - ES91 2100 0418 4502 0005 1332
EE - Estonie - 20 - EE38 2200 2210 2014 6585
FI - Finlande - 18 - FI21 1234 5600 0007 85
FR - France - 27 - FR14 2004 1010 0505 0001 3M02 606
GI - Gibraltar - 23 - GI75 NEBK 0000 0000 7099 453
GR - Grèce - 27 - GR16 0110 1250 0000 0001 2300 695
GL - Groenland - 18 - GL56 0444 9876 5432 10
HU - Hongrie - 28 - HU42 1177 3016 1111 1018 0000 0000
FO - Îles Féroé - 18 - FO97 5432 0388 8999 44
IE - Irlande - 22 - IE29 AIBK 9311 5212 3456 78
IS - Islande - 26 - IS14 0159 2600 7654 5510 7303 39
IT - Italie - 27 - IT60 X054 2811 1010 0000 0123 456
LV - Lettonie - 21 - LV80 BANK 0000 4351 9500 1
LI - Liechtenstein - 21 LI21 0881 0000 2324 013A A
LT - Lituanie - 20 -LT12 1000 0111 0100 1000
LU - Luxembourg - 20 - LU28 0019 4006 4475 0000
MK - Macédoine - 19 - MK07 3000 0000 0042 425
MT - Malte - 31 - MT84 MALT 0110 0001 2345 MTLC AST0 01S
MC - Monaco - 27 - MC93 2005 2222 1001 1223 3M44 555
NO - Norvège - 15 - NO93 8601 1117 947
NL - Pays-Bas - 18 - NL91 ABNA 0417 1643 00
PL - Pologne - 28 - PL27 1140 2004 0000 3002 0135 5387
PT - Portugal - 25 - PT50 0002 0123 1234 5678 9015 4
CZ - République Tchèque - 24 - CZ65 0800 0000 1920 0014 5399
RO - Roumanie - 24 - RO49 AAAA 1B31 0075 9384 0000
GB - Royaume-Uni - 22 - GB29 NWBK 6016 1331 9268 19
SM - San Marino - 27 - SM62 Y054 3219 8760 0444 5333 222
CS - Serbie et Monténégro - 22 - CS73 2600 0560 1001 6113 79
SK - Slovaquie - 24 - SK31 1200 0000 1987 4263 7541
SI - Slovénie - 19 - SI56 1910 0000 0123 438
SE - Suède - 24 - SE35 5000 0000 0549 1000 0003
CH - Suisse - 21 - CH93 0076 2011 6238 5295 7
TN - Tunisie - 24 - TN59 1420 7207 1007 0712 9648
TR - Turquie - 26 - TR33 0006 1005 1978 6457 8413 26
Voilà pour le coté théorique, en pratique, voici l'algorithme du calcul de la clé de controle :
Voici la procédure Uniface que j'utilise pour le controle de l'Iban
Je vous laisse le soin de la transcrire en dans votre langage préféré
;--------------------------------------------------------------
; LP_IBAN
;--------------------------------------------------------------
ENTRY LP_IBAN
variables
numeric lv_mod, lv_cle
string lv_iban
string lv_cbanq, lv_cgui, lv_cptban, lv_rib
endvariables
; Dans le principe de l'IBAN, d'abord on met a la suite les champ du compte bancaire precede du pays et de 00
; avant de calculer ce qui va supplanter le "00" (qui sera la clé de controle)
lv_cbanq = cbanq
call LP_COMPLETER(lv_cbanq,5)
lv_cgui = cgui
call LP_COMPLETER(lv_cgui,5)
lv_cptban = cptban
call LP_COMPLETER(lv_cptban,11)
lv_rib = rib
call LP_COMPLETER(lv_rib,2)
; on pourrait faire plus simple mais cette manipulation a le mérite de rendre plus clair le découpage IBAN
iban1 = "FR00"
iban2 = lv_cbanq[1:4]
iban3 = "%%lv_cbanq[5:1]%%%%%lv_cgui[1:3]%%%"
iban4 = "%%lv_cgui[4:2]%%%%%lv_cptban[1:2]%%%"
iban5 = lv_cptban[3:4]
iban6 = lv_cptban[7:4]
iban7 = "%%lv_cptban[11:1]%%%%%lv_rib%%%"
; calcul de la clé : Phase 2 (déplacement du iban1 vers la fin)
lv_iban = "%%iban2%%%%%iban3%%%%%iban4%%%%%iban5%%%%%iban6%%%%%iban7%%%%%iban1%%%"
; calcul de la clé : Phase 3 (Remplacement des lettres par des chiffres)
lv_iban = $replace(lv_iban, 1, "A", "10", -1)
lv_iban = $replace(lv_iban, 1, "B", "11", -1)
lv_iban = $replace(lv_iban, 1, "C", "12", -1)
lv_iban = $replace(lv_iban, 1, "D", "13", -1)
lv_iban = $replace(lv_iban, 1, "E", "14", -1)
lv_iban = $replace(lv_iban, 1, "F", "15", -1)
lv_iban = $replace(lv_iban, 1, "G", "16", -1)
lv_iban = $replace(lv_iban, 1, "H", "17", -1)
lv_iban = $replace(lv_iban, 1, "I", "18", -1)
lv_iban = $replace(lv_iban, 1, "J", "19", -1)
lv_iban = $replace(lv_iban, 1, "K", "20", -1)
lv_iban = $replace(lv_iban, 1, "L", "21", -1)
lv_iban = $replace(lv_iban, 1, "M", "22", -1)
lv_iban = $replace(lv_iban, 1, "N", "23", -1)
lv_iban = $replace(lv_iban, 1, "O", "24", -1)
lv_iban = $replace(lv_iban, 1, "P", "25", -1)
lv_iban = $replace(lv_iban, 1, "Q", "26", -1)
lv_iban = $replace(lv_iban, 1, "R", "27", -1)
lv_iban = $replace(lv_iban, 1, "S", "28", -1)
lv_iban = $replace(lv_iban, 1, "T", "29", -1)
lv_iban = $replace(lv_iban, 1, "U", "30", -1)
lv_iban = $replace(lv_iban, 1, "V", "31", -1)
lv_iban = $replace(lv_iban, 1, "W", "32", -1)
lv_iban = $replace(lv_iban, 1, "X", "33", -1)
lv_iban = $replace(lv_iban, 1, "Y", "34", -1)
lv_iban = $replace(lv_iban, 1, "Z", "35", -1)
; calcul de la clé : Phase 4 (modulo 97)
lv_mod = frac(lv_iban / 97) * 97
lv_cle = 98 - lv_mod[round]
iban1 = "FR%%lv_cle%%%"
END
Entry LP_COMPLETER
params
string p_num : inout
string p_max : inout
endparams
length p_num
while ($result < p_max)
p_num = "0%%p_num%%%"
length p_num
endwhile
return 0
End
l'IBAN doit être considéré comme une "enveloppe" internationalement reconnue à laquelle les numéros de compte existantes peuvent être intégrés.
l'IBAN a une longueur maximale de 34 caractères alphanumériques :
- les deux premières lettres identifient le pays de tenue du compte.
- les deux chiffres suivants contiennent le chiffre de contrôle qui permet de vérifier l'exactitude formelle du numéro IBAN.
- La dernière partie comporte des informations locales, telles que l’identification de l’établissement ou le numéro de compte.
papier, l’IBAN est divisé en groupes de quatre.
Exemple d’un IBAN suisse représenté sur papier:
CH35 0023 0230 5042 2318 T
CITATION(longeur IBAN/Pays)
CdPays - Pays - Long. - Exemple d'IBAN
DE - Allemagne - 22 - DE89 3704 0044 0532 0130 00
AD - Andorre - 24 - AD12 0001 2030 2003 5910 0100
AT - Autriche - 20 - AT97 1904 3002 3457 3201
BE - Belgique - 16 - BE68 5390 0754 7034
CY - Chypre - 28 - CY17 0020 0128 0000 0012 0052 7600
HR - Croatie - 21 - HR12 1001 0051 8630 0016 0
DK - Danemark - 18 - DK50 0040 0440 1162 43
ES - Espagne - 24 - ES91 2100 0418 4502 0005 1332
EE - Estonie - 20 - EE38 2200 2210 2014 6585
FI - Finlande - 18 - FI21 1234 5600 0007 85
FR - France - 27 - FR14 2004 1010 0505 0001 3M02 606
GI - Gibraltar - 23 - GI75 NEBK 0000 0000 7099 453
GR - Grèce - 27 - GR16 0110 1250 0000 0001 2300 695
GL - Groenland - 18 - GL56 0444 9876 5432 10
HU - Hongrie - 28 - HU42 1177 3016 1111 1018 0000 0000
FO - Îles Féroé - 18 - FO97 5432 0388 8999 44
IE - Irlande - 22 - IE29 AIBK 9311 5212 3456 78
IS - Islande - 26 - IS14 0159 2600 7654 5510 7303 39
IT - Italie - 27 - IT60 X054 2811 1010 0000 0123 456
LV - Lettonie - 21 - LV80 BANK 0000 4351 9500 1
LI - Liechtenstein - 21 LI21 0881 0000 2324 013A A
LT - Lituanie - 20 -LT12 1000 0111 0100 1000
LU - Luxembourg - 20 - LU28 0019 4006 4475 0000
MK - Macédoine - 19 - MK07 3000 0000 0042 425
MT - Malte - 31 - MT84 MALT 0110 0001 2345 MTLC AST0 01S
MC - Monaco - 27 - MC93 2005 2222 1001 1223 3M44 555
NO - Norvège - 15 - NO93 8601 1117 947
NL - Pays-Bas - 18 - NL91 ABNA 0417 1643 00
PL - Pologne - 28 - PL27 1140 2004 0000 3002 0135 5387
PT - Portugal - 25 - PT50 0002 0123 1234 5678 9015 4
CZ - République Tchèque - 24 - CZ65 0800 0000 1920 0014 5399
RO - Roumanie - 24 - RO49 AAAA 1B31 0075 9384 0000
GB - Royaume-Uni - 22 - GB29 NWBK 6016 1331 9268 19
SM - San Marino - 27 - SM62 Y054 3219 8760 0444 5333 222
CS - Serbie et Monténégro - 22 - CS73 2600 0560 1001 6113 79
SK - Slovaquie - 24 - SK31 1200 0000 1987 4263 7541
SI - Slovénie - 19 - SI56 1910 0000 0123 438
SE - Suède - 24 - SE35 5000 0000 0549 1000 0003
CH - Suisse - 21 - CH93 0076 2011 6238 5295 7
TN - Tunisie - 24 - TN59 1420 7207 1007 0712 9648
TR - Turquie - 26 - TR33 0006 1005 1978 6457 8413 26
Voilà pour le coté théorique, en pratique, voici l'algorithme du calcul de la clé de controle :
- Créer un code IBAN articiel, composé du code du pays (ISO 3166), suivi de "00" et du compte bancaire.
- Déplacer les 4 premiers caractères de l'IBAN vers la droite du numéro.
- Convertir les lettres en chiffres, conformément à la table de conversion (A=10, Z=35)
- Appliquer le modulo 97 et retrancher le reste de 98.
- Si le résultat comporte 1 seul chiffre, inserer un 0 devant.
- Insérer le résultat ainsi obtenu à la position 3 de l'IBAN articiel créé auparavant (ce qui reviens a remplacer les 2 zéros)
Voici la procédure Uniface que j'utilise pour le controle de l'Iban
Je vous laisse le soin de la transcrire en dans votre langage préféré
CODE
;--------------------------------------------------------------
; LP_IBAN
;--------------------------------------------------------------
ENTRY LP_IBAN
variables
numeric lv_mod, lv_cle
string lv_iban
string lv_cbanq, lv_cgui, lv_cptban, lv_rib
endvariables
; Dans le principe de l'IBAN, d'abord on met a la suite les champ du compte bancaire precede du pays et de 00
; avant de calculer ce qui va supplanter le "00" (qui sera la clé de controle)
lv_cbanq = cbanq
call LP_COMPLETER(lv_cbanq,5)
lv_cgui = cgui
call LP_COMPLETER(lv_cgui,5)
lv_cptban = cptban
call LP_COMPLETER(lv_cptban,11)
lv_rib = rib
call LP_COMPLETER(lv_rib,2)
; on pourrait faire plus simple mais cette manipulation a le mérite de rendre plus clair le découpage IBAN
iban1 = "FR00"
iban2 = lv_cbanq[1:4]
iban3 = "%%lv_cbanq[5:1]%%%%%lv_cgui[1:3]%%%"
iban4 = "%%lv_cgui[4:2]%%%%%lv_cptban[1:2]%%%"
iban5 = lv_cptban[3:4]
iban6 = lv_cptban[7:4]
iban7 = "%%lv_cptban[11:1]%%%%%lv_rib%%%"
; calcul de la clé : Phase 2 (déplacement du iban1 vers la fin)
lv_iban = "%%iban2%%%%%iban3%%%%%iban4%%%%%iban5%%%%%iban6%%%%%iban7%%%%%iban1%%%"
; calcul de la clé : Phase 3 (Remplacement des lettres par des chiffres)
lv_iban = $replace(lv_iban, 1, "A", "10", -1)
lv_iban = $replace(lv_iban, 1, "B", "11", -1)
lv_iban = $replace(lv_iban, 1, "C", "12", -1)
lv_iban = $replace(lv_iban, 1, "D", "13", -1)
lv_iban = $replace(lv_iban, 1, "E", "14", -1)
lv_iban = $replace(lv_iban, 1, "F", "15", -1)
lv_iban = $replace(lv_iban, 1, "G", "16", -1)
lv_iban = $replace(lv_iban, 1, "H", "17", -1)
lv_iban = $replace(lv_iban, 1, "I", "18", -1)
lv_iban = $replace(lv_iban, 1, "J", "19", -1)
lv_iban = $replace(lv_iban, 1, "K", "20", -1)
lv_iban = $replace(lv_iban, 1, "L", "21", -1)
lv_iban = $replace(lv_iban, 1, "M", "22", -1)
lv_iban = $replace(lv_iban, 1, "N", "23", -1)
lv_iban = $replace(lv_iban, 1, "O", "24", -1)
lv_iban = $replace(lv_iban, 1, "P", "25", -1)
lv_iban = $replace(lv_iban, 1, "Q", "26", -1)
lv_iban = $replace(lv_iban, 1, "R", "27", -1)
lv_iban = $replace(lv_iban, 1, "S", "28", -1)
lv_iban = $replace(lv_iban, 1, "T", "29", -1)
lv_iban = $replace(lv_iban, 1, "U", "30", -1)
lv_iban = $replace(lv_iban, 1, "V", "31", -1)
lv_iban = $replace(lv_iban, 1, "W", "32", -1)
lv_iban = $replace(lv_iban, 1, "X", "33", -1)
lv_iban = $replace(lv_iban, 1, "Y", "34", -1)
lv_iban = $replace(lv_iban, 1, "Z", "35", -1)
; calcul de la clé : Phase 4 (modulo 97)
lv_mod = frac(lv_iban / 97) * 97
lv_cle = 98 - lv_mod[round]
iban1 = "FR%%lv_cle%%%"
END
Entry LP_COMPLETER
params
string p_num : inout
string p_max : inout
endparams
length p_num
while ($result < p_max)
p_num = "0%%p_num%%%"
length p_num
endwhile
return 0
End
|
| Catégorie : Javascript
vendredi 20 octobre 2006 à 21:21
|
Pour éviter de permettre à vos visiteurs de lancer une recherche dans vos tables avec 1 seul caractère comme critère, vous pouvez les obliger a saisir un minimum de caracteres en faisant un rapide contrôle en javascript :
<html>
<head>
<script>
function valider(monchamps){
var mini = 3
var maxi = 20
if ( mini != 0 ) {
// Si la longueur de la saisie est inférieure au minimum demandé
if ( monchamps.value.length < mini ) {
// Envoi d'une alerte
alert('Vous devez saisir au moins ' + mini + ' caracteres.');
return false
}
}
// Si la longueur de la saisie est supérieure au maximum demandé
if ( maxi != 0 ) {
if ( monchamps.value.length > maxi ) {
alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
return false
}
}
}
</script>
</head>
<body>
<form name="form1" method="post" action="moteur.html">
<input type="text" name="motsclef" id="search" onBlur="valider(this)">
<input type="submit" value="Rechercher">
</form>
</body>
</html>
(et vous pouvez faire le meme controle en php du coté serveur pour les petits malins qui ont désactivé le javascript)
CODE
<html>
<head>
<script>
function valider(monchamps){
var mini = 3
var maxi = 20
if ( mini != 0 ) {
// Si la longueur de la saisie est inférieure au minimum demandé
if ( monchamps.value.length < mini ) {
// Envoi d'une alerte
alert('Vous devez saisir au moins ' + mini + ' caracteres.');
return false
}
}
// Si la longueur de la saisie est supérieure au maximum demandé
if ( maxi != 0 ) {
if ( monchamps.value.length > maxi ) {
alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
return false
}
}
}
</script>
</head>
<body>
<form name="form1" method="post" action="moteur.html">
<input type="text" name="motsclef" id="search" onBlur="valider(this)">
<input type="submit" value="Rechercher">
</form>
</body>
</html>
(et vous pouvez faire le meme controle en php du coté serveur pour les petits malins qui ont désactivé le javascript)
|
| Catégorie : Référencement
dimanche 3 septembre 2006 à 15:56
|
Parmi les bonnes résolutions de la rentrée, n'oubliez pas d'ajouter votre site dans l'annuaire généraliste kiwoui.
Vous y trouverez surement une rubrique qui vous intéressera parmi les nombreuses existantes (ex: agences immobilières ou télé-réalité)
Si une rubrique n'existe pas, n'hesitez pas a la demander (même les concours seo sont acceptés et ont leur rubrique dédiée comme pour le loupanthère)
Les derniers sites listés sont affichés sur la home, qui sera enrichie dès que possible (En fait, dès que j'aurais le temps de bosser sur quelques idées sympas... Cependant la rentrée scolaire n'est pas évidente mais c'est une autre histoire!)
Sinon est-ce que vous êtes au courant qu'un nouveau blog sympa sur le référencement s'est ouvert il y a peu?
Référencement, SEO, SEM, web marketing... Best Viewed With Googlebot (BVWG) vous dévoile les secrets de la visibilité dans Google et les autres outils de recherche.
Vous y trouverez surement une rubrique qui vous intéressera parmi les nombreuses existantes (ex: agences immobilières ou télé-réalité)
Si une rubrique n'existe pas, n'hesitez pas a la demander (même les concours seo sont acceptés et ont leur rubrique dédiée comme pour le loupanthère)
Les derniers sites listés sont affichés sur la home, qui sera enrichie dès que possible (En fait, dès que j'aurais le temps de bosser sur quelques idées sympas... Cependant la rentrée scolaire n'est pas évidente mais c'est une autre histoire!)
Sinon est-ce que vous êtes au courant qu'un nouveau blog sympa sur le référencement s'est ouvert il y a peu?
Référencement, SEO, SEM, web marketing... Best Viewed With Googlebot (BVWG) vous dévoile les secrets de la visibilité dans Google et les autres outils de recherche.
|
| Catégorie : Référencement
samedi 26 août 2006 à 13:57
|
Petite note pour expliquer comment trouver des annuaires où référencer son site :
- Listes d'annuaires
Pour commencer efficace, voici 3 sites qui recensent les annuaires intéressants pour référencer votre site- listes des annuaires sans liens de retour
- annuaire info (attention méfiez vous, ne mettez pas de critère trop restrictif dans la selection, car les infos peuvent ne pas être justes.)
- le repertoire
- critères d'un bon annuaire
Pour rappel, on considère qu'un annuaire est bon pour votre référencement si:- il fait des liens en dur
- le lien de retour est facultatif
- la gestion est attentive et sérieuse (visitez quelques pages de l'annuaire pour vous faire une idée, ex: Kiwoui, les pages du Hub sont sérieux)
- pas trop du publicité, pas trop de sites par page
- Trouver un annuaire a thème
là, le plus rapide est de visiter un portail sur le thème et de chercher des liens vers un éventuel annuaire ou directement taper la requete qui vous intéresse sur google avec le mot 'annuaire' dedans.
exemple : des annuaires pour la piscine (coucou Lafleur), ou encore pour la littérature ou enfin annuaire gironde
Une autre méthode est d'espionner le référencement d'un de vos concurrents (exemple tapez linkdomain:siteconcurrent.com dans msn) et de vous y inscrire sur toutes les pages des annuaires comportant votre concurrent
)
|
| Catégorie : Php
mardi 15 août 2006 à 12:03
|
Petit mot sur un problème dont la solution me parait insatisfaisante...
Concernant le script Phplinkdirectory pour les annuaires, certaines soumissions échouent sur le problème de la vérification draconnienne de la validité de l'url proposée :
Nous avons essayé d'etudier un peu le problème avec les spécialistes du sujet
validation formulaire V2 - PHP Link Directory Forum
mais sans succès.
le seul palliatif trouvé a été de désactiver ce fichu test comme il suit :
Donc dans tous les cas, maintenant, vous n'avez plus d'excuses pour ne pas avoir ajouté votre site dans l'annuaire généraliste Kiwoui ! Plus aucun site ne tombera en erreur a la soumission
Concernant le script Phplinkdirectory pour les annuaires, certaines soumissions échouent sur le problème de la vérification draconnienne de la validité de l'url proposée :
CITATION
"The URL could not be validated. Either the page does not exist or the server cound not be contacted."
Nous avons essayé d'etudier un peu le problème avec les spécialistes du sujet
validation formulaire V2 - PHP Link Directory Forum
mais sans succès.
le seul palliatif trouvé a été de désactiver ce fichu test comme il suit :
CITATION
Open \submit.php
Find and delete:
Open \templates\submit.tpl
Find and delete:
Find and delete:
CODE
SmartyValidate :: register_validator('v_URL_ONLINE', 'URL', 'isURLOnline', false, false, false, null, 'submit_link');
Open \templates\submit.tpl
Find and delete:
CODE
{validate form="submit_link" id="v_URL_ONLINE" message=$smarty.capture.url_not_online}
Donc dans tous les cas, maintenant, vous n'avez plus d'excuses pour ne pas avoir ajouté votre site dans l'annuaire généraliste Kiwoui ! Plus aucun site ne tombera en erreur a la soumission
|
| Catégorie : Humour informatique
vendredi 11 août 2006 à 18:33
|
Dans le Pré des Rumeurs, aux heures troubles du crépuscule, quand on n'entend que le bruissement des oiseaux et le léger vrombissement des moucherons, les langages de programmation se rencontraient. Et parlaient.
La conversation commençait comme elle a toujours commencé, sur des sujets profonds et sérieux, sur le coeur existentiel qui fonde tous les langages.
Est-ce que j'existe ou non ? Dans cette boucle infinie de vie, quel est le but ? Où dois-je aller, et qu'y faire une fois que j'y suis ? Qu'arrive-t-il après la fin ?
(Ce n'est pas simple d'être un langage de programmation, condamné à se contempler soi-même, jour après jour)
Cependant, au bout d'un moment, les langages se détendaient. Le Pré aux Rumeurs possédait ce je-ne-sais-quoi qui pénètre les coeurs et les âmes, qui assouplit leurs tâches et ouvrent leurs paramètres. Le Pré aux Rumeurs était magique, pas de doute.
Mais ce jour-là, le groupe était singulièrement silencieux, parce qu'un de leurs membres, PHP, n'avait pas l'air dans son assiette.
Qu'est-ce ne va pas, PHP ? demandèrent les autres langages. Enfin, tous les langages sauf le C, parce que C ne disait jamais rien d'autre que « Dégage ! ». C était un langage rude et difficile à vivre, mais respecté à cause de sa grande forcede travail.
Et PHP répondit :
Et après cette lugubre constatation, PHP sombra dans un silence contemplatif et une tristesse lourde.
Tu crois que ça va mal, dit C++. Essaie de te mettre à ma place.
Tous les langages hochèrent la tête, parce qu'ils connaissaient la sensibilité du C++. De fait, Perl fut si ému par l'éloquence de C++ qu'il se sentit contraint de parler, alors qu'en général il s'asseyait tranquillement dans un coin, consommant avidement les expressions.
Comme Perl finissait, Python et Ruby se regardèrent en roulant des yeux. Avec toutes ces histoires d'association, Perl aurait au moins pu faire des rimes !
Fortran tapota l'épaule de Perl de sa main flétrie.
Comme le râle de Fortran touchait à sa fin, Cobol acquiesça avec emphase, mais il ne pouvait pas parler, à cause du tube à oxygène. (Les autres langages en étaient secrètement soulagés, COBOL radotait un peu trop souvent sur le bon vieux temps).
C'est alors que la marée des plaintes monta, et le bruit des voix s'accrut sans cesse, au point que les écureuils sortirent de leurs trous et que les oiseaux les dévisagèrent depuis le bord de leur nid. Le calme vallon n'était plus calme du tout.
Et moi alors, s'exclama Pascal ! Je ne suis plus utilisé qu'en cours ! À quoi sert un langage d'apprentissage ?
Et moi alors, dit SNOBOL. Personne n'a même jamais entendu parler de moi !
Et moi alors, dit C#. Je ressemble à Prince !
Dégagez, dit le C.
Lisp aurait parlé, mais il avait aperçu un reflet de lui-même dans la mare et y était tombé en essayant de se rencontrer soi-même. Et Java était trop occupé à ramasser des ordures dans la Crique des Rumeurs.
La vague de bruit s'enfla sans cesse, et le babillage se propagea à travers le Pré, quand tout à coup une voix rugit depuis les arbres.
Assez !
J'en ai assez de vos querelles, je suis fatigué de vos plaintes. Je suis saoulé de vos gémissements, de votre égocentrisme pleurnichard !
Je croyais qu'il s'agissait d'une fête. Si j'avais su que ça ne serait qu'une querelle de ménagères, je n'aurais pas fait le déplacement.
Les langages s'arrêtent de parler. Qui était-ce donc ? Ils se comptèrent et se trièrent par ordre alphabétique (C++ dut placer Basic, qui n'avait jamais appris l'alphabet), ils se recomptèrent et parvinrent tous à la même conclusion. Tous les langages étaient présents.
L'énigme restait entière, quand soudain les buissons s'écartèrent et XML surgit dans la lumière.
XML soupira, et tous les langages, ému par son désespoir, se regroupèrent autour de lui ;
Puis se jetèrent sur ce petit XML, le jetèrent dans la poussière, le piétinèrent sans relâche. Oui, ils l'écrasèrent dans la poussière. Basic frappa XML, C++ le bourra de coups, et Java nettoya et piétina et nettoya et piétina. COBOL voulut donner un coup de pied dans la tête de XML, mais tomba sur sa canne. Même LISP s'extirpa de la mare et jeta ses mains de détraqué autour de la gorge de XML, mais ne réussit qu'à s'étrangler lui-même.
Chaque langage marmonnait en rouant XML de coups, et dans leurs yeux se lisait une jubilation extrème.
Je dois parser du XML, hein ? Je dois posséder une API XML hein ? Travailler avec XML-RPC, RSS, et RDF ?
Tiens, parse donc ça dans ta face, sale petite balise de merde.
Trouvé sur linuxfr.org
Historique des langages informatiques
La conversation commençait comme elle a toujours commencé, sur des sujets profonds et sérieux, sur le coeur existentiel qui fonde tous les langages.
Est-ce que j'existe ou non ? Dans cette boucle infinie de vie, quel est le but ? Où dois-je aller, et qu'y faire une fois que j'y suis ? Qu'arrive-t-il après la fin ?
(Ce n'est pas simple d'être un langage de programmation, condamné à se contempler soi-même, jour après jour)
Cependant, au bout d'un moment, les langages se détendaient. Le Pré aux Rumeurs possédait ce je-ne-sais-quoi qui pénètre les coeurs et les âmes, qui assouplit leurs tâches et ouvrent leurs paramètres. Le Pré aux Rumeurs était magique, pas de doute.
Mais ce jour-là, le groupe était singulièrement silencieux, parce qu'un de leurs membres, PHP, n'avait pas l'air dans son assiette.
Qu'est-ce ne va pas, PHP ? demandèrent les autres langages. Enfin, tous les langages sauf le C, parce que C ne disait jamais rien d'autre que « Dégage ! ». C était un langage rude et difficile à vivre, mais respecté à cause de sa grande forcede travail.
Et PHP répondit :
CITATION
Jour et nuit je travaille. Les seuls moments où l'on me remarque, c'est quand je m'arrête, et alors on me maudit, on me frappe, l'on dit que je suis inutile et on me jette. Mais quand ça va bien, personne n'a jamais un mot gentil pour moi.
Personne ne remarque ma facilité, mon élégance, ma simplicité. On ne se souvient que de mes échecs.
Personne ne remarque ma facilité, mon élégance, ma simplicité. On ne se souvient que de mes échecs.
Et après cette lugubre constatation, PHP sombra dans un silence contemplatif et une tristesse lourde.
Tu crois que ça va mal, dit C++. Essaie de te mettre à ma place.
CITATION
Sans moi, des industries entières sombreraient, les banques fermeraient, les bateaux couleraient et les trains
dérailleraient. Virtuellement, je commande le monde entier.
Et pourtant, les seules fois où l'on fait attention à moi, c'est quand on trouve une fuite de mémoire ou
qu'une exception est levée, et alors on me maudit, on m'insulte et je suis débuggué brutalement, sans aucun égard pour ma sensibilité.
dérailleraient. Virtuellement, je commande le monde entier.
Et pourtant, les seules fois où l'on fait attention à moi, c'est quand on trouve une fuite de mémoire ou
qu'une exception est levée, et alors on me maudit, on m'insulte et je suis débuggué brutalement, sans aucun égard pour ma sensibilité.
Tous les langages hochèrent la tête, parce qu'ils connaissaient la sensibilité du C++. De fait, Perl fut si ému par l'éloquence de C++ qu'il se sentit contraint de parler, alors qu'en général il s'asseyait tranquillement dans un coin, consommant avidement les expressions.
CITATION
PHP, C++, je sympathise avec vous. Ma condition n'est guère meilleure que la votre.
J'associe les expressions aux expressions, puis je recommence, encore et encore, d'abord cryptiquement, puis objectivement, mais toujours j'associe tout avec tout. Et association après association, ma perfection est prise comme un dû, et pourtant j'aimerais bien voir les autres associer avec autant d'élégance.
Regardez, on ne peut citer « expressions rationnelles » sans que mon nom n'apparaisse sous peu.
Mais suis-je remercié pour cela ? Non.
Et vas-y du Larry Wall par ci, du Larry Wall par là, c'est lui la star. Mais toujours on fait appel à l'interpréteur Perl quand le boulot doit être fait.
J'associe les expressions aux expressions, puis je recommence, encore et encore, d'abord cryptiquement, puis objectivement, mais toujours j'associe tout avec tout. Et association après association, ma perfection est prise comme un dû, et pourtant j'aimerais bien voir les autres associer avec autant d'élégance.
Regardez, on ne peut citer « expressions rationnelles » sans que mon nom n'apparaisse sous peu.
Mais suis-je remercié pour cela ? Non.
Et vas-y du Larry Wall par ci, du Larry Wall par là, c'est lui la star. Mais toujours on fait appel à l'interpréteur Perl quand le boulot doit être fait.
Comme Perl finissait, Python et Ruby se regardèrent en roulant des yeux. Avec toutes ces histoires d'association, Perl aurait au moins pu faire des rimes !
Fortran tapota l'épaule de Perl de sa main flétrie.
CITATION
Calme-toi, Perl, calme-toi.
Souvenez-vous qu'au moins on vous fait encore une place dans ce monde. Regardez-moi, je ne suis plus qu'un souvenir, un fantôme de mon ancienne force.
Il n'y eut jamais un problème scientifique que je ne puisse résoudre. Je fus le maître de mon domaine, le roi des processeurs.
Mais maintenant, mes jours de gloire sont révolus, et je suis condamné à vivre mes derniers jours comme du code hérité.
Souvenez-vous qu'au moins on vous fait encore une place dans ce monde. Regardez-moi, je ne suis plus qu'un souvenir, un fantôme de mon ancienne force.
Il n'y eut jamais un problème scientifique que je ne puisse résoudre. Je fus le maître de mon domaine, le roi des processeurs.
Mais maintenant, mes jours de gloire sont révolus, et je suis condamné à vivre mes derniers jours comme du code hérité.
Comme le râle de Fortran touchait à sa fin, Cobol acquiesça avec emphase, mais il ne pouvait pas parler, à cause du tube à oxygène. (Les autres langages en étaient secrètement soulagés, COBOL radotait un peu trop souvent sur le bon vieux temps).
C'est alors que la marée des plaintes monta, et le bruit des voix s'accrut sans cesse, au point que les écureuils sortirent de leurs trous et que les oiseaux les dévisagèrent depuis le bord de leur nid. Le calme vallon n'était plus calme du tout.
Et moi alors, s'exclama Pascal ! Je ne suis plus utilisé qu'en cours ! À quoi sert un langage d'apprentissage ?
Et moi alors, dit SNOBOL. Personne n'a même jamais entendu parler de moi !
Et moi alors, dit C#. Je ressemble à Prince !
Dégagez, dit le C.
Lisp aurait parlé, mais il avait aperçu un reflet de lui-même dans la mare et y était tombé en essayant de se rencontrer soi-même. Et Java était trop occupé à ramasser des ordures dans la Crique des Rumeurs.
La vague de bruit s'enfla sans cesse, et le babillage se propagea à travers le Pré, quand tout à coup une voix rugit depuis les arbres.
CITATION
Assez !
J'en ai assez de vos querelles, je suis fatigué de vos plaintes. Je suis saoulé de vos gémissements, de votre égocentrisme pleurnichard !
Je croyais qu'il s'agissait d'une fête. Si j'avais su que ça ne serait qu'une querelle de ménagères, je n'aurais pas fait le déplacement.
Les langages s'arrêtent de parler. Qui était-ce donc ? Ils se comptèrent et se trièrent par ordre alphabétique (C++ dut placer Basic, qui n'avait jamais appris l'alphabet), ils se recomptèrent et parvinrent tous à la même conclusion. Tous les langages étaient présents.
L'énigme restait entière, quand soudain les buissons s'écartèrent et XML surgit dans la lumière.
CITATION
XML ! s'exclama C++. Qu'est-ce que tu fais ici ? Tu n'es même pas un langage de programmation.
Dis-le aux personnes qui m'utilisent, dit XML.
On croit que je suis le sauveur, la solution ultime, le point final. On m'écrit des odes, on recouvre mon chemin de fleurs, on sacrifie des vierges sur mon autel.
Les programmeurs prononcent mon nom avec respect. Les entreprises insistes pour m'utiliser dans leurs projets, bien qu'elles ne sachent pas exactement pourquoi faire.
Et chaque fois qu'apparaît un problème, quelqu'un dit « On pourrait faire du XML », et un miracle se produit. Mon nom est devenu un talisman contre le mal.
Et pourtant, je ne suis toujours qu'une simple balise aux origines humbles. C'est un poids, d'être XML.
Dis-le aux personnes qui m'utilisent, dit XML.
On croit que je suis le sauveur, la solution ultime, le point final. On m'écrit des odes, on recouvre mon chemin de fleurs, on sacrifie des vierges sur mon autel.
Les programmeurs prononcent mon nom avec respect. Les entreprises insistes pour m'utiliser dans leurs projets, bien qu'elles ne sachent pas exactement pourquoi faire.
Et chaque fois qu'apparaît un problème, quelqu'un dit « On pourrait faire du XML », et un miracle se produit. Mon nom est devenu un talisman contre le mal.
Et pourtant, je ne suis toujours qu'une simple balise aux origines humbles. C'est un poids, d'être XML.
XML soupira, et tous les langages, ému par son désespoir, se regroupèrent autour de lui ;
Puis se jetèrent sur ce petit XML, le jetèrent dans la poussière, le piétinèrent sans relâche. Oui, ils l'écrasèrent dans la poussière. Basic frappa XML, C++ le bourra de coups, et Java nettoya et piétina et nettoya et piétina. COBOL voulut donner un coup de pied dans la tête de XML, mais tomba sur sa canne. Même LISP s'extirpa de la mare et jeta ses mains de détraqué autour de la gorge de XML, mais ne réussit qu'à s'étrangler lui-même.
Chaque langage marmonnait en rouant XML de coups, et dans leurs yeux se lisait une jubilation extrème.
CITATION
Je dois parser du XML, hein ? Je dois posséder une API XML hein ? Travailler avec XML-RPC, RSS, et RDF ?
Tiens, parse donc ça dans ta face, sale petite balise de merde.
Trouvé sur linuxfr.org
Historique des langages informatiques
|
| Catégorie : Référencement
dimanche 6 août 2006 à 21:28
|
Le référencement évolue au fil du temps qui passe.
Mais voilà quelques nouvelles fraiches pour ce milieu d'année 2006 avec les vidéos de Matt Cuts.
Comme j'ai trouvé le billet de Jean-Luc très bien fait: clair, précis, je vous invite a lire son résumé des vidéos
et d'appliquer ces quelques lignes qui sont en fait un condensé de bon sens.
Important, et a ne pas oublier dans la checklist!
Mais voilà quelques nouvelles fraiches pour ce milieu d'année 2006 avec les vidéos de Matt Cuts.
Comme j'ai trouvé le billet de Jean-Luc très bien fait: clair, précis, je vous invite a lire son résumé des vidéos
et d'appliquer ces quelques lignes qui sont en fait un condensé de bon sens.
Important, et a ne pas oublier dans la checklist!



samedi 24 février 2007 à 18:10
sur Liste des forums