La fonction mail() de PHP permet d'envoyer des emails
Ne fonctionne pas toujours par défaut en localhost
Exemple
$to = 'toto@domain.com';
$subject = 'Subject';
$message = 'Hello !';
$headers = 'MIME-Version:1.0'."\r\n".
'From:server@domain.com'."\r\n";
mail($to,$subject,$message,$headers);
Destinataires
// Destinataire unique
$to = 'toto@domain.com';
// Plusieurs destinataires
$to = 'toto@domain.com, tata@domain.com';
// Plusieurs destinataires nommés
$to = 'Toto <toto@domain.com>, Tata <tata@domain.com>';
Subject
// Classique
$subject = 'Subject';
// Forcer l'encodate UTF-8
$subject = '=?UTF-8?B?'.base64_encode('Subject éèêùà').'?=';
Message
// Text
// \r\n permet d'aller à la ligne et ne fonctionne qu'avec les doubles quotes
$message = "Salut,\r\n";
// HTML
// Ne fonctionnera pas sans les bons headers
$message = '<strong>Salut</strong><br />Ça va ?';
Headers
// Les valeurs sont séparées par des \r\n entre double quotes
$headers = 'MIME-Version:1.0'."\r\n"; // Email content type system (?)
$headers .= 'From:server@domain.com'."\r\n"; // Classique
$headers .= 'Reply-To:server@domain.com'."\r\n"; // Reply to
$headers .= 'Cc:tutu@domain.com'."\r\n"; // Cc
$headers .= 'Bcc:tete@domain.com'."\r\n"; // Bcc
$headers .= 'Subject:subject@domain.com'."\r\n"; // Subject
$headers .= 'Content-type:text/html;charset=utf-8'."\r\n"; // Contenu HTML
$headers .= 'Content-Type:text/plain;charset=ISO-8859-1'."\r\n"; // Contenu text
La fonction header() de PHP permet de modifier l'entête d'une page
Cette fonction doit être appelée avant que le moindre contenu soit envoyé (comme session_start et setcookie)
Il est possible de déclencher une redirection avec 'Location'
header('Location:http://www.google.com/');
exit;
Ne pas oublier de mettre un exit ou un die() car le reste du code sera exécuté même si l'utilisateur est redirigé
Il est possible de spécifier le code HTTP de la page
(200, 401, 404, ...)
header('HTTP/1.0 404 Not Found');
exit;
Les plus connus :
cURL est une librairie PHP permettant de se connecter à d'autres serveurs
Elle se traduit par plusieurs fonctions PHP commençant toutes par curl_
Elle est disponible de base sur la majorité des configurations
Exemple
// Initialise une instance de curl
$ch = curl_init();
// Configure la requête
curl_setopt($ch,CURLOPT_URL,'http://www.google.fr/');
// Exécute la requête et echo le résultat
curl_exec($ch);
// Fermeture de la session cURL
curl_close($ch);
Options
curl_setopt() permet de définir les différentes options
Options
Exemple d'options
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.google.com/');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,'toto=tata&test=1');
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53');
curl_setopt($ch,CURLOPT_COOKIE,'tete=tutu;test=2');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
PHP fournit des constantes magiques dont les valeurs change selon l'endroit où elles sont appelées
echo __LINE__; // Ligne
echo '
';
echo __FILE__; // Fichier
echo '
';
echo __DIR__; // Dossier du fichier
function ma_fonction()
{
echo __FUNCTION__;
}
ma_fonction();
class Ma_Class
{
public function __construct()
{
echo __CLASS__;
}
}
$class = new Ma_Class();
En PHP, il existe une large quantité de fonctions permettant de manipuler les fichiers. Il est possible de les créer, de les lire, de les modifier, de les supprimer, de les lister, d'obtenir la date de création/modification, de changer les droits d'accès, etc.
dirname() permet d'extraire le chemin vers le dossier
echo dirname(__FILE__);
glob() renvoie un tableau de chemins verifiant un masque (ou pattern)
$dir = dirname(__FILE__);
$files = glob($dir.'/*');
$files contient la liste de tous les fichiers dans le repertoire courant
file_get_contents() récupère le contenu d'un fichier
$path = 'monfichier.txt';
$content = file_get_contents($path);
file_put_contents() ajoute du contenu au fichier
Par défaut, elle va remplacer le contenu existant
Si le fichier n'existe pas, elle va le créer
// Remplace le contenu du fichier monfichier.txt
$path = 'monfichier.txt';
file_put_contents($path,'test 1234');
// Ajoute le contenu à la fin du fichier monfichier.txt
$path = 'monfichier.txt';
file_put_contents($path,'test 1234',FILE_APPEND);
file_exists() test si le fichier existe
$path = 'monfichier.txt';
if(file_exists($path))
echo 'le fichier existe';
else
echo 'le fichier n\'existe pas';
unlink() supprime le fichier
$path = 'monfichier.txt';
unlink($path);
Une liste de fonctions PHP permettent de manipuler les fichiers tout comme nous l'avons fait jusqu'à présent mais avec moins d'automatismes et plus de flexibilité
exemple avec fopen / fwrite / fclose
$path = 'monfichier.txt';
$fp = fopen($path,'a+');
fwrite($fp,'hey');
fclose($fp);
PHP intègre un grand nombre de fonctions mathématiques
echo abs(-10); // 10
echo round(2.4); // 2
echo ceil(2.4); // 3
echo floor(2.6); // 2
echo min(1,-2,999,3,10); // -2
echo max(1,-2,999,3,10); // 999
echo rand(0,9); // 0 ou 1 ou 2 ou 3 ou ...
Il est possible de convertir une donnée (tableau ou objet) en JSON avec la fonction json_encode()
$user = array(
'name' => 'Toto',
'age' => 26,
'admin' => false
);
$user_json = json_encode($user); // {"name":"Toto","age":26,"admin":false}
Cette donnée peut ensuite être utilisée pour l'intégrer au javascript
<?php
$user = array(
'name' => 'Toto',
'age' => 26,
'admin' => false
);
$user_json = json_encode($user); // {"name":"Toto","age":26,"admin":false}
?>
<script>
var user = <?= $user_json ?>;
console.log(user);
</script>
Il existe un très grand nombre de fonctions pour gérer les tableaux
La fonction phpinfo() permet d'afficher une grande quantité d'informations liées à l'environnement PHP
phpinfo();