php

   installer un serveur privé sur ubuntu 
LAMP ou WAMP sudo apt install apache2 php mysql-server libapache2-mod-php php-mysql sudo mysql_secure_installation
modifier les droit du fichier www: cd /var/
sudo chown <utilisateur>:www-data ./ -R
creer un lien ln -s /var/www/ /home/ozome/Bureau/l2/s4/programmation\ web/www
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)
math
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() ???
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 majuscule ABCD
trim(" aBcF sdf ") supprimer les caractère invisibles en début et fin de chaine aBcF sdf
nl2br("ligne1\nligne2") insère < br > devant tout les caractère de fin de ligne ligne1
ligne2
strlen("abcd") longueur de la chaine 4
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 chaine dcba
substr("une ligne pour chercher",4,5) retourne la sous chaine en position 4 et de longueur 5 ligne
str_replace("ne","NE","une ligne pour chercher") remplace toutes les occurences de la chaine1 par la chaine2 dans la chaine3 uNE 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 le nbr d'élement diminue mais pas forcément l'indice max
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 attention peut perdre la correspondance dans un tableau associatif
ksort(array) trie le tableau associatif selon l'ordre croissant des clés (maintien la correspondance)
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 fait glisser les élements et décroie de 1 la taille du tableau comme en schell
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==$tab2 sur 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===$tab2 tableau associatifs: retourne TRUE si les 2 tableaux ont les mêmes paires (clefs,elements) dans le même ordre
$tab1+$tab2 tableau 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]);
include inclu et exécute un fichier PHP, en cas d'erreur affiche un warning
require inclu 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"]=0 on 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
GET correspond à un envoie de donnée dans l'url
ACTION permet 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
< INPUT type=... name=... [...]>
name désigne l'élément
value éventuellement une valeur initiale
type défini des objets
text petit champs pour que l'utilisateur saisisse un nombre ou une phrase
button pour cliquer dessus
checkbox case à cocher information on off
radio case à 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
$_GET contient les nom et les valeurs des données issues d'un formulaire via get
$_POST contient 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

 ouverture et fermeture d'un fichier 
fopen
mode lecture écriture crée le fichier ecrase le fichier position du flux
r X début
r+ X X début
w X X X début
w+ X X X X début
a X X (commence à la fin du fichier)
a+ X X X (commence à la fin du fichier)
fopen(String $NomFichier,String mode)
fclose fermeture d'un fichier Boolean 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 fichier fwrite($id_file,"toto")
fgets(resource $id_file) lit le fichier ligne par ligne String fgets(resource $id_file)
fgetc(resource $id_file) lit le fichier caractère par caractère String 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 Boolean copy(String "nom_fichier",string "nom_copie")
rename("nom_fichier","nom_futur") renommer un fichier Boolean 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_serveur url 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 existe apres 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 possile permet 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 interne doit ê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 associatif while($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
name Le nom de la colonne
orgname Le nom original de la colonne si un alias a été spécifié
table Le nom de la table à laquelle ce champs appartient (s'il n'a pas été calculé)
orgtable Le nom original de la table si un alias a été spécifié
def Reservé pour la valeur par défaut. Actuellement toujours ""
db Base de données (depuis PHP 5.3.6)
catalog Nom du catalogue, toujours "def" (depuis PHP 5.3.6)
max_length La longueur maximale du champs pour le jeu de résultats
length La largeur du champs, comme spécifiée dans la définition de table
charsetnr Le numéro du jeu de caractères pour ce champs
flags Un entier représentant le bit-flags pour ce champs
type Le type de données utilisées pour ce champs
decimals Le nombre de décimales utilisées (pour les champs de type entier)