I. Introduction

Apprenez à utiliser le langage PHP pour développer des sites Web dynamiques grâce, notamment, à l'interaction facile de ce langage avec les bases de données.
Ce langage est idéal pour créer des blogs ou des forums de discussion.
Avec la méthode "Développement Facile", vous allez pouvoir créer des sites Web dynamiques avec du contenu évolutif et une maintenance facilitée.
Retrouvez un extrait de la formation "PHP Facile", composée de plus de 30 cours professionnels pour vous aider à progresser rapidement avec la maîtrise du langage PHP.

II. Comment envoyer vos mails directement depuis PHP

Grâce à ce cours, vous pourrez envoyer des mails directement depuis votre site en PHP.
Plus besoin de souscrire à un service de gestion de mail extérieur.


Ci-dessous, l'exemple de code.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// création et envoi d'un mail

// Deux destinataires séparés par une virgule. 
$destinataires = "yannick@developpement-facile.com, news@developpement-facile.com"; 

// Objet. 
$objet = "Inscription validée"; 

// Message. 
$message = "Yannick,\n"; 
$message .= "Nous vous confirmons votre inscription à\n"; 
$message .= "la formation Développement Facile.\n"; 
$message .= "Vous allez recevoir un mail avec vos accès personnalisé.\n\n"; 
$message .= "Matthieu pour Développement Facile.\n"; 


// En-têtes supplémentaires. 
$entêtes = "From: 'Inscription' <sav@developpement-facile.com>\n"; 
$entêtes .= "Reply-To: 'Inscription' <sav@developpement-facile.com>\n"; 
$entêtes .= "X-Priority: 1\n"; 

// Envoi. 
$bEnvoie = mail($destinataires,$objet,$message,$entêtes); 



// envoi d'un mail au format HTML

// Destinataires. 
$destinataires = "yannick@developpement-facile.com, news@developpement-facile.com"; 

// Objet. 
$objet = "Bonjour !"; 

// En-têtes supplémentaires. 
$entêtes = "From: \"Matthieu\" <matthieu@developpement-facile.com>\n"; 
$entêtes .= "MIME-Version: 1.0\n"; 
$entêtes .= "Content-Type: text/html; charset=iso-8859-1\n"; 
$entêtes .= "Content-Transfer-Encoding: 8bit\n"; 

// Message (HTML). 
$message = "<html>\n"; 
$message .= "<head><title>Bonjour !</title></head>\n"; 
$message .= "<body>\n"; 
$message .= "<font color=\"green\">Bonjour !</font>\n"; 
$message .= "</body>\n"; 
$message .= "</html>\n"; 

// Envoi. 
$bEnvoie = mail($destinataires,$objet,$message,$entêtes); 

?>	

III. Comment envoyer des mails HTML avec des pièces jointes depuis php

La suite du cours vidéo précédent, enrichissez vos mails en ajoutant des pièces jointes.


Ci-dessous, l'exemple vu dans la vidéo, remplacez tuto1.doc par un fichier de votre choix.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */


// envoi d'un mail avec encodage et découpage

// Destinataires. 
$destinataires = "yannick@developpement-facile.com, news@developpement-facile.com"; 

// Objet. 
$objet = "Bonjour 2 !"; 

// En-têtes supplémentaires. 
$entêtes = "From: \"Matthieu\" <matthieu@developpement-facile.com>\n"; 
$entêtes .= "MIME-Version: 1.0\n"; 
$entêtes .= "Content-Type: text/html; charset=iso-8859-1\n"; 
$entêtes .= "Content-Transfer-Encoding: 8bit\n"; 

// Message (HTML). 
$message = "<html>\n"; 
$message .= "<head><title>Bonjour !</title></head>\n"; 
$message .= "<body>\n"; 
$message .= "<font color=\"green\">Bonjour 22 !</font>\n"; 
$message .= "</body>\n"; 
$message .= "</html>\n"; 

// Encodage et découpage. 
$message = chunk_split( base64_encode( $message ) );

// Envoi. 
$bEnvoie = mail($destinataires,$objet,$message,$entêtes); 


// envoi d'un mail avec une pièce jointe

// Destinataires. 
$destinataires = "yannick@developpement-facile.com, news@developpement-facile.com"; 

// Objet. 
$objet = "Bonjour 33 !"; 


// Entêtes supplémentaires. 
$entêtes  = ""; 
// -> origine du message 
$entêtes .= "From: \"Matthieu\" <matthieu@developpement-facile.com>\r\n"; 
// -> message au format Multipart MIME 
$entêtes .= "MIME-Version: 1.0\r\n"; 
$entêtes .= "Content-Type: multipart/mixed; "; 
$entêtes .= "boundary=\"=M=A=T=T=H=I=E=U=\"\r\n"; 


// Message. 
$message  = ""; 
// -> première partie du message (texte proprement dit) 
//    -> en-tête de la partie 
$message .= "--=M=A=T=T=H=I=E=U=\r\n"; 
$message .= "Content-Type: text/plain; "; 
$message .= "charset=iso-8859-1\r\n "; 
$message .= "Content-Transfer-Encoding: 8bit\r\n"; 
$message .= "\r\n";   // ligne vide 

//    -> données de la partie 
$message .= "Voir la pièce jointe.\r\n"; 
$message .= "\r\n";   // ligne vide 

// -> deuxième partie du message (pièce-jointe) 
//    -> en-tête de la partie 
$message .= "--=M=A=T=T=H=I=E=U=\r\n"; 
$message .= "Content-Type: application/octet-stream; "; 
$message .= "name=\"tuto1.DOC\"\r\n"; 
$message .= "Content-Transfer-Encoding: base64\r\n"; 
$message .= "Content-Disposition: attachment; "; 
$message .= "filename=\"tuto1.doc\"\r\n"; 
$message .= "\r\n";             // ligne vide 

// lecture du fichier en pièce jointe 
$sFileAdd = file_get_contents("tuto1.doc"); 

// encodage et découpage des données 
$sFileAdd = chunk_split(base64_encode($sFileAdd)); 

// pièce jointe de la partie (intégration dans le message) 
$message .= "$sFileAdd\r\n"; 
$message .= "\r\n";             // ligne vide 

// Délimiteur de fin du message. 
$message .= "--=M=A=T=T=H=I=E=U=--\r\n"; 

// Envoi. 
$bEnvoie = mail($destinataires,$objet,$message,$entêtes); 

?>

IV. Comment lire un fichier avec PHP

Plutôt que de passer par une bases de données, vous pouvez simplement gérer vos données dans un fichier.
Dans cette vidéo, apprenez à lire un fichier en PHP.


L'exemple ci-dessous va d'abord créer un fichier, s'il n'existe pas, l'ouvrir, écrire dedans puis le lire.
Vous pourrez vérifier la bonne exécution du code en récupérant le fichier tuto.txt dans le même répertoire que votre code.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// lecture d'un fichier

// Ouvrir un fichier en écriture. 
$oFileOpen = fopen("tuto.txt", "wb"); 

// Ecrire dans le fichier. 
fwrite($oFileOpen, "Matthieu Developpement Facile"); 

// Fermer le fichier. 
fclose($oFileOpen); 

// Ouvrir un fichier en lecture. 
$oFileOpen = fopen("tuto.txt", "rb"); 

// Lire dans le fichier. 
$sFileTxt = fread( $oFileOpen, filesize("tuto.txt") ); 

// Fermer le fichier. 
fclose($oFileOpen); 

// Afficher les informations lues. 
echo $sFileTxt."<br />"; 

// Plus simple pour afficher le contenu d'un fichier. 
$sFileTxt = file_get_contents("tuto.txt"); 

// Afficher les informations lues. 
echo $sFileTxt; 

?>	

V. Comment créer, lire et écrire un fichier texte avec PHP

Pour compléter le cours précédent, voici les détails de la création, lecture et écriture de fichiers en PHP.


Ci-dessous, l'exemple de code.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */

// affiche le contenu d'un répertoire
// 
// 
// Première méthode : opendir + readdir + closedir. 
echo "<b>1) opendir + readdir + closedir</b><br />"; 

// Ouvrir le répertoire. 
$oDirectory = opendir("tutoriels"); 

// Parcourt le répertoire en lisant le nom du fichier 
while($oFileRead = readdir($oDirectory))
{ 
	echo $oFileRead."<br />"; 
} 

// Ferme le répertoire. 
closedir($oDirectory); 

// Deuxième méthode : scandir. 
echo "<br /><b>2) scandir</b><br />"; 

// Liste le contenu du répertoire dans un tableau. 
$oListeFiles = scandir("tutoriels"); 

// Parcourt le résultat
foreach ($oListeFiles as $oFileToRead)
{ 
	echo $oFileToRead."<br />"; 
} 

?>		

VI. Comment uploader un fichier avec un formulaire PHP

Avec ce cours vidéo, offrez la possibilité à vos utilisateur d'uploader leurs fichiers sur votre serveur via un formulaire en PHP.


Ci-dessous, l'exemple de code.

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */


// Initialisation de la variable de message. 
$message = ""; 

// Traitement du formulaire s'il y a un fichier envoyé sur le serveur. 
if (isset($_POST["valid"]))
{ 
	// Récupère les informations sur le fichier. 
	$oFileInfos = $_FILES["fichier"]; 
 
	// nom du fichier. 
	$nom = $oFileInfos["name"]; 

	// le type MIME.  
	$type_mime = $oFileInfos["type"]; 

	// la taille. 
	$taille = $oFileInfos["size"]; 

	// emplacement du fichier temporaire. 
	$fichier_temporaire = $oFileInfos["tmp_name"]; 

	// le code d'erreur. 
	$code_erreur = $oFileInfos["error"]; 

	switch ($code_erreur)
	{ 
		case UPLOAD_ERR_OK : 
			// Fichier bien reçu. 
			// Détermine sa destination finale. 
			$destination = "tutoriels/$nom"; 

			// Copie le fichier temporaire 
			if (copy($fichier_temporaire,$destination))
			{ 
				// Copie OK
				$message  = "Transfert terminé - Fichier = $nom - "; 
				$message .= "Taille = $taille octets - "; 
				$message .= "Type MIME = $type_mime."; 
			}
			else
			{ 
				// Problème de copie => message d'erreur. 
				$message = "Problème de copie sur le serveur."; 
			} 
			break; 

		case UPLOAD_ERR_NO_FILE : 
			// Pas de fichier saisi. 
			$message = "Pas de fichier saisi."; 
			break; 

		case UPLOAD_ERR_INI_SIZE : 
			// Taille fichier > upload_max_filesize. 
			$message  = "Fichier ".$nom." non transféré "; 
			$message .= " (taille > upload_max_filesize)"; 
			break; 

		case UPLOAD_ERR_FORM_SIZE : 
			// Taille fichier > MAX_FILE_SIZE. 
			$message  = "Fichier ".$nom." non transféré "; 
			$message .= "(taille > MAX_FILE_SIZE)"; 
			break; 

		case UPLOAD_ERR_PARTIAL : 
			// Fichier partiellement transféré. 
			$message  = "Fichier ".$nom." non transfere "; 
			$message .= "(problème lors du transfert)"; 
			break; 

		case UPLOAD_ERR_NO_TMP_DIR : 
			// Pas de répertoire temporaire. 
			$message  = "Fichier ".$nom." non transféré "; 
			$message .= "(pas de répertoire temporaire)"; 
			break; 

		case UPLOAD_ERR_CANT_WRITE : 
			// Erreur lors de l'écriture du fichier sur disque. 
			$message  = "Fichier ".$nom." non transféré "; 
			$message .= "(erreur lors de l'écriture du fichier sur le serveur)"; 
			break; 

		case UPLOAD_ERR_EXTENSION : 
			// Transfert stoppé par l'extension. 
			$message  = "Fichier ".$nom." non transféré "; 
			$message .= "(transfert stoppé par l'extension)"; 
			break; 

		default : 
			// Erreur non prévue ! 
			$message  = "Fichier non transféré "; 
			$message .= "(erreur inconnue : ".$code_erreur.")"; 
	}

} // fin du isset POST


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title>Upload</title></head> 
	<body> 
		<form action="file_upload_php.php" method="post" enctype="multipart/form-data"> 
			<div> 
				Fichier :  
				<input size="100" type="file" name="fichier" value="" /> 
				<input type="submit" name="valid" value="Envoyer le fichier" /><br /> 
				<?php echo $message; ?> 
			</div> 
		</form> 
	</body> 
</html>		

VII. Comment forcer le téléchargement de fichier avec PHP

Dans ce cours vidéo, apprenez à forcer le téléchargement de fichier en PHP.
En effet, un simple lien de téléchargement n'est parfois pas suffisant pour garantir le téléchargement de fichier.
Avec ce cours, vous n'aurez plus ce problème.


Ci-dessous, l'exemple de code

 
Sélectionnez

<?php 
/**

  The Initial Developer of the Original Code is
  Matthieu  - http://www.programmation-facile.com/
  Portions created by the Initial Developer are Copyright (C) 2013
  the Initial Developer. All Rights Reserved.

  Contributor(s) :

 */


// Liste des documents disponibles en téléchargement
$documents = array("tutoriels.pdf", "screenshot.gif", "video2.mp4"); 

// Traitement du formulaire si $_GET non vide. 
if (! empty($_GET))
{ 
	// Récupère l'identifiant du document. 
	$iIdFile = $_GET["id"]; 

	// En déduire le nom du document. 
	$sFilename = $documents[$iIdFile]; 

	// Envoyer l'entête d'attachement. 
	$header  = "Content-Disposition: attachment; "; 
	$header .= "filename=$sFilename\n" ; 
	header($header); 

	// Envoyer l'entête du type MIME (ici, "inconnu"). 
	header("Content-Type: x/y\n"); 

	// Envoyer le document. 
	readfile($sFilename); 
} 


?> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

  <head><title>Téléchargement</title></head> 
  
  <body> 
    <table border="1" cellpadding="4" cellspacing="0"> 
    <tr align="center"><th>Documents disponibles sur le serveur</th></tr> 
    
    <?php 

    // Parcourt la liste des documents et utilise le nom 
    // pour l'affichage et l'identifiant dans l'URL. 
    foreach($documents as $iIdFile => $document)
    { 
		    echo "<tr><td><a href=\"file_download_php.php?id=$iIdFile\">".$document."</a></td></tr>"; 
    } 

    ?> 

    </table> 
  </body>

</html>
		

VIII. Recevez gratuitement la formation "PHP Facile"

Si vous souhaitez aller plus loin dans la création de sites Web dynamique,
vous pouvez recevoir gratuitement la formation "PHP Facile" avec des cours pas à pas, accompagnés des codes source commentés.
Ainsi, vous progressez à votre rythme, avec un suivi personnalisé et individuel. Vous avez la possibilité de poser toutes vos questions techniques sous chaque cours.
Vous allez ainsi découvrir comment utiliser le langage PHP et les bases de données MySQL.

Formation PHP Facile !
Cliquez simplement ici pour recevoir gratuitement la formation "PHP Facile" !Cliquez simplement ici pour recevoir gratuitement la Formation PHP Facile !

IX. Remerciements

Merci beaucoup à l'équipe de rédaction de Developpez.com de contribuer à la diffusion de ce tutoriel.
J'adresse également un merci tout particulier à Jacques Jeanjacques_jean pour sa relecture orthographique.