Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IDENTIFICATION (CLASS+SESSION+MYSQL)


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 10/10/2003 Date de mise à jour : 10/10/2003 19:11:10 Vu / téléchargé: 12 608 / 1 397

Note :
7,83 / 10 - par 6 personnes
7,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Voici une identification simple, un bon moyen par la même occasion pour faire une approche des class en php:
Dans cette exemple nous utiliserons comme méthodes :
  - Les Class pour une gestion plus aisée des fonctionnalités du projet.
  - La Base de données MySQL pour la gestion et le stockage des informations
  - Les Sessions pour un maintient de l'etat d'identification.

IL se décompose de 4 fichiers
  - access.inc.php
  - access.php
  - access.html
  - index.php

Nous allons mettre en place une certaine discipline de codage afin que ce code soit comprehensible en plus facilement transportable:

- Précéder toujours les variables ,les constantes et les fonctions de l'abréviation de leur type ou du type qu'il retourne pour les fonctions.
  int_    : integer
  str_    : string
  flo_    : float
  arr_    : array
  boo_  : boolean
  cls_    : class
  sess_ : session
  var_   : variant
  exemple
  la variable bdd est de type integer donc je l'écris int_bdd
  la fonction access me renvoie un type boolean donc j'écris function boo_access()

- Mettre toujours les constantes en majuscule.
  STR_BDNAME

- Donner des nom de variables, constantes et fonctions le plus court possible et le plus représentatif de son utilisation.

- Commenter le code ni trop ni trop peu.
 

