php

installer un serveur privé sur ubuntu
LAMP ou WAMPsudo apt install apache2 php libapache2-mod-php php-mysql
sudo default-mysql-server php-mysql mysql_secure_installation
modifier les droit du fichier www : cd /var/
sudo chown <utilisateur>:www-data ./ -R
creer un lienln -s /var/www/ /home/ozome/Bureau/l2/s4/programmation\ web/www
debug/troubleshootingini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);
Fonctions sur les variables
debugger<div id="DebugConsole" style="min-width:960px;background-color: #F57D7D;border:1px solid #FF0000;"> <center><h2>CONSOLE DE DEBUG</h2></center> </td> </tr> </table> <?php echo '<pre>'; <th COLSPAN="5"> <HR size=20 noshade> print_r($GLOBALS); <TABLE class="tableau" BORDER="4"> <Tr> <th COLSPAN="5"> <Div Align="center" > <pre> quelques fonctions </pre> </div> </tr> echo '</pre>'; <tr> <th colspan="3">types </tr> ?> <tr> <th>gettype() <td> permet de récupérer le type d'une variable <td> </tr></div>
isset(variable)permet de savoir si la variable à été affecté 1 sinon "vide"
unset(variable)détruit une variable
var_dump(variable)affiche les informations sur une variable
define(string,valeur)défini une constante (valeur fixe)define("PI",3.141592)
Fonctions Mathématiques
abs()valeur absolue
ceil()arrondi au supérieur
floor()arrondi à l'inférieur
exp()expodentiel
log()logarithme
max(val1,val2)le maximum de deux valeur
mt_rand(min,max)
mt_srand(microtime())
génère une valeur aléatoire entre min et max depuis la graine
initialise la graine depuis le 1er janvier 1970
round()arrondie
sqrt()???
les Chaines
. pour concaténer deux chaines
chr(0x65)retourne une chaine d'un seul caractère correspondant au code en exa
strtolower("aBCd")met en minuscule abcd
strtoupper("aBCd")met en majusculeABCD
trim(" aBcF sdf ")supprimer les caractère invisibles en début et fin de chaineaBcF sdf
nl2br("ligne1\nligne2")insère < br > devant tout les caractère de fin de ligneligne1
ligne2
strlen("abcd")longueur de la chaine4
strcmp("abcd","aac")compare la grandeur des deux chaines 0 ou 1
strpos("une ligne pour chercher","ne")
strpos("une ligne pour chercher","ne",2)
donne la position de la chaine2 dans la chaine1
donne la position de la ième occurence de la chaine2 dans la chaine1
1
7
strrev("abcd")inverse la chainedcba
substr("une ligne pour chercher",4,5)retourne la sous chaine en position 4 et de longueur 5ligne
str_replace("ne","NE","une ligne pour chercher")remplace toutes les occurences de la chaine1 par la chaine2 dans la chaine3uNE ligNE pour chercher
addslashes(chaîne)ajoute des backslaches au caractères ' " \ de la chaine
sprintf('$x=%d',3)formatte l'affichage comme en c$x=3
explode(séparateur,chaine)découpe la chaine en sous chaine en utilisant le séparateur
implode(séparatteur,array)retourne une chaine contenant tout les élèments du tableau séparé par le séparateur





les conditions
if(condition)
  {instruction}
else
  {instruction}
< ?php
$a=mt_rand(0,10);
i($a%2==0)
 {echo "a vaut $a".",il est pair";
echo "< br >";}
else
  {echo "a vaut $a".",il est impair";
echo "<br>";}
?>
Exécution (valeur aléatoire à chaque exécutions):
a vaut 5, il est impair
if(expression conditionelle1)
  {instruction si condition1 est vraie}
elseif(expression conditionelle2)
  {instruction si condition2 est vraie}
else
  {instruction sinon}
<?php
$a=mt_rand(0,10);
i($a==0)
 {echo "a vaut $a".",est zero";
echo "< br >";}
elseif($a==1)
 {echo "a vaut $a".",est 1";
echo "< br >";}
else
  {echo "a vaut $a".",a est différent de 1 et 0";
echo "<br>";}
?>
Exécution (valeur aléatoire à chaque exécutions):
a vaut 0, est zero
do{
  instruction
}while(condition)

