Bonsoir,
J'ai un site avec un système de réécriture d'url pour une meilleur organisation mais j'ai besoin de récupérer une variable GET mais je n'y arrive pas. Voici mon htaccess ( à la racine )

RewriteEngine on
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1

Et voici ma page index.php ( à la racine )

<?php
session_start();
$allowed = array(
'home'
);
$parameter = explode('/', $_GET['p']);
if(empty($_GET['p'])){
  include_once('controller/home.php');
  $launch = new home();
}
else{
  $controller = $parameter[0];
  if(in_array($controller, $allowed)){
    switch(count($parameter)){
      case 1:
        include_once('controller/'.$controller.'.php');
        $launch = new $controller();
        break;
      case 2:
        $action = $parameter[1];
        include_once('controller/'.$controller.'.php');
        $launch = new $controller();
        if(method_exists($controller, $action)){
          $launch->$action();
        }
        else{
          include_once('view/404.html');
        }
        break;
      case 3:
        $action = $parameter[1];
        $add = $parameter[2];
        include_once('controller/'.$controller.'.php');
        $launch = new $controller();
        if(method_exists($controller, $action)){
          $launch->$action($add);
        }
        else{
          include_once('view/404.html');
        }
        break;
      default:
        include_once('view/404.html');
        break;
    }
  }
  else{
    include_once('view/404.html');
  }
}
?>

Voila merci d'avance, je ne demande pas forcément une réponse mais j'ai beau cherché sur Google je trouve des solutions qui ne fonctionnent pas ou que je sais pas faire fonctionner plutôt.

3 réponses


Salut,

sur apache, la réécriture d'url est bien activée aussi ?

Sur quel lien est-ce que tu clic ? (je voudrai voir le "href")

Donne nous aussi l'emplacement de ces 3 fichiers :

  • le fichier qui contient le lien sur lequel tu clic (celui dont j'aimerai voir le "href")
  • le htaccess
  • index.php (il est à la racine ? Ou peut-être dans un dossier "racine/public" ou autre ?)
OhhRaj
Auteur

Salut,
Alors je suis sous Apache et oui la réécriture est activée. Je n'ai pas de href particulier pour l'instant j'aimerais juste que quand je rentre un lien du style http://example.com/contact?email=email@domain.com, je traite ces informations en appelant une classe contact et en passant en paramètre les variables GET dans la fonction construct. Voici l'organisation de mon site :

  • Site
    • controller
      • contact
    • model
    • view
    • index.php
    • .htaccess

Je ne suis pas sur de bien comprendre.
Moi j'aurai fais quelque chose comme ça (dis moi si ça convient ou pas) :

Vu ton arborescence,
tu peux mettre un define dans ton index.php de la sorte :

// index.php
define('BASE_URL', '/chemin/vers/dossier/racine/du/site/dossier_du_site/');

Ensuite, on va dire que dans ta vue ".../Site/view/home.php" il y a un menu avec plusieurs liens ("Contact" par exemple).
Alors il faut écrire :

<?php
// home.php
echo '<a href="' . BASE_URL . 'Contact/' . $email . '">Contact</a>';
?>

Et dans le htaccess :

RewriteRule ^Contact/(.*)/?$    index.php?p=contact&email=$1  [L]

Il faut remplacer le .(étoile) par une vraie vérification d'email.
Je ne l'ai pas fait pour que l'exemple reste simple.