Source

  • Pour l'exemple, nous allons procéder par étape:
  • A] Création de la base de données :
  • - Créez une table - tbl_user -
  • - Créez 3 champs : user_iduser : INT(11) NOT NULL PRIMARY AUTO INCR
  • user_user : varchar(12) NOT NULL
  • user_pass : varchar(12) NOT NULL
  • B] Création du fichier access.inc.php :
  • 1) Définition les constantes de connection BDD:
  • <?
  • // Constante de connection à la base de données
  • define(STR_DBHOTE,"nom_de_l_hote_serveur_mysql");
  • define(STR_DBNAME,"nom_de_la_base_de_données");
  • define(STR_DBUSER,"user_de_la_base_de_données");
  • define(STR_DBPASS,"pass_de_la_base_de_données");
  • ?>
  • 2) Création de la class access :
  • <?
  • // Class access
  • class access()
  • {
  • // Ce que vous appelez variables se nomme dans une Class - Attribut -
  • // (Lorsqu'elles se situent à ce niveau dans la class)
  • // Utilisation d'un attribut : $this->nomdelavariable
  • // Ce que vous appelez fonction se nomme dans une Class - Méthode -
  • // Utilisation d'une methode : $this->nomdelamethode($var)
  • /* -------------------------------------------------------------------------- */
  • // Liste des attributs de la class
  • /* --------------------------------------------------------------------------- */
  • var int_bdd;
  • var str_user;
  • var str_pass;
  • /* --------------------------------------------------------------------------- */
  • // Initialisation de la class (ou Constructeur)
  • /* --------------------------------------------------------------------------- */
  • function access()
  • {
  • // Ouverture de session
  • session_start();
  • }
  • /* --------------------------------------------------------------------------- */
  • // Création de la méthode d'identification
  • // paramètres entrants : $str_user ;string ;def: "" : Login
  • // $str_pass ;string ;def: "" : Mot de passe
  • // paramètres sortants : vrai ou faux ;boolean ;def: faux : resultat
  • /* --------------------------------------------------------------------------- */
  • function boo_identification($str_user = "", $str_pass = "")
  • {
  • // Acces aux variables de session
  • global $sess_user, $sess_pass;
  • // Connection au serveur MySQL + gestion d'erreur.
  • if( !($this->bdd=@mysql_connect(STR_DBHOTE, STR_DBUSER,STR_DBPASS)) ) return false;
  • // Connection à la Bdd + gestion d'erreur.
  • if( !(@mysql_select_db("STR_DBNAME",$this->bdd)) ) return false;
  • // Récupération des paramètres entrants
  • if($str_user=="" || $str_pass=="")
  • {
  • // Récupération des paramètres de sessions
  • $str_user=$sess_user;
  • $str_pass=$sess_pass;
  • if($str_user=="" || $str_pass=="") return false;
  • }
  • // Vérification des identifiants dans la base de données
  • $arr_data = mysql_query("SELECT * FROM tbl_user WHERE LCASE(user_user) = '".strtolower($str_user)."' AND LCASE(user_pass) = '".strtolower($str_pass)."'");
  • if(mysql_num_rows($arr_data)>0)
  • {
  • // Enregistrement des informations dans les variables de sessions
  • $sess_user = $str_user;
  • session_register("sess_user");
  • $sess_pass = $str_pass;
  • session_register("sess_pass");
  • return true;
  • } else return false;
  • }
  • }
  • ?>
  • C] Création du fichier access.php :
  • Ce fichier va servir de filtre d'identification, Il sera à inclure dans tous les pages nécessitant une identification (appel: include("access.php"); )
  • <?
  • // Ouverture de session
  • session_start();
  • // Initialisation de la class access (ou Instance)
  • $cls_access = new access();
  • // Vérification des identifiants par appel de la méthode boo_identification
  • if( !$cls_access->boo_identification($str_frm_user, $str_frm_pass) )
  • {
  • // Destruction de la session
  • @session_destroy();
  • // Vérification que l'url de redirection n'est pas vide
  • if($str_url=="") $str_url = $_SERVER['SERVER_NAME'];
  • // Script javascript de redirection à la page d'identification
  • // (En dehors des balise PHP)
  • ?>
  • <script>
  • alert("Problème d'identification!\nVeuillez vous identifier.\nMerci");
  • top.document.location.href = "http://<? print($str_url); ?>";
  • </script>
  • <?
  • }
  • ?>
  • D] Création du fichier access.html
  • Ce fichier est le formulaire d'identification. Les informations saisie seront envoyées à la première page de l'acces privé - index.php - ).
  • <html>
  • <head>
  • <title>Identification</title>
  • </head>
  • <script>
  • // Vérification des champs vides
  • function IsEmpty(chaine,err) {
  • if(chaine=="") return true;
  • else return err;
  • }
  • // Envois des informations
  • function send() {
  • var vide = false;
  • vide = IsEmpty(document.frmaccess.str_frm_user.value,vide);
  • vide = IsEmpty(document.frmaccess.str_frm_pass.value,vide);
  • if(vide) alert("Tous les champs obligatoires (*) ne sont pas remplis.");
  • else document.accesform.submit();
  • }
  • </script>
  • <body>
  • <center>
  • <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
  • <tr>
  • <td align="center" class="titre1">IDENTIFICATION</b></td>
  • </tr>
  • <tr>
  • <td align="center"><table border="1" cellpadding="0" cellspacing="0" width="30%" height="50%">
  • <form name="frmaccess" action="index.php" method="post">
  • <tr>
  • <td width="15%" align="center" bgcolor="#FFFCEB">Login*&nbsp;:</td>
  • <td width="15%" align="center" bgcolor="#CEBFFF"><input type="text" name="str_frm_user" value="" maxlength="12"></td>
  • </tr>
  • <tr>
  • <td width="15%" align="center" bgcolor="#FFFCEB">Mot de passe*&nbsp;:</td>
  • <td width="15%" align="center" bgcolor="#CEBFFF"><input type="password" name="str_frm_pass" value="" maxlength="12"></td>
  • </tr>
  • <tr>
  • <td colspan="2" align="center"><a href="javascript:send()">Valider</a></td>
  • </tr>
  • </form>
  • </table></td>
  • </tr>
  • <tr>
  • <td align="centerby <a href="http://www.apxa.com" target="_blank">ApxA</a></td>
  • </tr>
  • </table>
  • </center>
  • </body>
  • </html>
  • E] Création du fichier index.php
  • <?
  • include("access.php");
  • ?>
  • <html>
  • <head>
  • <title>Identification</title>
  • </head>
  • <body>
  • <center>
  • <h1>Bonjour et bienvenue dans un accés nécessitant une identification.
  • Ce code vous est proposé par <a href="http://www.apxa.com" target="_blank">ApxA</a></h1>
  • </center>
  • </body>
  • </html>
