HTTP_REFERER et variable dans url

philipp
Invité n'ayant pas de compte PHPfrance

01 août 2008, 17:03

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

Mammouth du PHP | 558 Messages

01 août 2008, 17:47

rien compris a ta demande essaye d'etre plus explicite

philipp
Invité n'ayant pas de compte PHPfrance

02 août 2008, 08:33

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:

Eléphant du PHP | 169 Messages

02 août 2008, 11:18

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); 

Mammouth du PHP | 558 Messages

02 août 2008, 11:37

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

philipp
Invité n'ayant pas de compte PHPfrance

02 août 2008, 19:44

: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

Mammouth du PHP | 558 Messages

03 août 2008, 14:23

je suis pas sur que pour un formulaire il y ai quelque chose dans ton referer...