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.
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
- Simulateur de vol
- Visite du monde avec une vue à la première personne
- Affichage d'exo-planetes
- Dessiner sur la Terre
- Le ciel étoilé mais avec les informations en plus lorsque vous cliquez sur les étoiles
- Resoudre un Puzzle sur la Terre
Libellés : 3d games, developpement web, google earth, google earth api, google maps api
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 : developpement web, fonctions PHP, PHP
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 : astuces, developpement web, MySQL, SQL
vendredi 17 juillet 2009
Web > Codes d'erreur 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)
- 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)
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 : AJAX, developpement web, erreurs AJAX, javascript
PHP > Liste des codes d'erreurs PHP
| EREEUR | ORIGINE | Référence PHP |
|---|---|---|
| T_ABSTRACT | abstract | Abstraction de classes (disponible depuis PHP 5.0.0) |
| T_AND_EQUAL | &= | opérateurs d'assignation |
| T_ARRAY | array() | array(), syntaxe de tableau |
| T_ARRAY_CAST | (array) | transtypage |
| T_AS | as | foreach |
| 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_BREAK | break; | break |
| T_CASE | case | switch |
| T_CATCH | catch | Les exceptions (disponible depuis PHP 5.0.0) |
| T_CHARACTER | ||
| T_CLASS | class | classes et objets |
| T_CLASS_C | __CLASS__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_CLONE | clone | classes et objets. (disponible depuis PHP 5.0.0) |
| T_CLOSE_TAG | ?> ou %> | |
| T_COMMENT | // ou #, et /* */ en PHP 5 | commentaires |
| T_CONCAT_EQUAL | .= | opérateurs d'assignation |
| T_CONST | const | |
| T_CONSTANT_ENCAPSED_STRING | "foo" ou 'bar' | syntaxe chaîne de caractères |
| T_CONTINUE | continue | |
| T_CURLY_OPEN | ||
| T_DEC | -- | opérateurs d'incrémention/décrémention |
| T_DECLARE | declare | declare |
| T_DEFAULT | default | switch |
| T_DIR | __DIR__ | constantes magiques (disponible depuis PHP 5.3.0) |
| T_DIV_EQUAL | /= | opérateurs d'assignation |
| T_DNUMBER | 0.12, etc. | nombres à virgule flottante |
| T_DOC_COMMENT | /** */ | style de commentaire dans la PHPDoc (disponible depuis PHP 5.0.0) |
| T_DO | do | do...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_ECHO | echo | echo() |
| T_ELSE | else | else |
| T_ELSEIF | elseif | elseif |
| T_EMPTY | empty | empty() |
| T_ENCAPSED_AND_WHITESPACE | ||
| T_ENDDECLARE | enddeclare | declare, syntaxe alternative |
| T_ENDFOR | endfor | for, syntaxe alternative |
| T_ENDFOREACH | endforeach | foreach, syntaxe alternative |
| T_ENDIF | endif | if, syntaxe alternative |
| T_ENDSWITCH | endswitch | switch, syntaxe alternative |
| T_ENDWHILE | endwhile | while, syntaxe alternative |
| T_END_HEREDOC | syntaxe heredoc | |
| T_EVAL | eval() | eval() |
| T_EXIT | exit or die | exit(), die() |
| T_EXTENDS | extends | extends, classes et objets |
| T_FILE | __FILE__ | constantes magiques |
| T_FINAL | final | Mot-clé "final" (disponible depuis PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | fonctions |
| T_FUNC_C | __FUNCTION__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_GLOBAL | global | scope de variable |
| T_GOTO | goto | non documenté (disponible depuis PHP 5.3.0) |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponible depuis PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | Interfaces (disponible depuis PHP 5.0.0) |
| T_INC | ++ | opérateurs d'incrémention/décrémention |
| T_INCLUDE | include() | include() |
| T_INCLUDE_ONCE | include_once() | include_once() |
| T_INLINE_HTML | ||
| T_INSTANCEOF | instanceof | opérateurs de type (disponible depuis PHP 5.0.0) |
| T_INT_CAST | (int) ou (integer) | transtypage |
| T_INTERFACE | interface | Interfaces (dipsonible depuis PHP 5.0.0) |
| T_ISSET | isset() | 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_LIST | list() | list() |
| T_LNUMBER | 123, 012, 0x1ac, etc | entiers |
| T_LOGICAL_AND | and | opérateurs logiques |
| T_LOGICAL_OR | or | opérateurs logiques |
| T_LOGICAL_XOR | xor | opé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_NEW | new | classes et objets |
| T_NUM_STRING | ||
| T_OBJECT_CAST | (object) | transtypage |
| T_OBJECT_OPERATOR | -> | classes et objets |
| T_OLD_FUNCTION | old_function | (uniquement PHP 4) |
| T_OPEN_TAG | sortie du mode HTML | |
| T_OPEN_TAG_WITH_ECHO | sortie 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_PRINT | print() | print() |
| T_PRIVATE | private | classes et objets (disponible depuis PHP 5.0.0) |
| T_PUBLIC | public | classes et objets (disponible depuis PHP 5.0.0) |
| T_PROTECTED | protected | classes et objets (disponible depuis PHP 5.0.0) |
| T_REQUIRE | require() | require() |
| T_REQUIRE_ONCE | require_once() | require_once() |
| T_RETURN | return | valeurs 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_STATIC | static | scope de variable |
| T_STRING | ||
| T_STRING_CAST | (string) | transtypage |
| T_STRING_VARNAME | ||
| T_SWITCH | switch | switch |
| T_THROW | throw | Les exceptions (disponible depuis PHP 5.0.0) |
| T_TRY | try | Les exceptions (disponible depuis PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | type-casting (disponible depuis PHP 5.0.0) |
| T_USE | use | namespaces (disponible depuis PHP 5.3.0) |
| T_VAR | var | classes et objets |
| T_VARIABLE | $foo | variables |
| T_WHILE | while | while, do...while |
| T_WHITESPACE | ||
| T_XOR_EQUAL | ^= | opérateurs d'assignation |
Libellés : developpement web, erreurs PHP, PHP
Abonnement Messages [Atom]
Erreurs 404 