Pour l'exemple, nous allons procéder par étape:

A] Création de la base de données :
    - Créez une table - tbl_user -
    - Créez 3 champs : user_iduser  : INT(11) NOT NULL PRIMARY AUTO INCR
                                user_user    :  varchar(12) NOT NULL
                                user_pass    :  varchar(12) NOT NULL

B] Création du fichier access.inc.php :
    1) Définition les constantes de connection BDD:
    <?
    // Constante de connection à la base de données
    define(STR_DBHOTE,"nom_de_l_hote_serveur_mysql");
    define(STR_DBNAME,"nom_de_la_base_de_données");
    define(STR_DBUSER,"user_de_la_base_de_données");
    define(STR_DBPASS,"pass_de_la_base_de_données");
    ?>
    2) Création de la class access :
    <?
    // Class access
    class access()
    {
      // Ce que vous appelez variables se nomme dans une Class - Attribut -
      // (Lorsqu'elles se situent à ce niveau dans la class)
      // Utilisation d'un attribut : $this->nomdelavariable
      // Ce que vous appelez fonction se nomme dans une Class - Méthode -
      // Utilisation d'une methode : $this->nomdelamethode($var)

      /* -------------------------------------------------------------------------- */
      // Liste des attributs de la class
      /* --------------------------------------------------------------------------- */
      var int_bdd;
      var str_user;
      var str_pass;

      /* --------------------------------------------------------------------------- */
      // Initialisation de la class (ou Constructeur)
      /* --------------------------------------------------------------------------- */
      function access()
      {
        // Ouverture de session
        session_start();
      }

      /* --------------------------------------------------------------------------- */
      // Création de la méthode d'identification
      // paramètres entrants : $str_user     ;string    ;def: ""     : Login
      //                                 $str_pass    ;string    ;def: ""     : Mot de passe
      // paramètres sortants : vrai ou faux ;boolean ;def: faux : resultat
      /* --------------------------------------------------------------------------- */
      function boo_identification($str_user = "", $str_pass = "")
      {
        // Acces aux variables de session
        global $sess_user, $sess_pass;

        // Connection au serveur MySQL + gestion d'erreur.
        if( !($this->bdd=@mysql_connect(STR_DBHOTE, STR_DBUSER,STR_DBPASS)) ) return false;

        // Connection à la Bdd + gestion d'erreur.
        if( !(@mysql_select_db("STR_DBNAME",$this->bdd)) ) return false;

        // Récupération des paramètres entrants
        if($str_user=="" || $str_pass=="")
        {
           // Récupération des paramètres de sessions
           $str_user=$sess_user;
           $str_pass=$sess_pass;
           if($str_user=="" || $str_pass=="") return false;
        }

        // Vérification des identifiants dans la base de données
        $arr_data = mysql_query("SELECT * FROM tbl_user WHERE LCASE(user_user) = '".strtolower($str_user)."' AND LCASE(user_pass) = '".strtolower($str_pass)."'");
        if(mysql_num_rows($arr_data)>0)
        {
           // Enregistrement des informations dans les variables de sessions
           $sess_user = $str_user;
           session_register("sess_user");
           $sess_pass = $str_pass;
           session_register("sess_pass");
           return true;
        } else return false;
      }

    }
    ?>

