FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireGénéralitésChemins - URL

Avec Linux, le caractère à utiliser dans les chemins est le slash (/). Avec Windows, il s'agit de l'anti-slash (\) mais dans un script en PHP il est aussi possible d'utiliser le slash.
Vous pouvez donc utiliser des slash pour que vos scripts fonctionne sous Windows et sous Linux. Par exemple, le code suivant recherchera le fichier "librairie.php" qui se trouve dans le répertoire "inclure" du répertoire courant et ceci quelque soit le système d'exploitation :

 
Sélectionnez
<?php
require './inclure/librairie.php';
?>

Attention, Linux est sensible à la casse, donc si vous voulez inclure le fichier "librairie.php", vous pouvez mettre "librairie.php", "LIBRAIRIE.PHP" ou "Librairie.PHP" sous Windows mais vous devez absolument mettre "librairie.php" si le code doit fonctionner sous Linux.

En ce qui concerne le chemin que vous définissez pour la directive "include_path", le séparateur n'est pas le même et vous pouvez utiliser la constante PATH_SEPARATOR. Exemple de code pour inclure les fichiers qui sont dans le répertoire "classes" (plus d'informations sur la directive 'include_path'):

 
Sélectionnez
<?php
ini_set('include_path', '.' . PATH_SEPARATOR . dirname(__FILE__) . '/classes');
?>
Mis à jour le 12 septembre 2005  par Forum PHP

Lien : Comment définir le répertoire qui contient les fichiers à inclure ?

Une première idée pourrait nous pousser à utiliser le fichier .htaccess pour rediriger l'internaute à l'aide d'une page 404 de notre choix (la page par défaut pour les URIs non valides). Ce script peut récupérer l'adresse que notre internaute a demandée et utiliser un tableau ou une base de données pour déterminer la véritable page à charger. Cependant, cette approche est incorrecte car Apache envoie une erreur HTTP 404 au navigateur, ce qui empêche le référencement correct de la page Web. Par conséquent, aucune page de votre site ne serait référencé par les moteurs de recherche. La véritable solution implique la réécriture de liens. Il faut pouvoir activer la directive "RewriteEngine" de votre fichier .htaccess de manière à y inclure cette première ligne :

 
Sélectionnez
RewriteEngine on

À partir de là, vous pouvez utiliser la directive RewriteRule dans ce même fichier, conjointement à des expressions régulières. Imaginons par exemple un site fondé sur des articles, sur le principe de : articles.php?article=X (où X est l'identifiant numérique entier de l'article).
Nous aurions une série d'articles de la sorte : articles.php?article=1, articles.php?article=43, articles.php?article=99, etc.
Nous désirons utiliser une arborescence virtuelle au lieu de ces paramètres barbares. Nous aimerions quelque chose comme : articles/titre/X/ Voici comment nous pouvons nous y prendre : il suffit d'afficher les liens de la manière souhaitée dans le HTML et, dans le .htaccess, d'ajouter cette ligne :

 
Sélectionnez
RewriteRule articles/.*/([0-9]+)$ /articles.php?article=$1 [L]

C'est une solution assez complexe, mais elle est détaillée dans le tutoriel de réécriture de liens (URL Rewriting)

Mis à jour le 6 août 2008  par Guillaume Rossolini

Lien : Tutoriel de réécriture de liens (URL Rewriting), par Guillaume Rossolini

On procède en deux étapes :
- vérification syntaxique
- vérification de l'existence de la ressource

La vérification syntaxique consiste à vérifier que le http:// est bien présent, et d'une manière générale que la grammaire normalisée d'écriture des URL est bien respectée.

Ainsi, la fonction parse_url($url) permet d'extraire tous les éléments d'une URL : domaine, protocole, port, chemin, paramètres... afin de les contrôler.

La vérification de l'existence physique du serveur, passe par l'établissement d'une socket vers le serveur avec la fonction fsockopen().

