Chrooter apache
Matériel
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Astuces
Ajout d'une imprimante
Réseau
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Installer un LAMP sous mandriva
Sécurité
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Faire des sauvegardes incrémentales
Rsync
Nessus
Divers
Elisa, le multimédia facile
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
Compiler ses rpms
Graver en ligne de commande
Graver un fichier avi pour un dvd de salon
Récupérer des fichiers effacés
Liens
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Traductions LG
Toutes les traductions
Traductions Phrack
Toutes les traductions

Il y a actuellement 7 visiteurs connectés sur le site !

Google

Résumé du langage PHP
Resume du langage PHP

 

Quelques particularités syntaxiques
Structures de données
Types
Constantes et variables
Tableaux
Expressions et opérateurs
Chaines de caractères
Structures de contrôle
Structure switch
Boucles
Définitions de fonctions

 

Quelques particularites syntaxiques

Ces notes supposent une connaissance de base de la syntaxe du langage C. Elles mettent l'accent sur les particularités de PHP en comparaison avec les syntaxes voisines des langages Java, Perl.
  • Diverses notations pour commentaires : //, /* ....*/, #
  • PHP distingue la casse
  • Les variables simples ont un identificateur commençant par $ (idem les variables scalaires en Perl).
  • Les variables ne font pas l'objet d'une déclaration préalable de type. Cette apparente facilité est une source commune d'erreurs syntaxiques (l'interpréteur ne remarquera pas une petite faute !)
  • * L'opérateur de concaténation du texte est le point . comme en Perl, et non + comme en Java

Structures de données

Types

* On distingue en PHP les types scalaires entier (sur 4 octets, par exemple 2), double (2.0) et chaine ("2") et les types structurés tableau (liste ou associatif) et classe

* Pas de type booléen Comme en C ou en Perl une valeur numérique zéro 0 ou 0.0 signifie FAUX, de meme que "0" et la chaine vide "".
Toute autre valeur est considérée comme vraie
Malgré l'absence du type, les constantes usuelles TRUE et FALSE existent.
$trouve=0 /* trouve est FALSE */
while (!$trouve) {
/* au début !$trouve = 1 = TRUE */
if (....)
trouve = 1 ;
/* trouve devient vraie */
}

Constantes et variables

# On peut définir des constantes, de valeur invariable, par la fonction define. Par exemple :

define(PI, 3.14159); define(rouge, "#FF0000");
if (defined("PI")) echo "La valeur approchée de PI est ", PI
# Les variables ont des noms précédés du symbole distinctif $

Elles ne nécessitent pas de déclaration avant usage. Leur type est fixé dès leur première affectation.
Ce très faible typage des variables qui rappelle JavaScript, s'il peut paraitre simplificateur est lourd de danger. Il est préférable de ne pas en changer dynamiquement par affectation. En fait, cette absence de contrôle de type devient une difficulté pour le programmeur, qui doit rester particulièrement vigilant (il n'y a pas de mode "strict" comme en Perl)

# Par exemple, cette séquence est acceptée, mais à éviter !

 <?