while(condition)
  {instruction}
}
<?php
$i=0;
$n=4;
do{
print("\$i=$i<br>");
$i +=1;
}while($i<$n);
$i=0;
print("puis<br>");
while($i<$n)
{
print("\$i=$i<br>");
$i++;
}
?>
Execution
$i=0
$i=1
$i=2
$i=3
puis
$i=0
$i=1
$i=2
$i=3
for<?php
$max=14;
for($nombre=1;$nombre<=$max;$nombre++)
{
$divisible=FALSE;
for ($diviseur=floor($nombre/2);!$divisible && ($diviseur>1);$diviseur--)
{$divisible=($nombre%$diviseur==0);}
if(!$divisible)
print("$nombre est premier
");
}
?>
execution
1 est premier
2 est premier
3 est premier
5 est premier
7 est premier
11 est premier
13 est premier





les tableau
$tab=array(x1,x2,x3,...)
$tab=array(x1=>y1,x2=>y2,x3=>y3,...)
on crée un tableau et on le rempli
on crée un tableau associatif de x1,y1
$tab[x1] renvoie y1
$tab[] si l'indice n'est as déclarée il est automatiquement affecté à l'indice le plus élevé +1
count($tab)permet d'avoir le nbr d'élement du tableau
unset()permet de supprimer une case au milieux d'un tableau
array_values(tableau)retourne un tableau contenant uniquement les cases définies
In_array(valeur,tableau)retourne true si la valeur se trouve dans le tableau
explode(séparateur,chaîne)découpe la chaine en sous chaines
implode(séparateur,array)retourne une chaine contenant tout les éléments du tableau séparés
sort(array)trie le tableau dans l'ordre croissant des éléments
ksort(array)trie le tableau associatif selon l'ordre croissant des clés
array_key_exists(clef,tableau)retroune TRUE si une clé existe dans un tableau
array_keys(tableau)retourne un tableau de toutes les clef du tableau en paramètre
array_splice(tableau,position,nombre)supprime nombre d'éléments du tableau à partir de la position
array_splice(tableau,position,nombre,tab_remplace)supprime et remplace par les éléments du tableau de remplacement
array_pop(tableau)dépile et retourne le dernier éléments du tableau, retourne NULL si vide
array_push(tableau,elem1,elem2)empile à la fin du tableau les élements
array_shift(tableau):depile le premier elements
array_slice(tableau,position,nombre)retourne un sous tableau extrait du tableau à la position composé de n nombre
array_sum(tableau)retourne la somme des valeurs du tableau





calculs
$tab1==$tab2sur des tableau associatifs retourne TRUE si les 2 tableau on les mêmes paires (clefs,éléments)
sur des tableau indicés retourne TRUE si les 2 tableaux on les mêmes éléments aux mêmes endroits
$tab1===$tab2tableau associatifs: retourne TRUE si les 2 tableaux ont les mêmes paires (clefs,elements) dans le même ordre
$tab1+$tab2tableau associatifs: réalise l'union des paires sur le critère des clefs. Dans le cas d'éléments de même clefs, c'est celui du tableau de gauche qui est retenue





pointeur
current(tableau)retourne l'élément courant pointé par le pointeur interne
next(tableau)incrémente le pointeur interne
retourne la valeur qu'il pointe
retourne false s'il déborde du tableau ou si l'éléments pointé est NULL
end(tableau)positionne le pointeur interne du tableau juqu'au dernier éléments
retourne la valeur de cet élément
prev(tableau)décrémente le pointeur plustot que de l'avancer
retourne la valeur du nouvel élément pointé ou false si l'élément pointé est NULL
reset(tableau)replace le pointeur de tableau au premier élément
retourne la valeur du premier élément





les fonctions
function nom_fonction([$param_1[=val_def],...,$param_N[=val_def]])
  {
  instruction ...
  [return valeurs...;]
  }
$resultat=nom_fonction([arg_1,...,arg_N]);
includeinclu et exécute un fichier PHP, en cas d'erreur affiche un warning
requireinclu et exécute un fichier PHP en cas d'échec provoque une erreur fatale et arrète le script
func_get_args()retourne un tableau contenant les arguemnets transmis à la fonction
list(x1,x2)=divisionEntiere($entier,$divisuer) permet de récupérer le quotient et le reste
declare(strict_type=1)???
global["var1"]=0on défini la variable globale
global $a
$GLOBALS['variable']variable super globale





les formulaires
< form METHOD=... ACTION=... [...]>
METHOD
POST correspond à un envoie de donnée dans le corp de la requète
GETcorrespond à un envoie de donnée dans l'url
ACTIONpermet d'indiquer l'url qui va recevoir les données
enctype"application/x-www-form-urlencode" : par défault
"multipart/form-data" : pour envoyer des fichiers
détermine comment les donnée encoyées sont encodées
les formulaires
< INPUT type=... name=... [...]>
name désigne l'élément
value éventuellement une valeur initiale
type défini des objets
textpetit champs pour que l'utilisateur saisisse un nombre ou une phrase
button pour cliquer dessus
checkboxcase à cocher information on off
radiocase à cocher mais une seul (si rien n'est coché n'envoie rien)
hidden champ caché pour transmettre des informations vers le serveur
password champ texte mais masquant le texte tapé
reset pour remettre le formulaire dans son état initiale
submit envoie les données vers le serveur
image meme principe que submit mais c'est une image au lieu d'un bouton
file affiche un bouton pour selectionner un fichier de l'ordinateur
textarea < textarea> </textarea >
select <select name="toto" >
<option value="truc" >choix1</option >
<option value="machin" >choix2</option >
< /select>





variables superglobales
$GLOBALS contient le nom des variable (les clefs sont les noms)
$_SERVER
$_SERVER['HTTP_ACCEPT_LANGUAGE'] language accepté par le navigateur
$_SERVER['HTTP_HOST'] nom de domaine du serveur
$_SERVER['HTTP_USER_AGENT'] type de navigateur
$_SERVER['REMOTE_ADDR'] adresse ip du client
$_SERVER['SERVER_ADDR'] adresse ip du serveur
$_SERVER['PHP_SELF'] Nom du script en cour d'execution
$_GETcontient les nom et les valeurs des données issues d'un formulaire via get
$_POSTcontient les nom et les valeurs des données issues d'un formulaire via post
$_COOKIE contient les nom des cookie enregistré chez le client (les nom sont les clefs)
$_FILES
$_FILES["MonFichier"]["name"] contient le nom du fichier sur le poste client
$_FILES["MonFichier"]["type"] contient le type MIME initial du fichier et permet un controle ou une scensure
$_FILES["MonFichier"]["size"] donne la taille réelle du fichier transférer
$_FILES["MonFichier"]["tmp_name"] donne le nom temporaire que donne le serveur au fichier
Boolean move_uploaded_file(String "fichtmp",String "fichfinal") pour procéder à l'enregistrement et au renomage du fichier
$_ENV contient le nom des vqriables d'environnement qui sont changeante selon les serveurs
ex date
$_REQUEST contient l'enssemble des variables superglobales
ex $_GTE , $_COOKIE
$_SESSION contient l'enssemble des variables de sessions et leurs valeurs





Boolean copy(String "nom_fichier",string "nom_copie")
ouverture et fermeture d'un fichier
fopen
modelectureécriturecrée le fichierecrase le fichierposition du flux
rXdébut
r+XXdébut
wXXXdébut
w+XXXXdébut
a XX(commence à la fin du fichier)
a+XXX (commence à la fin du fichier)
fopen(String $NomFichier,String mode)
fclose fermeture d'un fichierBoolean fclose($idfile)
$id_file=fopen("monFichier.txt","a");
if(!$id_file)echo "problème accès fichier";
Flock($id_file,LOCK_SH)
ou
Flock($id_file,1)
bloque l'écriture dans le fichier mais laisse libre accès en lecture
Flock($id_file,LOCK_EX)
ou
Flock($id_file,2)
bloque en lecture et en ecriture
Flock($id_file,LOCK_UN)
ou
Flock($id_file,3)
libère le verou installé précedemment
fwrite()
fputs()
insère une chaine dans le fichierfwrite($id_file,"toto")
fgets(resource $id_file) lit le fichier ligne par ligneString fgets(resource $id_file)
fgetc(resource $id_file) lit le fichier caractère par caractèreString fgetc(resource $id_file)
fpassthru($id_file)Lit tout le reste d'un fichier jusqu'à la fin et dirige le résultat vers la sortie standard.
readfile("nom_fichier") Lit un fichier et l'envoie dans le buffer de sortie.
copy("nom_fichier","nom_copie") copie un fichier
rename("nom_fichier","nom_futur") renommer un fichierBoolean rename(String "nom_fichier",string "nom_futur")
Boolean unlink("fichier_à_effacer") fichier à effacer





les expresions régulières
[[:alpha]] n'importe que lettre
[[:digit:]] ou \d n'importe quel chiffre
\D tout caractère sauf numérique
\w une lettre [a-z][A-Z] une lettre accentué un chiffre ou '_'
\W le contraire de \w
[[:alnum:]] n'importe quel letre ou chiffre
[[:space:]] ou \s n'importe quel espace blanc
\S tout caractère sauf ceux défini par \s
[[:punct:]] n'importe quel signe de ponctuation
[[:lower:]] n'importe quel lettre en minuscule
[[:upper:]] n'importe quel capitable
[[:blank:]] espace ou tabulation
\b ="word boundary character" espace, ponctuation, début d'un texte, fin d'un texte
\B le contraire de \b





relation avec mysql
Ressource mysqli_connect('url_serveur','user','password',' base');
url_serveururl du serveur
user le login
password le mot de passe
base le nom de la base de donnée
Boolean mysqli_ping($idcom) idcom= identifiant de ressourse permet de vérifier si la connexion est active
mysqli_select_db($idcom,$nom_base) renvoie true si la base existeapres l'appel les requete sont effectuées sur la base choisie
Boolean mysqli_close([$idcom])il faut mettre fin a la connexion dès que possilepermet de mettre fin à la connexion
mysqli_query($idcom,requete) permet de faire une requète (sans point virgule à la fin)
mysqli_num_rows(liste_resulat_requette) retourne le nombre de lignes d'un résultat de requète sql
mysqli_data_seek(liste_resultat_requette,position) positionne le pointeur internedoit être compris entre 0 et mysqli_num_rows(liste_resulat_requette)-1
mysqli_field_name(liste_resultat_requete,entier) retourne le nom ou l'alias de l'entier passé en paramètre
Array mysqli_fetch_array(liste_resultat_requette) parcour la liste des resultat d'une requette sql, optionnel Mysqli_assoc permet d'avoir un tableau associatifwhile($row=mysqli_fetch_array($result))
echo $row[0].','.$row[1].','.$row[2].','.$row[3]
mysqli_connect_error() retourne le texte de la dernière erreur généré par connect
mysqli_connect_errno() retourne le numéro associé à l'erreur du dernier connect
mysqli_error() retroune le texte associé à la dernière erreur généré par la dernière requète
mysqli_connect_errno() retroune le numéro associé à la dernière erreur généré par la dernière requète





les cookie
Boolean setcookie(nom,valeur,date_expiration,chemin,domaine,securité)
Sring nom sert à identifier le cookie
string valeur définie le contenue du cookie
Seconde date_expiration en l'absence de date d'expiration le cookie est détruit à la fermeture de la session
String chemin contien le chemin d'ccès au dossier qui contiennent les scripts autorisé à acceder aux cookies
domaine le domaine autorisé à accèder au cookie
sécurité valeur booléene (0 ou 1) indique si le cookie doit être transmis en https ou http





mysqli_fetch_field
nameLe nom de la colonne
orgnameLe nom original de la colonne si un alias a été spécifié
tableLe nom de la table à laquelle ce champs appartient (s'il n'a pas été calculé)
orgtableLe nom original de la table si un alias a été spécifié
defReservé pour la valeur par défaut. Actuellement toujours ""
dbBase de données (depuis PHP 5.3.6)
catalogNom du catalogue, toujours "def" (depuis PHP 5.3.6)
max_lengthLa longueur maximale du champs pour le jeu de résultats
lengthLa largeur du champs, comme spécifiée dans la définition de table
charsetnrLe numéro du jeu de caractères pour ce champs
flagsUn entier représentant le bit-flags pour ce champs
typeLe type de données utilisées pour ce champs
decimalsLe nombre de décimales utilisées (pour les champs de type entier)