Page 1 sur 1

HTTP_REFERER et variable dans url

Posté : 01 août 2008, 17:03
par philipp
bonjour,
j'aurais besoin d'aide sur ce pb que je n'arrive pas à résoudre:
j'ai dans l'envois d'un formulaire par email un test :

Code : Tout sélectionner

if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.com/index.php?pag=fiche') { header('Location: http://www.monsite.com/index.php?pag=accueil'); }
pour contrôler si le formulaire est pas posté de mon site.
ce formulaire ce trouve dans une page ou j'ai dans url plusieurs variable du genre:
http://www.monsite.com/index.php?pag=fiche&id=1
et c'est là que ça plante car si j'ai http://www.monsite.com/index.php?pag=fiche j'ai pas de pb mais si je rajoute une variable je suis plus bon.
qu'est ce qui manque, je sèche ? :oops: merci

Posté : 01 août 2008, 17:47
par hakazizi
rien compris a ta demande essaye d'etre plus explicite

Posté : 02 août 2008, 08:33
par philipp
ben voilà dans mon test si mon url est à une seule variable (pag=fiche c'est ok) mais en réalité il y a deux variable et le deuxième c'est un id qui change à chaque fiche.

Code : Tout sélectionner

if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.com/index.php?pag=fiche&id=1') { header('Location: http://www.monsite.com/index.php?pag=accueil'); }
l'idéal pour moi serais de d'enlever le &id=1 avant de faire le test, mais je là bloque aussi :shock:

Posté : 02 août 2008, 11:18
par _activmik
Essaye de mettre ton url dans une variable puis tu supprimes le bout que tu ne veux pas avec un code du style :
 // partie à enlever 
  $supp = "&id=1"; 
   
  // cherche la postion du &id=1  
  $position = strpos($url, $tsupp); 
   
  // enleve  tout ce qui se trouve apres le &id=1  
  $url_new = substr($url, 0, $position); 

Posté : 02 août 2008, 11:37
par hakazizi
tu pourrais egalement faire un truc comme sa.
if(!ereg"^http://www.monsite.com", $_SERVER['HTTP_REFERER'])) //on verifie que le debut du referer soit bin le domaine attendu
   { 
      header('Location: http://www.monsite.com/index.php?pag=accueil'); exit();//si le domaine n'est pas bon on redirige sur l'accueil et on stoppe le script
    }
//si c'est bon on laisse le script se derouler normalement
 
NB pour l'autre sens on enleve le "!" et le exit

Posté : 02 août 2008, 19:44
par philipp
:D :D j'ai testé ta solution hakazizi elle me semble la plus simple :oops: pour mon niveau, ça fonctionne.
merci encore pour vos aides :D

Posté : 03 août 2008, 14:23
par hakazizi
je suis pas sur que pour un formulaire il y ai quelque chose dans ton referer...