C] Création du fichier access.php :
    Ce fichier va servir de filtre d'identification, Il sera à inclure dans tous les pages nécessitant une identification (appel: include("access.php"); )
    <?
    // Ouverture de session
    session_start();

    // Initialisation de la class access (ou Instance)
    $cls_access = new access();

    // Vérification des identifiants par appel de la méthode boo_identification
    if( !$cls_access->boo_identification($str_frm_user, $str_frm_pass) )
    {
       // Destruction de la session
       @session_destroy();

       // Vérification que l'url de redirection n'est pas vide
       if($str_url=="") $str_url = $_SERVER['SERVER_NAME'];

       // Script javascript de redirection à la page d'identification
       // (En dehors des balise PHP)
       ?>
       <script>
         alert("Problème d'identification!\nVeuillez vous identifier.\nMerci");
         top.document.location.href = "http://<? print($str_url); ?>";
       </script>
       <?
    }
    ?>

D] Création du fichier access.html
    Ce fichier est le formulaire d'identification. Les informations saisie seront envoyées à la première page de l'acces privé - index.php - ).
<html>
<head>
  <title>Identification</title>
</head>
<script>
  // Vérification des champs vides
  function IsEmpty(chaine,err) {
    if(chaine=="") return true;
    else return err;
  }

  // Envois des informations
  function send() {
    var vide = false;
    vide = IsEmpty(document.frmaccess.str_frm_user.value,vide);
    vide = IsEmpty(document.frmaccess.str_frm_pass.value,vide);
    if(vide) alert("Tous les champs obligatoires (*) ne sont pas remplis.");
    else  document.accesform.submit();
  }
</script>
<body>
<center>
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">
  <tr>
    <td align="center" class="titre1">IDENTIFICATION</b></td>
  </tr>
  <tr>
    <td align="center"><table border="1" cellpadding="0" cellspacing="0" width="30%" height="50%">
    <form name="frmaccess" action="index.php" method="post">
        <tr>
          <td width="15%" align="center" bgcolor="#FFFCEB">Login*&nbsp;:</td>
          <td width="15%" align="center" bgcolor="#CEBFFF"><input type="text" name="str_frm_user" value="" maxlength="12"></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="#FFFCEB">Mot de passe*&nbsp;:</td>
          <td width="15%" align="center" bgcolor="#CEBFFF"><input type="password" name="str_frm_pass" value="" maxlength="12"></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><a href="javascript:send()">Valider</a></td>
        </tr>
    </form>
    </table></td>
   </tr>
   <tr>
     <td align="centerby <a href="http://www.apxa.com" target="_blank">ApxA</a></td>
   </tr>
</table>
</center>
</body>
</html>

E] Création du fichier index.php
<?
include("access.php");
?>
<html>
<head>
  <title>Identification</title>
</head>
<body>
<center>
<h1>Bonjour et bienvenue dans un accés nécessitant une identification.
Ce code vous est proposé par <a href="http://www.apxa.com" target="_blank">ApxA</a></h1>
</center>
</body>
</html>

Conclusion

Ce projet n'a pas été testé.
Théoriquement il devrait fonctionner.
Bonne programmation et have fun ;)

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de AngelWide92 le 10/10/2003 13:29:50

Bravo titi !!!
Ta source lé bien commentée ca fait plaisir!
De plus moi qui me demène kom bcp je v avant bien plus vite
merci bien a toi c gentil bize Angie

signaler à un administrateur
Commentaire de lumesh le 10/10/2003 18:31:50

Salut Apxa !

Ca fait un moment dites donc mon bon mossieur :)
Pas mal du tout ta source, j'ai pas testouillé mais comme ca je pense aussi que ca devrait marcher :)

Allez bonne prog a toi et a la revoyure :)

signaler à un administrateur
Commentaire de Dikky le 02/11/2003 02:34:11

Salut les gars,
comme elle n'avait pas été testée, je me suis permis de le faire,
on me retourne cette erreur :
Fatal error: Cannot instantiate non-existent class: access in ... estaccess.php on line 10

line 10 etant     $cls_access = new access();

Si vous trouvez pourquoi ca m'arrangerait ;)

signaler à un administrateur
Commentaire de devilredneck le 12/12/2003 15:06:11

c'est tout simple ton erreur :

