Formation référencement lyon
BlogBang

lundi 3 août 2009

Google Earth > Premier exemple de jeu 3D sur Google Earth

L'API google maps a énormément facilité l'enrichissement des sites web avec des cartes intéractives en tout genre, mais qu'en est-il de la navigation 3D sur une carte ?


Google a encore une fois fait très fort en publiant une API pour son célèbre outil Google Earth, qui s'intègre maintenant dans votre navigateur sous forme de plugin.


Cette API google Earth permet de faire un grand nombre de choses pratiques comme par exemple récupérer l'altitude d'un point (je vous avais précédement montré comment le faire avec google maps), ou encore de pilote un camion de livraison de lait.


Je vous ai traduit ce jeu en français pour pouvoir apprécier pleinement cette nouveau système de jeu de conduite en 3D.


Démonstration ici


Fonctionnement


Ce jeu utilise un fichier 3D (type collada) qui est chargé en direct et manipulé grâce au javascript utilisable avec le plugin Google Earth.


Page d'origine : http://earth-api-samples.googlecode.com/svn/trunk/demos/milktruck/index.html


A voir aussi


Libellés : , , , ,


jeudi 30 juillet 2009

PHP > Mes fonctions personnalisées préférées

Voici la liste des fonctions PHP que j'utilise régulièrement dans mes scripts PHP


Filtrage des données


Supprimer les accents



function supprimerAccents($texte) {
$caracteresAvecAccents= "áéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ";
$caracteresSansAccents= "aeiouyAEIOUYaeiouAEIOUaeiouyAEIOUaeiouAEIOUaAoOscCanoANO";
return trim(strtr($texte, $caracteresAvecAccents, $caracteresSansAccents));
}

Confirmation d'origine des données d'un formulaire


Afin de garantir la sécurité de vos formulaires, il est indispensable de valider l'origine des données afin d'être sur quelles proviennent bien de votre formulaire.

Pour cela nous allons générer un TOKEN unique qui sera envoyé avec les données du formulaire puis vérifié avant le traitement des données.



<PHP?
// démarrage de la session
session_start();
// génération du token
$token = md5(uniqid(rand(), true));
// stockage du token dans la session
$_SESSION['token'] = $token;
?>








Maintenant nous allons mettre en place la sécurité sur le script qui traitera les données.



<?PHP
// démarrage de la session
session_start();
// vérification de la différence du token stocké et envoyé
if($_POST['token']!=$_SESSION['token'])
// arrêt de l'exécution du script et affichage d'un message d'erreur
die('Erreur : transmission des données incorrecte !');
// placer ici la suite du traitement
?>

Il vous suffit de placer ce code en début de fichier pour éviter les envois de données autrement que par votre formulaire


Nettoyage de sécurité des chaines de caractères


Cette fonction permet de supprimer les données non souhaitées d'une chaine de caractère



function securite($chaine)
{
return stripslashes(htmlentities(addcslashes(strip_tags(trim($chaine)))));
}

Si vous souhaitez filtrer toutes les données envoyées avec votre formulaire, vous pouvez combiner le code précédent avec celui qui suit



foreach($_POST as $cle=>$valeur)
$$cle=securite($valeur);

Ce code a pour effet de créer une variable php par champs HTML envoyé, par exemple si vous avez créé un champ de nom "toto" (name='toto') vous aurez une variable $toto qui contiendra les données du champ toto filtrées avec notre fonction.

Libellés : , ,


mercredi 22 juillet 2009

MySQL > Les requêtes MySQL que je trouve utiles

Lorsque vous développez une application utilisant une base de données, on se rend très rapidement compte que les SQL tient une place importante dans notre code.


Vous avez ainsi un grand nombre de requêtes SQL qui sont exécutées pour des opérations courantes et cela sans vous soucier du nombre de demandes que vous envoyez au serveur.


