Scripts courants PHP PHP VERSION PDF

of 21
150 views
PDF
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Document Description
Scripts courants PHP PHP VERSION 4.3 Les fonctions les plus courantes Les cookies Les sessions Les variables d environement L envoi d L upload de fichier Manipulation des dossiers et fichiers Les
Document Share
Document Transcript
Scripts courants PHP PHP VERSION 4.3 Les fonctions les plus courantes Les cookies Les sessions Les variables d environement L envoi d L upload de fichier Manipulation des dossiers et fichiers Les messages d erreurs COMPLEMENT APACHE : Accès restreint par.htaccess Les fonctions courantes PHP est installé sur les serveurs avec des bibliothèques de fonctions. Chaque bibliothèque a ses spécialités (manipulations de dates, traitement d image, dialogue avec MySQL, traitement du XML, etc ) Vous aurez ici un florilège des fonctions les plus utiles. Une recherche sur Google de type «nomfonction() PHP manuel», où nomfonction est le nom d une fonction, vous donnera le descriptif de la fonction, et celles qui s en approchent par les fonctionnalités. Pèle mêle de fonctions Manipulation des chaînes de caractère Manipulation des dates Accès aux tableaux Pèle mêle de fonctions round(nombre) Arrondi nombre à l entier le plus proche ceil(nombre) Arrondi nombre à l entier supérieur floor(nombre) Arrondi nombre à l entier inférieur max(variable1, variable2 ) Renvoie la valeur de la plus grande variable. min(variable1, variable2 ) Renvoie la valeur de la plus petite variable. rand() Engendre une valeur au hasard comprise entre 0 et 1. empty(variable) Renvoie faux si la variable est définie et a une valeur non nulle. isset(variable) Renvoie vrai si une variable est définie. ereg(motif, chaîne à tester, tableau de résultat) Evalue une expression régulière. ereg_replace(motif, chaîne de remplacement, chaîne à tester) Evalue une expression régulière et remplace les occurrences trouvées par la chaîne de remplacement. header(chaîne) Produit un en tête http. Elle doit être utilisée avant toute production de texte HTML. Exemple : pour une redirection automatique : header( location : index.php ) ; urldecode(chaîne) Traduit une URL en texte clair : %20 est remplacé par urlencode(chaîne) Traduit une chaîne en texte transmissible par URL : est remplacé par %20 htmlentities(chaîne) Remplace tous les caractères spéciaux de chaîne par leurs équivalents HTML. & sera traduit pas & ; nl2br(chaîne) Remplace retour à la ligne de chaîne par leurs équivalents HTML br/ mail(destinataire, sujet, texte, entêtes) Envoie un au destinataire, contenant le texte, en ajoutant un sujet, et des entêtes supplémentaires (optionnel) md5(chaîne) Renvoie chaîne cryptée suivant l algorithme md5. Manipulation des chaînes de caractère addslashes(chaîne) Ajoute des \ devant les apostrophes, les guillemets et les antislashs de chaîne. stripslashes(chaîne) Retire les \ devant les apostrophes, les guillemets et les antislashs de chaîne. explode(séparateur, chaîne) Divise chaîne en valeurs séparées par séparateur et renvoie le tableau de ces valeurs. implode(tableau, séparateur) Fonction inverse d explode. strlen(chaîne) Renvoie la longueur de chaîne. strchr(chaîne1, chaîn2) Renvoie le contenu de chaîne1 à partir de la première occurrence de chaîne2. Renvoie Faux si rien n est trouvé. strpos(chaîne1, chaîn2) Renvoie la position de la première occurrence de chaîne2 dans chaîne1. Renvoie Faux si rien n est trouvé. substr(chaîne, début, longueur) Renvoie la sous chaîne de chaîne de longueur longueur à partir de début strrev(chaîne) Renvoie la chaîne miroir de chaîne strtolower(chaîne) Renvoie chaîne mise en minuscule Cf aussi strtoupper Manipulation des dates Le timestamp UNIX est un entier qui correspond au nombre de secondes écoulées depuis le 1 er janvier Il est plus facile de faire des comparaisons et des calculs sur des entiers que sur des dates. C est pourquoi l utilisation du timestamp s avère souvent judicieux. Attention, pour les dates qui précèdent le 01/01/1970, le timestamp ne peut plus s appliquer. chechdate(mois, jour, an) Contrôle la validité d une date date(format, timestamp) Renvoie la date correspondant à timestamp, ou la date courante si timestamp est omis, et au format indiqué. Le formatage se fait ainsi : a - am (matin) ou pm (après-midi) A - AM (matin) ou PM (après-midi) B - Heure Internet Swatch d - Jour du mois, sur deux chiffres (éventuellement avec un zéro) : 01 à 31 D - Jour de la semaine, en trois lettres (et en anglais) : par exemple Fri (pour Vendredi) F - Mois, textuel, version longue; en anglais, i.e. January (pour Janvier) g - Heure, au format 12h, sans les zéros initiaux i.e. 1 à 12 G - Heure, au format 24h, sans les zéros initiaux i.e. 0 à 23 h - Heure, au format 12h, 01 à 12 H - heure, au format 24h, 00 à 23 i - Minutes; 00 à 59 I (i majuscule) - 1 si l'heure d'été est activée, 0 si l'heure d'hiver. j - Jour du mois sans les zéros initiaux: 1 à 31 l - ('L' minuscule) - Jour de la semaine, textuel, version longue; en anglais, i.e. Friday (pour Vendredi) L - Booléen pour savoir si l'année est bissextile ( 1 ) ou pas ( 0 ) m - Mois; i.e. 01 à 12 M - Mois, en trois lettres (et en anglais) : par exemple Apr (pour Avril) n - Mois sans les zéros initiaux; i.e. 1 à 12 r - Format de date RFC 822; i.e. Thu, 21 Dec :01: (ajouté en PHP 4.0.4) s - Secondes; i.e. 00 à 59 S - Suffixe ordinal d'un nombre, en anglais, sur deux lettres : i.e. th , nd t - Nombre de jours dans le mois donné, i.e. 28 à 31 T - Fuseau horaire de la machine ; i.e. MET U - Secondes depuis une époque w - Jour de la semaine, numérique, i.e. 0 (Dimanche) to 6 (Samedi) Y - Année, 4 chiffres; i.e. 1999 y - Année, 2 chiffres; i.e. 99 z - Jour de l'année; i.e. 0 à 365 Z - Décalage horaire en secondes (i.e. -43200 à 43200 ) date( d m Y ) renverra une chaîne de type : « » mktime (heure, minute,seconde,mois,jour,annee ) Renvoie le timestamp UNIX correspondant à la date indiquée. time () Renvoie le timestamp UNIX de la date courante. Les cookies A noter : Il ne doit pas y avoir de code HTML ou d'instruction d'affichage avant l'écriture d'un cookie!!! Pas même un retour à la ligne vide! Un cookie permet au serveur de laisser une information sur le poste client. Il pourra utiliser cette information dès la connexion suivante, ou quand il en aura besoin, à partir du moment ou le serveur aura défini une date de péremption de son information. $_COOKIE est un tableau associatif. Il fonctionne de la même manière que $_POST ou $_GET. Lire un cookie PHP crée automatiquement une variable : ? $ = $_COOKIE[ ]; // si le cookie n existe pas, $ aura la valeur booléenne FALSE. if($ ) {? Se désabonner ? } else {? S'abonner ? }? Ecrire un cookie en utilisant la fonction setcookie() : Cette fonction prend 3 arguments : le nom du cookie, la valeur du cookie, la durée de vie du cookie. ? $duree = 365*24*60*60; // 1 an en secondes! // la fonction time() renvoie le timestamp courant.? Détruire un cookie, en le vidant : ? setcookie( );? On n affecte aucune valeur au cookie, ce qui le vide, équivalent de la valeur NULL. Détruire tous les cookies : ? while(list($nom,$val)=each($_cookie)) setcookie($nom);? On parcourt le tableua $_COOKIE et on vide chacune des cases au fur et à mesure. Les sessions A noter : Il ne doit pas y avoir de code HTML ou d'instruction d'affichage avant le démarrage d une session!!! Une session est très comparable aux cookies. Toutefois, l essentiel des informations est stocké par le serveur, et non plus par le client. Seul le numéro de session est envoyé au client, grâce à un cookie. Mais ce cookie est détruit avec la fermeture du navigateur du poste client. $_SESSION est un tableau associatif. Démarrage A écrire en haut de chaque page qui utilise une session ? session_start();? Déclaration ? $_SESSION[ ]= Destruction ? session_unregister( );? Destruction de toutes ? session_destroy();? Les variables d environnement PHP propose toute une série de variables qui sont déjà implantées dans le langage sans que vous ayez à les créer, on les appelle les variables d'environnement. Ces variables appartiennent à la famille des variables globales $_SERVER La plus part de ces variables sont utilisée pour écrire les logs de connexion à votre serveur. Elles ont une utilité pour la sécurisation des scripts, leur adaptation à certaines configurations, et l édition de statistiques de fréquentation. Variables Description Résultat à l'écran (Free.fr) $_SERVER['DOCUMENT_ROOT'] $_SERVER['HTTP_ACCEPT_LANGUAGE'] $_SERVER['HTTP_HOST'] $_SERVER['HTTP_USER_AGENT'] $_SERVER['PATH_INFO'] $_SERVER['PATH_TRANSLATED'] $_SERVER['REQUEST_URI'] $_SERVER['REMOTE_ADDR'] $_SERVER['REMOTE_PORT'] $_SERVER['QUERY_STRING'] $_SERVER['SERVER_ADDR'] $_SERVER['SERVER_ADMIN'] $_SERVER['SERVER_NAME'] $_SERVER['SERVER_SIGNATURE'] $_SERVER['REQUEST_METHOD'] Racine du serveur Langage accepté par le navigateur Nom de domaine du serveur Type de navigateur Chemin web du script Chemin complet du script Chemin du script /var/www/php.proxad.net Fr proxyphp3.free.fr Adresse IP du client Port de la requête HTTP Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) /d2expert.free.fr/phpdebutant/fichier.php /var/www/free.fr/3/d/2/e/x/d2expert/phpdebutant/fichier.php /d2expert.free.fr/phpdebutant/fichier.php Liste des paramètres var=23&data=ok passés au script Adresse IP du serveur Adresse de l'administrateur du serveur Nom local du ser`_veur Type de serveur? Méthode d'appel du script php.proxad.net GET Mailing Envoyer un Pour envoyer un , nous disposons en PHP de la fonction mail(). En voici la syntaxe : boolean mail( string to, string subject, string message [, string headers [, string parameters]]) Seuls les trois premiers arguments sont obligatoires. La fonction retourne true en cas de succés, false dans le cas contraire. L' est envoyé au destinataire to. L' a pour sujet subject et le corps de l' est message. Des entêtes supplémentaires peuvent être ajoutés avec headers. Enfin, des paramètres de commande supplémentaires peuvent être passés avec parameters. PHP les utilisera dans son appel du programme d'envoi de courriel. Voici un exemple basique d'envoi d'un ?php 'Le sujet', 'Exemple d\'envoi d\' ');? Ca y est, vous avez envoyé un )), c'est bien beau tout ça, mais dans l' que reçoit le destinataire, l'expéditeur n'a pas été défini C'est là que les headers entrent en jeu. Construction des messages Nous allons maintenant construire un message un peu plus compliqué et inclure des entêtes à l' pour améliorer tout ça. Un entête se présente comme suit : nom de l'entête: contenu de l'entête Notez bien qu'il n'y a pas d'espace entre le nom de l'entête et les deux points, mais qu'il y a ensuite un espace entre les deux points et le contenu de l'entête. Si vous indiquez plusieurs entêtes, vous devez effectuer un retour à la ligne entre chaque entête à l'aide du caractère spécial \n. Exemple de construction des headers et du message, puis envoi : ?php $headers = From: $headers.= Reply To: $message = Salut Alphonse, \n\n ; $message.= J'espère que tu vas bien!\n ; $message.= Voila, j'ai découvert un super site :\n ; $message.= http://www.phpcodeur.net\n\n ; $message.= Va y jeter un oeil, il est terrible!\n\n ; $message.= Ciao.\n\n ; $message.= toto ; 'Super site', $message, $headers);? Ici, nous avons utilisé l'entête From qui sert (comme vous l'avez deviné) à définir l'adresse de l'expéditeur, ainsi que l'entête Reply To qui, lui, sert à définir l'adresse de réponse à l' . Note : Les noms de certains entêtes sont sensibles à la case. Note : L'adresse définie comme expéditeur n'a pas besoin d'être réelle. On comprend maintenant comment les spammeurs s'y prennent. Vous ne vous étonnerez plus si vous recevez un de Bill Gates ; ) Note : L'adresse définie comme expéditeur n'est pas nécessairement la même que celle indiquée pour l'adresse de réponse Comme on l'a vu, l'opérateur de concaténation (le point devant le caractère =) nous a permis de construire un message un peu plus compliqué. L'ajout des entêtes appropriés nous a permis de définir l'expéditeur, ce qui est la moindre des choses lorsqu'on envoie un . Il existe différents entêtes qui ont chacun leur utilité (utilité plus ou moins importante). Détails des différents entêtes On l'a vu dans le chapitre précédent, les entêtes nous permettent de fournir de précieuses informations sur l' . Voici quelques uns des entêtes, et leur utilité : From Définit l'adresse de l'expéditeur. Vous pouvez personnaliser cet entête de cette façon : Petit To Listes des adresses, séparées par une virgule, où doit être envoyée l' Reply To Définit l'adresse de réponse à l' , si différente de l'adresse donnée dans l'entête From X Priority Définit le niveau de priorité de l' . (de 1 à 5) Return Path L'adresse de retour en cas d'erreur (adresse inconnue, etc ). Typiquement, cet entête est ajouté directement par le programme d'envoi de courriel Cc Listes des adresses, séparées par une virgule, où doit être envoyée une copie de l' (Cc signifie Carbon Copy) Bcc Listes des adresses, séparées par une virgule, où doit être envoyée une copie cachée de l' (Bcc signifie Blind Carbon Copy) Disposition Notification To Adresse définie pour la réception de la confirmation de lecture (active de ce fait la confirmation de lecture) Content Type Utilisé pour définir le type MIME du contenu de l' ou d'une partie de l' , et le jeu de caractère utilisé Content Transfer Encoding Utilisé pour définir l'encodage utilisé pour le contenu de l' ou une partie de l' Voici un autre exemple d'envoi d' en utilisant quelques uns des entêtes sus nommés : ?php $headers = From: $headers.= Reply To: $headers.= Cc: $headers.= Bcc: $headers.= X Priority: 1\n ; $headers.= Content Type: text/plain; charset=\ iso \ \n ; $headers.= Content Transfer Encoding: 8bit ; $subject = 'Un site à voir absolument!'; $message = Salut à tous, \n\n ; $message.= Un site super à voir absolument : \n ; $message.= http://www.phpcodeur.net\n\n ; $message.= A demain\n\n ; $message.= toto ; $result = $subject, $message, $headers); if( $result == true ) { echo 'l\' a bien été envoyé'; } else { echo 'l\' n\'a pas pu être envoyé!'; }? Dans l'exemple ci dessus, nous avons envoyé l' à Nous avons également envoyé une copie de l' à et (je manque d'inspiration moi ). Une copie cachée a été envoyée à et enfin, l' a une haute priorité. Nous avons également défini le type MIME du contenu de l' (text/plain) bien que ce ne fut pas nécessaire, les s étant par défaut dans ce type. s au format html Dans l'exemple précédent, j'ai utilité l'entête Content Type pour définir le type MIME de l' . Réutilisons cet entête en spécifiant cette fois text/html : ?php $headers = From: // on indique qu'on a affaire à un au format html avec l'entête ci dessous $headers.= Content Type: text/html; charset=\ iso \ ; $message_html = html body b salut Alphonse /b br br ; $message_html.= Ca va? br ; $message_html.= font color=\ red\ c'était juste pour savoir.. /font br br ; $message_html.= A plus br ; $message_html.= u toto /u ; 'Comment tu vas', $message_html, $headers);? Note : Rappellez vous que certains logiciels de courrier électronique ne gèrent pas les s au format html. Prévoyons une alternative pour les personnes ne disposant pas d'un logiciel gérant les s au format html, ou qui désactivent pour des raisons de sécurité l'affichage de ces s. Nous allons ici aborder le terme de frontières dans le corps de l' , un moyen de séparer les différentes parties de l' , en conformité avec le format MIME 1.0. En d'autres termes, nous allons définir une chaîne de caractères, et l'utiliser pour séparer la partie texte de la partie html. Mais je laisse le code parler pour moi : ?php // on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière $boundary = = . md5( uniqid ( rand() ) ); $headers = From: // on indique qu'on a affaire à un au format html et texte et // on spécifie la frontière (boundary) qui servira à séparer les deux parties // ainsi que la version mime $headers.= MIME Version: 1.0\n ; $headers.= Content Type: multipart/alternative; boundary=\ $boundary\ ; $message_txt = Salut Alphonse\n\n ; $message_txt.= Ca va?\n ; $message_txt.= C'était juste pour savoir..\n\n ; $message_txt.= A plus\n ; $message_txt.= toto ; $message_html = html body b salut Alphonse /b br br ; $message_html.= Ca va? br ; $message_html.= font color=\ red\ c'était juste pour savoir.. /font br br ; $message_html.= A plus br ; $message_html.= u toto /u ; $message = This is a multi part message in MIME format.\n\n ; $message.= . $boundary. \n ; $message.= Content Type: text/plain; charset=\ iso \ \n ; $message.= Content Transfer Encoding: quoted printable\n\n ; $message.= $message_txt; $message.= \n\n ; $message.= . $boundary. \n ; $message.= Content Type: text/html; charset=\ iso \ \n ; $message.= Content Transfer Encoding: quoted printable\n\n ; $message.= $message_html; $message.= \n\n ; $message.= . $boundary. \n ; 'Comment tu vas', $message, $headers);? Respectez bien la construction du message, en particulier les sauts de ligne entre les différents entêtes et les parties proprement dites. Voila, le destinataire recevra un qui s'affichera au format html dans son logiciel, si celui ci gère ce format, au format texte dans le cas contraire. s avec pièces jointes Pour joindre un fichier à votre , c'est exactement le même principe des frontières que précédemment que nous devons utiliser. Nous allons également utiliser les fonctions de lecture de fichiers pour lire le fichier à joindre. Les fichiers (image, archive zip, etc ) étant de type binaire, nous allons l'encoder en base64, car seules les données de type ascii peuvent être envoyées par . ?php // on génère une frontière $boundary = ' ='. md5( uniqid ( rand() ) ); // on va maintenant lire le fichier et l'encoder $path = 'chemin/fichier.gif'; // chemin vers le fichier $fp = fopen($path, 'rb'); $content = fread($fp, filesize($path)); fclose($fp); $content_encode = chunk_split(base64_encode($content)); $headers = From: $headers.= MIME Version: 1.0\n ; $headers.= Content Type: multipart/mixed; boundary=\ $boundary\ ; $message = Ceci est un message au format MIME 1.0 multipart/mixed.\n\n ; $message.= . $boundary. \n ; $message.= Content Type: text/plain; charset=\ iso \ \n ; $message.= Content Transfer Encoding: 8bit\n\n ; $message.= Salut Alphonse, \n\n ; $message.= Voila le fichier que tu m'as demandé\n ; $message.= \n ; $message.= . $boundary. \n ; $message.= Content Type: image/gif; name=\ fichier.gif\ \n ; $message.= Content Transfer Encoding: base64\n ; // mettez inline au lieu de attachment // pour que l'image s'affiche dans l' $message.= Content Disposition: attachment; filename=\ fichier.gif\ \n\n ; $message.= $content_encode. \n ; $message.= \n\n ; $message.= . $boundary. \n ; 'le fichier demandé', $message, $headers);? Note : Si vous ne connaissez pas le type MIME du fichier que vous envoyez, vous pouvez indiquer application/octet stream. Utiliser des fichiers embarqués dans les s html Vous avez également la possibilité de joindre un fichier et de l'utiliser directement dans l' html (fichier image, son ) Cela peut permettre de consulter l' hors ligne, sans que les images ou autres media ne restent invisibles, faute de connexion au réseau. Cette méthode doit toutefois être utilisée avec parcimonie, le fichier étant joint à l' , son poids augmente d'autant le poids de l' et rend plus long le téléchargement de ce dernier. Pour réaliser cela, nous allons faire appel à un nouvel entête : Content ID. Celui ci va nous servir à spécifier l'identifiant du fichier, lequel sera utilisé dans la parti
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x