Router en PHP

Par OOO777, il y a 5 ans


Bonjour,

Je suis actuellement entrain de suivre la formation de PHP, et pour réaliser le router en php avec la solution de $_SERVER['REQUEST_URI']
en faite en local ca fonctionne très bien mais lorsque j'envoie le projet en ligne il n'y a rien qui s'affiche sauf la page d'accueil (home)
Pourriez-vous m'aider svp?

Ce que je fais

Décrivez votre code ou ce que vous cherchez à faire.

  $url = $_SERVER['REQUEST_URI'];

  if($url ==='/nous-contacter'){
  require 'pages/contact.php';
  }
  elseif($url ==='/'){
  require 'pages/home.php';
  }

Ce que je veux

J'aimerais que tous liens soit prise en compte, dommage il prends seulement à la racine et pas les autres lien

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

13 réponses

Carouge10, il y a 5 ans

Bonjour,
Que donne le var_dump($url); ?

OOO777, il y a 5 ans

OK, je pense que je vais le tester tout de suite là et voir deja ce que ca donne

OOO777, il y a 5 ans

en faite, je viens de verifier le var_dump($url), à la racine il me donne bien (/)
sauf que en faisant par exemple: monsite.fr/bonjour
il affiche: Non Trouvé
Le document demandé n'a pas été trouvé sur ce serveur. voilà c'est ce que j'arrive pas à comprendre

Carouge10, il y a 5 ans

montre le code complet, car je ne vois pas le "non trouvé"
tu peux aussi pour l'instant ajouter un else et afficher la home

OOO777, il y a 5 ans

session_start();
require_once 'functions/functions.php';
require_once 'functions/main.php';
require 'elements/header.php';
$url = $_SERVER['REQUEST_URI'];

if($url ==='/nous-contacter'){
require '/pages/contact.php';
}
elseif($url ==='/login'){
require 'pages/login.php';
}
elseif($url ==='/inscription'){
require 'pages/register.php';
}
elseif($url ==='/parametres'){
require 'pages/reglages.php';
}
elseif($url ==='/mon-profil'){
require 'pages/profil.php';
}
elseif($url ==='/'){
require 'pages/home.php';
}
elseif($url ==='/logout'){
require 'pages/logout.php';
}else{
require 'pages/error.php';
}

require 'elements/footer.php';

Carouge10, il y a 5 ans

si tu tapes directement l'adresse du login, par exemple, tu arrives bien dessus ?
comment renseignes-tu le liens dans tes pages ?

OOO777, il y a 5 ans

Oui oui si je tape le page en suivant mes dossiers genre
monsite.fr/pages/login.php il affiche bien

Carouge10, il y a 5 ans

peut-être un soucis de priorité,
mets ta home en 1ère

OOO777, il y a 5 ans

oui, je viens de le faire mais il ne m'affiche toujour document non trouvé dans le serveur
c bizzarre parceque en local ca fonctionne tres bien, meme le var_dump de tout ce que je tape en URL n'affiche rien du tout

Carouge10, il y a 5 ans

non ce n'est pas bizarre car l'environement est différent

OOO777, il y a 5 ans

Alors que faire, il existe t'il une alternative pour recuperer les URL qu'on tape en GET comme on le fait avec $_Server[''REQUEST_URI] ?

gillesr, il y a 5 ans

Bonjour,
une question bête, tu as bien un fichier .htaccess qui gère la réécriture des urls ?

Gillesr

OOO777, il y a 5 ans

Merci beaucoup frerot
le projet marche à la merveille , j'ai aussi associé la compréhension du tutos de PRIMFX où il parle du Router PHP
https://www.youtube.com/watch?v=Q9PZXoe-aAE
Merci infinement