Comment cacher un lien avec php ?

Bonjour,

Je cherche à cacher l’adresse de liens sur mon site, pour qu’ils n’apparaissent pas dans la barre d’état (pour éviter les fraudes aux affiliations pour ceux qui connaissent)

j’ai trouvé ce code, mais ça marche pas… j’ai tout mis dans une page test.php :


<a href="test.php?site=1">lien</a>
   <?
    switch(site)
    {
      case 1 : header("Location: [www.qqpart.com"...](http://www.qqpart.com) ); break;
      case 2 : header("Location: [www.autrepart.com"...](http://www.autrepart.com) ); break;
      default : header("Location: [www.tonsite.com"...](http://www.tonsite.com) );
    }
   ?>

J’ai pas tout compris certainement…

qq peut m’aider ?

Merci !

Plusieurs erreurs :

  • La documentation PHP de header() indique que header() doit être appelée avant que le moindre contenu ne soit envoyé.
  • switch(site) n’est pas syntaxiquement correct, remplace cela par : switch($_GET[‘site’])
  • Je ne sais pas si c’est toi ou bien le forum (en carton pâte sous une journée de mousson) de Clubic qui a mis les mais ça n’a pas sa place ici.

De plus, si j’avais bien compris le code que tu as trouvé et ce que tu veux faire ton lien et le switch() { … } n’ont rien à faire dans le même fichier/script.

Surtout que logiquement, c’est une confusion entre client/serveur…

arff, je suis assez “novice” vous pouvez m’en dire un peut plus ?

j’ai fait 2 pages :

test.php :

<body>
<a href="redirect.php?site=1">lien</a>
  
</body>

redirect.php :

<? switch($_GET['site']) { case 1 : header("Location: [www.qqpart.com"...](http://www.qqpart.com) ); break; case 2 : header("Location: [www.autrepart.com"...](http://www.autrepart.com) ); break; default : header("Location: [www.tonsite.com"...](http://www.tonsite.com) ); } ?>

(j’ai pas mis la balise [code] car clubic ma rajoute les [url] aux adresses www)

Mais ça ne marche pas…

Help plz :slight_smile:
Edité le 04/01/2009 à 18:15

En premier lieu, c’est <?php et pas <? pour faire du PHP.

Sinon, c’est que header + Location ce sont des entêtes. Des entêtes, ça s’envoie par définition avant tout le reste, soit :

<?php
switch($_GET['site'])
{
case 1 : header("Location: [www.qqpart.com"...](http://www.qqpart.com) ); break;
case 2 : header("Location: [www.autrepart.com"...](http://www.autrepart.com) ); break;
default : header("Location: [www.tonsite.com"...](http://www.tonsite.com) );
}
?>

Ni plus ni moins.

j’ai trouvé un truc, simplement avec form :

<form action="http://www..lesite.com" method="post" name="form1" target="_blank" id="form1">
  <input type="image" src="images/boutons/bouton1.jpg"/>
</form>

Mais maintenant j’ai un autre pb… mon image du bouton, je voudrais que ce soit une image survolée…

ça j’y arrive pas…

Une ptite idée ?

Ca marche pas…

Je doit faire 2 fichiers comme j’ai fait au début ? 1 avec le lien : lien et l’autre avec le code que tu m’a donné ? (j’ai biensur enlevé les [url] que clubic rajoute :slight_smile:

merci :slight_smile:

Oui, toujours deux fichiers.

Et qu’est-ce qui ne fonctionne pas?

j’ai ce message d’erreur quand je clic sur le lien :

Warning: Cannot modify header information - headers already sent by (output started at /homez.42/ebootikj/www/redirect.php:9) in /homez.42/ebootikj/www/redirect.php on line 12

je doit modifier qq chose dans le code de redirect.php ? (à part les adresse de destination www.qqpart.com) ?

Merci de ton aide précieuse :super:

En gros, en HTTP standard, tu envoie d’abord les entêtes ensuite les données.

Donc faut vérifier si tu n’as pas des espaces, des sauts de ligne ou autre, qui soient envoyés avec le <?php.

YES ! ça marche ! merci bcp !!! (y’avais effectivement une ptite erreur)

Nikel ! super ! top ! Whouhhhouuuu !! :super::super::super::super::super::super::super::super::super: