===== Qu'est ce que PHP ? ===== **PHP** (venant de l'acronyme récursif PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour être exécuté par un serveur HTTP, mais il peut fonctionner comme n'importe quel langage interprété de façon locale, en exécutant les programmes en ligne de commande.\\ PHP est un langage procédural disposant en version 5 de fonctionnalités de modèle objet complètes. En raison de la richesse de sa bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage. (//Définition de wikipédia//) ===== Configuration du PHP d'Online ===== phpinfo est une fonction du langage PHP, elle permet de connaître les modules activés, la configuration du serveur, les restrictions et les paramètres de compilation du langage . Vous pouvez consulter les PHPInfos de nos PHP ici : * [[http://demo.online.net/|PHP4]] * [[http://demo.online.net/index.php5|PHP5]] Vous pouvez envoyer vos demandes de mise à jour, d'ajout de fonctionnalités ou de modifications en écrivant au service [[feature-request@online.net|Feature Request]] ===== Comment utiliser les sessions ? ===== Les sessions sont un moyen pour conserver des informations pendant une visite. PHP4 inclue un 'gestionnaire de session' simplifiant le mécanisme. Le gestionnaire de session est activé sur Online Hébergement. Par défaut, il s'agit des sessions 'fichiers' mais vous pouvez bien sûr développer votre propre systême. Afin de permettre une gestion transparente des sessions, l'option --enable-trans-sid est activée. Elle permet une réécriture des URLs ou l'envoi de cookies permettant de suivre votre visiteur. **Important :** Pour que vos sessions 'fichiers' (mode par défaut) fonctionnent, **vous devez créer un répertoire "sessions"** (en minuscules sans les guillemets) à la racine de votre site Web (ou du cas échéant, de votre site Web secondaire). Sinon un message d'erreur vous signalant l'impossibilite de sauvegarder les sessions apparaitra. **Quelques liens :** * Un petit tutoriel en anglais (niveau débutant) : [[http://www.phpbuilder.com/columns/mattias20000105.php3|Partie 1]], [[http://www.phpbuilder.com/columns/mattias20000312.php3|Partie 2]] * Un autre [[http://www.onlamp.com/pub/a/php/2001/04/26/sessions.html|tutoriel]] en anglais * La [[http://www.php.net/manual/fr/ref.session.php|documentation officielle]] des sessions * Aller plus loin en créant son propre gestionnaire de sessions (niveau confirmé) : [[http://www.phpbuilder.com/columns/ying20000602.php3|Custom Session Handlers in PHP4]] * La création d'un caddy virtuel avec les sessions PHP4 (niveau confirmé) : [[http://www.phpbuilder.com/columns/evert20000816.php3|Mini Shopping Basket with only PHP4 Sessions]] **Un exemple simple :** 1) il faut se connecter en ftp et créer le repertoire "sessions" (en minuscules sans les guillemets) à la racine de votre site Web. C'est dans ce repertoire que seront sauvegardées vos sessions. Créez un fichier "start.php" (attention a l'extension .php) contenant : "; ?> Pour aller a la page suivante, cliquez ici Créez un fichier "nextpage.php" contenant : "; ?> Téléchargez les fichiers dans votre compte et faites un test en appelant l'URL correspondante de start.php ===== Répertoire Racine (DocumentRoot) ===== :!: Il est primordial de ne jamais utiliser de chemin absolu codé en ‘dur’, car le chemin est susceptible de changer et votre site serait alors inaccessible. Cependant, vous pouvez(devez) utiliser la variable **$DOCUMENT_ROOT** qui pointe a la racine du site Web (ou du site secondaire) dans lequel se trouve votre script, vous serez donc sur de ne jamais avoir de déconvenues. Exemple : Vous voulez savoir quel est le chemin correspondant a http://www.monsite.ext/unrepertoire/unautrerepertoire/ Il s’agit de $chemin = “$DOCUMENT_ROOT/unrepertoire/unautrerepertoire/”; ===== Répertoire d'inclusion (IncludePath) ===== Dans le cadre de la réalisation d'un site important, il est possible de centraliser les fichiers fréquemment inclus. Pour cela, un répertoire est ajouté par défaut à la liste de recherche des fichiers inclus. Il n'est pas créé par défaut, pour ce faire, il suffit de créer un répertoire nommé "include" (sans les guillemets et en minuscules) à la racine du site web (ex: "www/include"). Un tel répertoire n'est utilisable qu'à l'intérieur du site où il a été créé. Cela signifie que le répertoire du site Web principal (qui est donc nommé: "www/include") n'est pas accessible d'un site Web secondaire (comme blog.domaine.com). Exemple : * Vous avez un fichier 'global.php' contenant diverses informations ou méthodes. * Vous souhaitez y accéder depuis n'importe où de votre site sans le recopier dans chaque sous-répertoire ou inscrire le chemin relatif jusqu'à ce fichier dans chacun des programmes. * On suppose que vos fichiers .php se trouvent dans le site web principal (www.) * Vous devez donc créer "www/include" (sans les guillemets et en minuscules) et y stocker votre fichier "global.php" (il se trouve donc dans www/include/global.php vu depuis FTP) * Pour l'appeler depuis un fichier .php quelque soit l'endroit où il se trouve à l'intérieur du site web principal, il suffit de faire : ou encore (selon la méthode d'inclusion souhaitée) ===== Connexion à une base de donnée ===== ==== Connexion persistante ==== Les connexions persistantes ne sont pas possibles du fait de l’architecture et sont effectuées en tant que connexion standard. ==== Connexion à votre base de donnée Online en PHP ==== [[/sql#connection_a_la_base_de_donnee|Voir la section : Connexion à votre base de donnée Online]] ===== Uploader des fichiers ===== L'upload de fichiers via PHP est activé, la taille maximale d'un fichier est **10 Mo**. Vous devez renommer le fichier uploadé via la fonction [[http://fr.php.net/move_uploaded_file|move_updloaded_file]] avant la fin de votre script. Le fichier temporaire (nommée phpXXXXX) est effacé à la fin du script PHP4 le recevant.

===== Envoyer des emails ===== La fonction [[http://fr3.php.net/manual/fr/function.mail.php|mail()]] de PHP est activée, cependant il y a quelques limitations : * pas plus de 35 destinataires par appels à la fonction * taille des mails limité à 2Mo * détection antispam La fonction mail renvoie TRUE en cas de succès et FALSE si l'une de ces conditions n'est pas respectée. Nous supposons dans cet exemple que le nom de domaine hébergé est "domaine.com". \n"; // ajout du champ From $headers = $headers."MIME-Version: 1.0\n"; // ajout du champ de version MIME $headers = $headers."Content-type: text/plain; charset=iso-8859-1\n"; // ajout du type d'encodage du corps // Appel à la fonction mail if ( mail($to, $subject, $message, $headers) == TRUE ) { echo "Envoi du mail reussi."; } else { echo "Erreur : l'envoi du mail a echoue."; } ?> :!: Soyez conscient qu'un individu malveillant peut profiter des formulaires de contact pour vous envoyer du spam. En l'appelant plusieurs fois par seconde, il va finir par saturer l'adresse mail contact@domaine.com que vous avez indiqué. L'ajout d'une procédure de type captcha peut vous aider à éviter ce genre de piratage, et donc la suspension ou l'annulation de votre compte. ===== Créer un formulaire de contact (form2mail) ===== Nous supposons dans cet exemple que le nom de domaine hébergé est "domaine.com". Créer un fichier "form.html" que vous mettrez en ligne via [[FTP|FTP]].
Entrez votre adresse mail:
Message:

Créer un second fichier "form2mail.php" que vous mettrez en ligne via [[FTP|FTP]]. \n"; $headers .= "To: Contact <$to>\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/plain; charset=iso-8859-15\n"; /* Appel a la fonction mail */ if (!mail($to, $subject, $message, $headers)){ echo "Erreur: Impossible d'envoyer le mail"; } else { echo "Envoi réussi"; } } else { echo "Erreur: vous devez spécifier une adresse email valide et un texte\n"; } ?> ===== Activer PHP5 ===== :!: Quand vous transférez votre fichier .htaccess, vérifiez que le mode de transfert FTP est "TEXTE" et non pas "BINAIRE", sinon vous aurez une erreur http 500. Online vous propose deux versions de PHP: * la version 4 qui est utilisée par défaut pour les fichiers nommés .php3 et .php * la version 5 qui est utilisée par défaut pour les fichiers nommés .php5 Pour personnaliser la version de php de votre site, il faut placer en racine /www un fichier texte nommé .htaccess comprenant la ligne de commande suivante : # Pour faire parser les fichiers ".php" par PHP5 AddType application/x-httpd-php5 .php Si vos fichiers se nomment .php3, utilisez plutôt dans .htaccess la ligne commande suivante : # Pour faire parser les fichiers ".php3" par PHP5 AddType application/x-httpd-php5 .php3 Vous pouvez vérifier la version PHP de votre site en appelant une page contenant la fonction [[/php#configuration_du_php_d_online|phpinfo()]] ===== Configurer PHP ===== **Uniquement pour les clients ayant souscrit a une offre d'hebergement superieure a M.** Vous pouvez configurer completement votre PHP. Il vous suffit d uploader un fichier "php.ini" a la racine du sous domaine (repertoire "/www/" par exemple), la majorité des options sont modifiables, sauf celles impactant les ressources des serveurs. ===== Restrictions ===== ==== Safe Mode ==== Le safe mode est activé en PHP4 (pas en PHP5), et ce paramètre n'est pas modifiable . ==== chown ==== La modifications du propriétaire des fichiers est prohibé, les fichiers uploadés via PHP et/ou via FTP **ont déja votre utilisateur**. ==== system / exec / popen ==== L'exécution de programme binaires, d'exécutables ou de cgi est prohibé pour des raisons de sécurité. ==== ASP/CGI ==== Pas d'asp, ni de cgi (cgi-bin), ni de programmes exécutables. ===== Problemes Connus ===== ==== Erreurs 500 ==== Il peut y avoir plusieurs causes, en voici certaines: === Erreur dans le fichier htaccess === En cas de directive non autorisée, ou d erreur de syntaxe (ou de mode de transfert du fichier), vous pouvez avoir des erreurs 500 pour tout le contenu du repertoire dans lequel vous avez mis le fichier .htaccess, il vous suffit de le renommer pour ne plus avoir d erreur, il faudra ensuite corriger le contenu du fichier. === Timeout === L'execution de votre script est plus longue que le max_execution_time === Envoie de mail === Si votre CMS utilise la classe phpmailer (Xoops, WANewsletter par exemple) il vous faudra la mettre a jour. Remplacer le repertoire phpmailer present dans votre CMS par la dernière version proposé ici [[http://sourceforge.net/project/showfiles.php?group_id=26031&package_id=252700]].