Il est simple de faire faire plusieurs actions au SGBDR en une seule requête, grâce à mon expérience je vais pouvoir partager avec vous quelques unes de ces requêtes SQL "magiques".


Création de Table


La requete de création de table en SQL est CREATE TABLE


Exemple :


CREATE TABLE erreurs404 (
id tinyint(4) unsigned NOT NULL auto_increment,
typeErreur varchar(80) NOT NULL,
origine varchar(255),
description varchar(255),
PRIMARY KEY (id)
)



A partir d'une requete SQL


Dans certains cas vous pouvez avoir besoin de combiner les résultats de plusieurs requêtes SQL afin de les traiter ultérieurement et de façon régulière.

Pour cela vous pouvez créer et éxécuter plusieurs requêtes que vous combinerez avec PHP ou alors créer une table contenant le résultat combiné de ces requêtes.



CREATE TABLE erreurs404SurPages SELECT * FROM erreurs404 INNER JOIN erreursPages ON erreurs404.id=erreursPages.code

La table ainsi créée contiendra autant de champs que la requête en retourne.


Insertion et Mise à jour de tabla


Insertion sinon Mise à jour


Dans le cadre de statistiques, par exemple, vous pouvez avoir besoin d'insérer des informations dans la Base de données ou si celles-ci existe déjà, vous devez mettre à jour certains champs.


Dans cet exemple je vais vous montrer comment passer des 2 à 3 requetes SQL à une seule requete.


Creation de la table "visiteurs" :



CREATE TABLE IF NOT EXISTS `visiteurs` (
`addrIP` varchar(20) NOT NULL,
`jourVisite` date NOT NULL,
`nombreVisite` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`addrIP`,`jourVisite`)
)

Chaque jour nous enregistrons le nombre de visites d'un internautes, l'internaute est identifié grâce à son adresse IP


A chaque visite, nous vérifions si le couple adresse IP/Jour existe dans la table, si non on l'ajoute autrement on met à jour le nombre de visite



INSERT INTO visiteurs
(addrIP,jourVisite,nombreVisite)
VALUES
("127.0.0.1","2009-10-10",1)
ON DUPLICATE KEY UPDATE nombreVisite=V nombreVisite+1;

/!\ la clause "ON DUPLICATE KEY" ne porte que sur les clés primaires

Libellés : , , ,


vendredi 17 juillet 2009

Web > Codes d'erreur AJAX