C] Création du fichier access.php :
    Ce fichier va servir de filtre d'identification, Il sera à inclure dans tous les pages nécessitant une identification (appel: include("access.php"); )

la include n'a pas ete ecrit dans la source mais dans le commentaire.

il faut juste copier include("access.php"); dans ton code juste apres le session_start();

par contre, juste comme ca ...

global &lt;variable&gt;; c assez "crade" quand même ...
pkoi : l'origine de la variable est impossible à determinée.
si c'est une variable de session, mieux vaut utiliser :
    $_SESSION["lenomdelavariable"]
pour acceder a cette variable.

il existe d'autre tableaui comme $_SESSION, par exemple $_GET ou $_POST ou meme $_GLOBAL (si je ne me trompe pas)

voila !

++

signaler à un administrateur
Commentaire de fredzool le 25/12/2003 21:21:14

avec mon code
&lt;?
...........
..........
..........
?&gt;
les sessions passe bien mais si j inclu a la suite de ?&gt; du code html
je perds les variables de ma session pk et que faire

merci
freedzool@wanadoo.fr

signaler à un administrateur
Commentaire de mfaraday le 04/03/2004 13:51:32

Salut,

Juste une petite question.
dans access.php tu lances un "session.start()" et après tu instancie un acces avec "new access()". mais la fonction "access()" lance déjà une session avec "session.start()", alors ne peut on pas faire directement :

acces.php:
ssssssssssss
&lt;?
// instance de la classe access
$cls_access = new access();

...
?&gt;

::Max::

signaler à un administrateur
Commentaire de mfaraday le 04/03/2004 13:53:27

Sinon : 10/10. Enfin un script clair utilisant session et classe

::Max::

signaler à un administrateur
Commentaire de docsha le 18/03/2004 16:00:18

Bonjour a tous


Debutant en php, je me suis a la construction d'un site et bien sur je me retrouve deja face a un problem ..;

si j'ai bien compris on peut conserver des infos ('pendant toute la duree de la session) dans $_SESSION . Mais on peut aussi transferer des infos de page en  page , via lles methodes POST/GET. De plus on peut aussi simuler ce transfert de données via un cookie.

Ma question est donc la suivante :  Quelle methode choisr ? Pourquoi ne pas se prendre la tete et tout mettre dans des variables de session ?  De plus il semblerai que les methodes GET/POSt soient moins securisees que les sessions , alors pourquoi encore utiliser la methode GET/POST ?

en esperant que la question interressera quelqu'un :))
merci
a+


ps : Il va de soit que ma question ne concerne que le langage php (mais des remarques annexes st aussi le bien venues :)

signaler à un administrateur
Commentaire de docsha le 18/03/2004 16:00:35

Bonjour a tous


Debutant en php, je me suis a la construction d'un site et bien sur je me retrouve deja face a un problem ..;

si j'ai bien compris on peut conserver des infos ('pendant toute la duree de la session) dans $_SESSION . Mais on peut aussi transferer des infos de page en  page , via lles methodes POST/GET. De plus on peut aussi simuler ce transfert de données via un cookie.

Ma question est donc la suivante :  Quelle methode choisr ? Pourquoi ne pas se prendre la tete et tout mettre dans des variables de session ?  De plus il semblerai que les methodes GET/POSt soient moins securisees que les sessions , alors pourquoi encore utiliser la methode GET/POST ?

en esperant que la question interressera quelqu'un :))
merci
a+


ps : Il va de soit que ma question ne concerne que le langage php (mais des remarques annexes st aussi le bien venues :)

signaler à un administrateur
Commentaire de apxa le 18/03/2004 16:33:27

Iop docsha,
en fait les var de session prennent de la place sur le disque serveur vu que c des cookies serveur side.
faire des acces permanant sur le disque pour des choses qui ne valent pas la peine d'être mis en session s'avere donc inutile et usant.
en général tu conserve ds des session des id qui font reference a des informations elles stocké dans une base de données ce qui te permet d'alléger les charges sur le serveur ainsi que l'acces aux informations.
En ce qui concerne la sécurité:
- dans le cas d'un serveur dédié autant passer en ssl.
- dans le cas d'un mutualisé les var de sessions sont autant vulnérables que celle du client (biensure tout est relatif à une bonne configuration du serveur).