Le script suivant procède à ces vérifications successives :

 
Sélectionnez
function checkurl($url){
    // vérification du protocole HTTP
    if (!eregi("^http://", $url)) {
        return FALSE;
    }
    $details = parse_url($url);
    // vérification du port 80 lié au protocole HTTP
    if (!isset($details['port'])) {
        $details['port'] = "80";
    }
    // vérification du chemin
    if (!isset($details['path'])) {
        $details['path'] = "/";
    }
    // vérification de l&#39;adresse du serveur
    if (!ereg("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", $details['host'])){
        $details['host'] = gethostbyname($details['host']);
    }
    // ouverture d&#39;une connexion vers le serveur
    if ($sock = fsockopen( $details['host'], $details['port'], &$numero_erreur, &$texte_erreur)){
        $requete = "GET ".$details['path']." HTTP/1.1\r\n";
        $requete .= "Host: ".$details['host']."\r\n\r\n";
        // envoie d&#39;une requête HTTP GET
        fputs($sock, $requete);
        // réception de la réponse du serveur
        $str = fgets($sock, 1024);
        while(!ereg('^HTTP/1.1 ', $str)){
            $str = fgets($sock, 1024);
        }
        // fermeture de la connexion
        fclose($sock);
        list($http, $str, $texte) = explode(" ", $str, 3);
        return array($str, $reponse[$str]);
    }
    return FALSE;
}
Mis à jour le 6 août 2008  par Cyberzoide

Un serveur est configuré par défaut pour fonctionner en local, en écoutant l'adresse 127.0.0.1 (localhost). Donc pour pouvoir y accéder depuis d'autres ordinateurs, il faut le faire écouter l'adresse de la machine sur le réseau. Il s'agit juste d'une ligne à changer dans le fichier de configuration. Stoppez le serveur, modifiez le fichier httpd.conf situé dans le répertoire conf_files et changez la ligne

 
Sélectionnez
Listen 127.0.0.1:80

par

 
Sélectionnez
Listen [IP de la machine]:80

puis redémarrez le serveur.

Mis à jour le 6 août 2008  par khayyam90

Pour récupérer l'url d'une page en cours d'exécution, on utilise l'une des variables prédéfinies suivantes :

  • $_SERVER['PHP_SELF'], qui contient le nom du fichier du script en cours d'exécution, par rapport à la racine Web :
Exemple
Sélectionnez

//Dans le script se trouvant à l'adresse http://www.monsite.com/test/test.php
echo $_SERVER['PHP_SELF']; //Affiche /test/test.php
                
  • $_SERVER['SCRIPT_NAME'], qui contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes :
Exemple
Sélectionnez

//Dans le script se trouvant à l'adresse http://www.monsite.com/test/test.php
echo $_SERVER['SCRIPT_NAME']; //Affiche /test/test.php
                
  • basename(__FILE__), qui contient uniquement le nom du script courant. (Ce qui est un avantage lorsque l'on souhaite uniquement récupérer le nom du script) :
Exemple
Sélectionnez

//Dans le script se trouvant à l'adresse http://www.monsite.com/test/test.php
echo basename(__FILE__); //Affiche test.php
                


Pour récupérer l'url complète d'un script, on utilise les variables prédéfinies $_SERVER['SERVER_NAME'] et $_SERVER['REQUEST_URI'].

  • $_SERVER['SERVER_NAME'] renvoie le nom du serveur hôte qui exécute le script
  • $_SERVER['REQUEST_URI'] renvoie tout le reste de l'url y compris les variables transmises par la méthode GET
Exemple
Sélectionnez

//Dans le script se trouvant à l'adresse http://www.monsite.com/test/test.php?test=10
echo $_SERVER['SERVER_NAME']; //Affiche www.monsite.com
echo $_SERVER['REQUEST_URI']; //Affiche /test/test.php?test=10
                

On peut également le faire avec le code suivant :

Exemple
Sélectionnez

//Affiche l'url complète composée de l'ip, du port et du fichier ainsi que les variables en paramètres
echo 'http://' . $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
                
Mis à jour le 8 mars 2011  par Forum PHP, Kerod
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.