Lors du développement de script AJAX (Asynchronous Javascript And XML) vous êtes amené à utiliser différentes méthodes de l'objet XMLHttpRequest qui peuvent retourner des codes d'erreur.
Méthode readyState (permet de connaitre l'état de la requete AJAX) :
  • 0 : non initialisé (souvent du à une erreur de syntaxe empechant la creation de l'objet XMLHttpRequest )
  • 1 : connexion établie (Tout fonctionne correctement)
  • 2 : requête reçue (Le serveur a reçu votre demande)
  • 3 : réponse en cours (le serveur traite votre demande)
  • 4 : terminé (un résultat a été retourné par le serveur)
Méthode status (permet de vérifier le code d'erreur que le serveur a retourné) :
  • 200 : le resultat a été retourné avec succès
  • 404 : le fichier appelé n'a pas été trouvé par le serveur
  • 500 : le serveur a un problème de fonctionnement
  • Tous les codes d'erreurs HTTP peuvent être retournés (cf : Code d'erreurs HTTP)
Voici un exemple de fonction permettant de recuperer des données en AJAX et d'insérer le résultat dans une balise DIV :


function ajax(url,method,idDiv,params)
{
var http;
try
{
http = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1)
{

try
{
http = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
try
{
http = new XMLHttpRequest();
}
catch(e3)
{
alert('Votre navigateur est pourri');
http=false;
}
}
}
http.onreadystatechange=function()
{
if(http.readyState==4)
{
if(http.status==200)
document.getElementById(idDiv).innerHTML=http.responseText;
else
document.getElementById(idDiv).innerHTML="Erreur : "+http.status;
}
else
document.getElementById(idDiv).innerHTML="Chargement...";
};
http.open(method,url,true);
if(method=="post")
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(params);
}

Libellés : , , ,


PHP > Liste des codes d'erreurs PHP

Voici une liste des codes d'erreurs que vous pouvez rencontrer durant le développement de script PHP.
EREEURORIGINERéférence PHP
T_ABSTRACTabstractAbstraction de classes (disponible depuis PHP 5.0.0)
T_AND_EQUAL&=opérateurs d'assignation
T_ARRAYarray()array(), syntaxe de tableau
T_ARRAY_CAST(array)transtypage
T_ASasforeach
T_BAD_CHARACTER Tous les caractères en dessous de ASCII 32 excepté \t (0x09), \n (0x0a) et \r (0x0d)
T_BOOLEAN_AND&&opérateurs logiques
T_BOOLEAN_OR||opérateurs logiques
T_BOOL_CAST(bool) ou (boolean)transtypage
T_BREAKbreak;break
T_CASEcaseswitch
T_CATCHcatchLes exceptions (disponible depuis PHP 5.0.0)
T_CHARACTER
T_CLASSclassclasses et objets
T_CLASS_C__CLASS__constantes magiques (disponible depuis PHP 4.3.0)
T_CLONEcloneclasses et objets. (disponible depuis PHP 5.0.0)
T_CLOSE_TAG?> ou %>
T_COMMENT// ou #, et /* */ en PHP 5commentaires
T_CONCAT_EQUAL.=opérateurs d'assignation
T_CONSTconst
T_CONSTANT_ENCAPSED_STRING"foo" ou 'bar'syntaxe chaîne de caractères
T_CONTINUEcontinue
T_CURLY_OPEN
T_DEC--opérateurs d'incrémention/décrémention
T_DECLAREdeclaredeclare
T_DEFAULTdefaultswitch
T_DIR__DIR__constantes magiques (disponible depuis PHP 5.3.0)
T_DIV_EQUAL/=opérateurs d'assignation
T_DNUMBER0.12, etc.nombres à virgule flottante
T_DOC_COMMENT/** */style de commentaire dans la PHPDoc (disponible depuis PHP 5.0.0)
T_DOdodo...while
T_DOLLAR_OPEN_CURLY_BRACES${syntaxe de variable complexe analysée
T_DOUBLE_ARROW=>syntaxe de tableau
T_DOUBLE_CAST(real), (double) ou (float)transtypage
T_DOUBLE_COLON::Voyez T_PAAMAYIM_NEKUDOTAYIM plus bas
T_ECHOechoecho()
T_ELSEelseelse
T_ELSEIFelseifelseif
T_EMPTYemptyempty()
T_ENCAPSED_AND_WHITESPACE
T_ENDDECLAREenddeclaredeclare, syntaxe alternative
T_ENDFORendforfor, syntaxe alternative
T_ENDFOREACHendforeachforeach, syntaxe alternative
T_ENDIFendifif, syntaxe alternative
T_ENDSWITCHendswitchswitch, syntaxe alternative
T_ENDWHILEendwhilewhile, syntaxe alternative
T_END_HEREDOC syntaxe heredoc
T_EVALeval()eval()
T_EXITexit or dieexit(), die()
T_EXTENDSextendsextends, classes et objets
T_FILE__FILE__constantes magiques
T_FINALfinalMot-clé "final" (disponible depuis PHP 5.0.0)
T_FORforfor
T_FOREACHforeachforeach
T_FUNCTIONfunction or cfunctionfonctions
T_FUNC_C__FUNCTION__constantes magiques (disponible depuis PHP 4.3.0)
T_GLOBALglobalscope de variable
T_GOTOgotonon documenté (disponible depuis PHP 5.3.0)
T_HALT_COMPILER__halt_compiler()__halt_compiler (disponible depuis PHP 5.1.0)
T_IFifif
T_IMPLEMENTSimplementsInterfaces (disponible depuis PHP 5.0.0)
T_INC++opérateurs d'incrémention/décrémention
T_INCLUDEinclude()include()
T_INCLUDE_ONCEinclude_once()include_once()
T_INLINE_HTML
T_INSTANCEOFinstanceofopérateurs de type (disponible depuis PHP 5.0.0)
T_INT_CAST(int) ou (integer)transtypage
T_INTERFACEinterfaceInterfaces (dipsonible depuis PHP 5.0.0)
T_ISSETisset()isset()
T_IS_EQUAL==opérateurs de comparaison
T_IS_GREATER_OR_EQUAL>=opérateurs de comparaison
T_IS_IDENTICAL===opérateurs de comparaison
T_IS_NOT_EQUAL!= ou <>opérateurs de comparaison
T_IS_NOT_IDENTICAL!==opérateurs de comparaison
T_IS_SMALLER_OR_EQUAL<=opérateurs de comparaison
T_LINE__LINE__constantes magiques
T_LISTlist()list()
T_LNUMBER123, 012, 0x1ac, etcentiers
T_LOGICAL_ANDandopérateurs logiques
T_LOGICAL_ORoropérateurs logiques
T_LOGICAL_XORxoropérateurs logiques
T_METHOD_C__METHOD__constantes magiques (disponible depuis PHP 5.0.0)
T_MINUS_EQUAL-=opérateurs d'assignation
T_ML_COMMENT/* et */commentaires (PHP 4 uniquement)
T_MOD_EQUAL%=opérateurs d'assignation
T_MUL_EQUAL*=opérateurs d'assignation
T_NS_C__NAMESPACE__namespaces. Également défini comme T_NAMESPACE (disponible depuis PHP 5.3.0)
T_NEWnewclasses et objets
T_NUM_STRING
T_OBJECT_CAST(object)transtypage
T_OBJECT_OPERATOR->classes et objets
T_OLD_FUNCTIONold_function(uniquement PHP 4)
T_OPEN_TAGsortie du mode HTML
T_OPEN_TAG_WITH_ECHOsortie du mode HTML
T_OR_EQUAL|=opérateurs d'assignation
T_PAAMAYIM_NEKUDOTAYIM::::. Définie également en tant que T_DOUBLE_COLON.
T_PLUS_EQUAL+=opérateurs d'assignation
T_PRINTprint()print()
T_PRIVATEprivateclasses et objets (disponible depuis PHP 5.0.0)
T_PUBLICpublicclasses et objets (disponible depuis PHP 5.0.0)
T_PROTECTEDprotectedclasses et objets (disponible depuis PHP 5.0.0)
T_REQUIRErequire()require()
T_REQUIRE_ONCErequire_once()require_once()
T_RETURNreturnvaleurs retournées
T_SL<<opérateurs sur les bits
T_SL_EQUAL<<=opérateurs d'assignation
T_SR>>opérateurs sur les bits
T_SR_EQUAL>>=opérateurs d'assignation
T_START_HEREDOC<<<syntaxe heredoc
T_STATICstaticscope de variable
T_STRING
T_STRING_CAST(string)transtypage
T_STRING_VARNAME
T_SWITCHswitchswitch
T_THROWthrowLes exceptions (disponible depuis PHP 5.0.0)
T_TRYtryLes exceptions (disponible depuis PHP 5.0.0)
T_UNSETunset()unset()
T_UNSET_CAST(unset)type-casting (disponible depuis PHP 5.0.0)
T_USEusenamespaces (disponible depuis PHP 5.3.0)
T_VARvarclasses et objets
T_VARIABLE$foovariables
T_WHILEwhilewhile, do...while
T_WHITESPACE
T_XOR_EQUAL^=opérateurs d'assignation
Source http://www.php.net/manual/fr/tokens.php

Libellés : , ,


Abonnement Messages [Atom]