Pour ce qui concerne les méthode get et post elles ont toutes les deux leurs avantages et leurs inconvenients:
le cas le plus courant de choix d'utilisation est du au nombre de caractère envoyé d'une page à une autre (le get etant plus petit) et au masquage des informations dans l'entete par le post.
l'inconveniant du post est qu'il faut en général passé par un formulaire (ce qui n'est pas toujours le cas lorsque l'on connait le protocole http ainsi que les functions prévu pour).

voila.

signaler à un administrateur
Commentaire de docsha le 18/03/2004 16:43:26

salut apxa

merci beaucoup , ma lanterne est bien eclairée .
a bientot  :))


signaler à un administrateur
Commentaire de g_barthe le 15/02/2007 19:04:44

Bonsoir,
J'ai un soucis avec ce code source :

Fatal error: Class 'access' not found in C:\Program Files\xampp\htdocs\prog_perso\gest_horaire_be\access.php on line 6

Et je me demande pourquoi on appele jamais le fichier .inc.php alors que ce fichier contient les classes.

J'ai peut etre pas tout compris mais ca me bloque qd meme. Une ame charitable serait la bienvenue. Merci d'avance.

signaler à un administrateur
Commentaire de yonel le 14/03/2007 10:13:54

Salut à tous.
Voici mon message d'erreur:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/139/sdc/e/3/magetyo/securise/entete.php:9) in /mnt/139/sdc/e/3/magetyo/securise/access.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/139/sdc/e/3/magetyo/securise/entete.php:9) in /mnt/139/sdc/e/3/magetyo/securise/access.php on line 3

Sachant que entete.php à la ligne 9 c'est juste <link rel="stylesheet" href="style.css" type="text/css">.
Alors je ne sais pas quoi faire.
Merci pour votre aide

signaler à un administrateur
Commentaire de yonel le 14/03/2007 11:05:17

C'est bon j'ai trouvé tout seul.
C'est parce que j'utilisait une meta de redirection...

débutant ;-)

signaler à un administrateur
Commentaire de yonel le 14/03/2007 11:43:45

Eh bien non ça ne marche pas mieux en fait:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/139/sdc/e/3/magetyo/securise/access.php:1) in /mnt/139/sdc/e/3/magetyo/securise/access.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/139/sdc/e/3/magetyo/securise/access.php:1) in /mnt/139/sdc/e/3/magetyo/securise/access.php on line 3

Voici le début du code de access.php:

    <?
    // Ouverture de session
    session_start();
include "access.php";

Et voici le début de mes pages:

<?php include "access.php";?>
<?php include "entete.php";?>
<?php include "menu.php";?>


Aidez-moi svp... ;-(

signaler à un administrateur
Commentaire de yotamanga le 29/05/2007 16:46:44

Le message d'erreur retourné concerne la session ^^
session_start() doit toujours etre en début de code ^^

fais plutot :
<?php session_start();
      include "access.php";
      include "entete.php";
      include "menu.php";?>

et pas de session_start(); dans access.php

en espérant que cela marche

signaler à un administrateur
Commentaire de titou_hello le 05/11/2007 10:33:46 10/10

Belle source :)

signaler à un administrateur
Commentaire de patric31 le 28/11/2008 08:59:04

Bonjour à tous,

Je suis un tout petit débutant, je ne sais pas si il y a un niveau en dessous . . .

Je viens de tester le code et j'ai créé dans Mysql un user.

Seulement j'ai cette erreur qui s'affiche :
Ligne : 19
Car : 7
Erreur : 'document.accessform' a la valeur Null ou n'est pas un obje
Code 0
URL : http://127.0.0.1/irp/access.html

La ligne 19 : else document.accesform.submit();

Merci beaucoup pour votre aide.
Patrick

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.