$a=10 ; echo "\$a = $a  <BR>" ;
$a="Bonjour à tous !"; echo "\$a =  $a ";
?>
$a = 10
$a = Bonjour à tous !

  • Conversion de types des variables :

  • par l'opérateur d'addition + L'opérateur + est réservé à l'addition (la concaténation étant l'opérateur .) Il cherche à convertir des chaines en nombres avant évaluation, si cela est possible. Par exemple, comparer :
     <?
    $a = 3 ;  $b=" 7 rue Linux Torwalds" ;
    $c= $a + $b ;
    echo " \$a + \$b = $a + $b <BR>" ;
    echo " \$a + \$b = $c" ;
    ?>
    $a + $b = 3 + 7 rue Linux Torwalds
    $a + $b = 10

  • par "cast" (semblable à Java) $a = 3.543 ; $b = (int) $a + 1 ; $ch = "les ". (string) $b ." saisons" ---> $b= 4 ; $ch = "les 4 saisons"

  • Information ou fixation de type gettype($var) récupére le type actuel de la variable $var et renvoie l'une des valeurs chaines integer, double, string, array, object ou class settype($var, "integer") fixe le type et change la valeur en conséquence
 <?
$x = 7.5 ;
$type =gettype($x);
echo "\$x = $x , de type $type <BR>";
settype($x, "integer");
$type =gettype($x);
echo "\$x = $x , de type $type";
?>
$x = 7.5 , de type double
$x = 7 , de type integer

Tableaux

  • Les tableaux sont de taille variable, et les éléments peuvent être de type différents Les valeurs sont des ensembles ordonnés et indicés , ou bien associées à une clé (tableau associatif) L'initialisation est permise avec le constructeur array, ou en donnant la suite des éléments

  • Nombre d'éléments La fonction count($tab) donne le nombre d'éléments actuels du tableau $tab
  • Les exemples suivants illustrent la souplesse des différentes façons de définir un tableau
    <?
    $tab = array (10, 15, "trois");
    echo "\$tab[1] vaut $tab[1]" ;
    $depart = array ("Paris" =>"75","Melun"=>"77","Bobigny"=>"93");
    echo "Melun se trouve dans le $depart[\"Melun\"]";
    $villes[0] = "Paris"; $villes[]="Rennes"; $villes[] = "Toulouse";
    echo "Je me déplace de $villes[0] à $villes[2]" ;
    $nombre=count ( $villes ) ;
    echo "Le tableau \$villes possède <b>$nombre</b> éléments";
    $semestre1 =array(1=>"Janvier","Février","Mars", "Avril","Mai","Juin");
    echo "\$semestre1[3] = $semestre1[3] ";
    ?>
    $tab[1] vaut 15
    Melun se trouve dans le 77
    Je me déplace de Paris à Toulouse
    Le tableau $villes possède 3 éléments
    $semestre1[3] = Mars

  • Parcours d'un tableau indicé
    La construction suivante est standard dans le cas usuel d'un tableau dont le premier élément porte l'indice 0
    (cette partie anticipe sur les structures itératives.
    $nb= count($tab);
    for ( $i=0; $i < $nb ; $i++)
    echo $tab[$i] . "
    ";

  • Parcours d'un tableau associatif Dans ce cas l'indice est remplacé par une chaine appelée la clé, à laquelle correspond la valeur de l'élément du tableau.
    // déplace le pointeur au début du tableau
    reset ($tab);
    while ( list ($cle, $valeur) = each ( $tab )
    echo "$cle ---> $valeur
    ";

  • Exemple : tableau $semestre
    Code PHP Exécution

    3 parcours d'un tableau associatif


    <?
    $semestre = array(1=>"Janvier","Février","Mars", "Avril","Mai","Juin");
    echo "Parcours du tableau \$semestre<BR>";
    $nb= count($semestre);
    for ( $i=1; $i <= $nb ; $i++)
    echo "\$semestre[$i] = $semestre[$i] <BR>";
    echo "Liste des mois du semestre<BR>";
    foreach ( $semestre as $mois )
    echo "$mois <BR>";
    echo "Liste des associations (clé, valeur)<BR>";
    reset ($semestre);
    while ( list ($cle, $valeur) = each ( $semestre) )
    echo "$cle ---> $valeur <BR>";
    ?>
    Parcours du tableau $semestre
    $semestre[1] = Janvier
    $semestre[2] = Février
    $semestre[3] = Mars
    $semestre[4] = Avril
    $semestre[5] = Mai
    $semestre[6] = Juin
    Liste des mois du semestre
    Janvier
    Février
    Mars
    Avril
    Mai
    Juin
    Liste des associations (clé, valeur)
    1 ---> Janvier
    2 ---> Février
    3 ---> Mars
    4 ---> Avril
    5 ---> Mai
    6 ---> Juin

  • Autres fonctions tableaux
    o key()
    o current()
    o next() et prev()
    o sort() tri les éléments du tableau en les renumérotant à partir de 0
    o asort() tri les éléments sans réaffecter les indices ou les clés
    o rsort() et arsort() ont le même rôle en triant dans le sens décroissant.
    o ksort() et krsort() tri suivant les valeurs (croissante ou décriossante) des clés
    o explode() et implode

    Expressions et operateurs

    * Une expression est une construction du langage utilisant des variables, des littéraux et des opérateurs et qui est évaluable.

    Toute expression peut être interprétée, suivant le contexte, comme une expression booléenne.

    * Les opérateurs arithmétiques, d'affectation et d'incrémentation du C sont utilisables

    $facto=1 ;
    for ( $i=1 ; $i <= 10; $i++ )
    $facto *= $i ;

    * La concaténation de chaines est notée . comme en Perl. Attention à ne pas la confondre avec le point décimal : echo "3"."5"; comme echo 3 . 5; affiche 35, à différencier de echo 3.5;

    $ch = "Bonjour ";
    $ch .= "tout le monde !" ;
    * Les opérateurs de comparaison et logiques sont usuels. A noter que && et || peuvent être aussi notés and, or, et que xor est le ou exclusif

    * Attention à l'erreur classique héritée du C (évitée en Java)
    $a=3; $b=4 ;
    // comparaison correcte, sa valeur est bien FALSE
    if ($a == $ba) echo "vrai"; else echo "faux";
    // comparaison incorrecte, c'est une affectation dont la valeur est TRUE (et $a vaut 4) !
    if ($a = $ba) echo "vrai"; else echo "faux";

    Chaines de caracteres

    Quelques fonctions utiles : explode
    Exercice
    Ecrire une fonction qui contrôle la vraisemblance d'une adresse IP passée en paramètre et renvoie en conséquence vrai ou faux.

    Structure de controle

    Conditionnelles
    * Structure if
    o Syntaxes

    if (condition) { bloc1; }
    else {bloc2; }
    if (condition1) { bloc1; }
    elseif (condition2) { bloc2; }
    elseif (condition3) { bloc3; }
    else { bloc4;}

    o Les accolades sont facultatives si le bloc est réduit à une seule instruction.
    o Exemple

     <?php
    $a = 10; $b = 11;
    echo "\$a = $a, \$b = $b 
    "; if ($a > $b) echo "\$a est supérieur sà \$b"; elseif ($a == $b) echo "\$a est égal à \$b"; else echo "\$a est inférieur à \$b."; ?>
    $a = 10, $b = 11
    $a est inférieur à $b.

    Structures switch

    Voici un exemple d'utilisation significatif, qui fait aussi intervenir des fonctions date()

     <?
      $nom_jour = date("l");
      $num_mois = date("m");
      $jour =  date("j");
      $annee = date (" Y");
    
      switch ($num_mois)   {
      case 1  :  $mois ="Janvier";break;
      case 2  :  $mois ="Février";break;
      case 3  :  $mois ="Mars";break;
      case 4 :  $mois ="Avril";break;
      case 5 :  $mois ="Mai";break;
      case 6 :  $mois ="Juin";break;
      case 7 :  $mois ="Juillet";break;
      case 8 :  $mois ="Août";break;
      case 9 :  $mois ="Septembre";break;
      case 10:  $mois ="Octobre";break;
      case 11:  $mois ="Novembre";break;
      case 12:  $mois ="Décembre";break;
      }
      echo "Date et heure  : <BR> ";
      echo  "$jour $mois $annee  ", date("H : i");
    ?>
    Date et heure :
    20 Janvier 2004 11 : 54

    Boucles

    while (condition) {
    // bloc d'instructions
    }
    do {
    // bloc d'instructions
    } while (condition);
    for($i=0; $i <=$max ; $i++) {
    // bloc d'instructions
    }
    foreach ($tab as $el) {
    // instructions portant sur $el, élément du tableau
    }
    Construction
    while (list(var1, $var2 ..) = each($liste)) {
    // bloc d'instructions
    }

    Définitions de fonctions

    # Syntaxe

    function nomfonction (liste-paramètres) {
    ....
    [return $var]
    }

    # Ici, le nom de la fonction n'est pas sensible à la casse. Ces fonctions sont semblables aux fonctions JavaScript. Il peut n'y avoir qu'une valeur de retour après return, qui peut être un tableau.

    # Exemple
    Code PHP Exécution
    
    <?
    function table_mult ($n) {
    for ($i=0; $i<=10; $i++)
        $t[] = $i*$n;
    return $t;
    }
    echo "Table de multiplication par 7 <P>";
    $tab = table_mult (7);
    for ($i=0; $i <=10; $i++)
        echo "$i * 7 = " . $tab[$i] . "<BR>" ;
    ?>
    

    Table de multiplication par 7

    0 * 7 = 0
    1 * 7 = 7
    2 * 7 = 14
    3 * 7 = 21
    4 * 7 = 28
    5 * 7 = 35
    6 * 7 = 42
    7 * 7 = 49
    8 * 7 = 56
    9 * 7 = 63
    10 * 7 = 70

  • Les paramètres formels doivent être précisés (il n'existe pas de paramètres systèmes implicites comme en Perl), et le mode de passage s'effectue normalement par valeur (voir précisions).

  • On peut donner des valeurs par défaut aux paramètres formels, au cas où le programme appelant ne fixerait pas leurs valeurs.
    Attention : ces valeurs par défaut doivent être des constantes. D'autre part si la liste des paramètres effectifs passés à l'appel de la fonction est incomplète, les affectations de valeurs aux paramètres formels s'effectuent dans l'ordre. On a alors intérêt à placer à la fin les paramètres qui bénéficient ainsi d'une initialisation. Par exemple :
    Code PHP Exécution
     <?
    function somme ($a = 1, $b = 2) {
    return $a + $b;
    }
    echo "somme(3, 5) = ", somme (3,5), "<BR>" ;
    echo "somme(3) = ", somme (3), "<BR>" ;
    echo "somme() = ", somme (), "<BR>" ;
    ?>
    somme(3, 5) = 8
    somme(3) = 5
    somme() = 3


    # Les paramètres formels doivent être précisés (il n'existe pas de paramètres systèmes implicites comme en Perl), et le mode de passage s'effectue normalement par valeur (voir précisions).

    # On peut donner des valeurs par défaut aux paramètres formels, au cas où le programme appelant ne fixerait pas leurs valeurs.
    Attention : ces valeurs par défaut doivent être des constantes. D'autre part si la liste des paramètres effectifs passés à l'appel de la fonction est incomplète, les affectations de valeurs aux paramètres formels s'effectuent dans l'ordre. On a alors intérêt à placer à la fin les paramètres qui bénéficient ainsi d'une initialisation. Par exemple :

    Code PHP Exécution
     <?
    function somme ($a = 1, $b = 2) {
    return $a + $b;
    }
    echo "somme(3, 5) = ", somme (3,5), "<BR>" ;
    echo "somme(3) = ", somme (3), "<BR>" ;
    echo "somme() = ", somme (), "<BR>" ;
    ?>
    somme(3, 5) = 8
    somme(3) = 5
    somme() = 3

    Sources de l'article


 

Blog
Le blog
La radio
La Radio
Boutique
La boutique du Geek
Php/Mysql
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Le fichier php.ini
Programmation
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Astuces en Bash
Cracking
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Techniques de Protection
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
P2P
Azureus pas-a-pas
News
Lire les news de Linux-pour-lesnuls.com au format RSS
Distros
Gestion des paquets debian
101 commandes debian
Jeu
Webtarot
Graphisme
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Redimentionner une image avec GIMP
Redimentionner une photo pour en faire un cadre avec gimp
Morphing avec gimp
Détourer avec gimp
Réduire le poids d'une image avec gimp
Caricature avec gimp
Humour
Ensemble
Divers