Page différente

Résolu
Bonjour,
est il possible d'afficher une page différente selon la page d'où vient le visiteur
Configuration: windows xp sp3 et firefox 3

14 réponses

  1. Contributeur
    salut,

    pour tester l'égalité de valeurs il faut mettre deux signes égale ("==") ou trois pour tester à la fois la valeur et le type ("===").
    tu n'en as mis qu'un dans tes if(), il s'agit d'une assignation donc cela renverra toujours True.

    mais dans ce cas tu peux utiliser un "switch".
    <?php
    	switch($_SERVER['HTTP_REFERER'])
    	{
    		case 'http://bormat2.free.fr/1111.htm':
    			$message = 'Choix 1';
    			break;
    			
    		case 'http://bormat2.free.fr/php':
    			$message = 'Choix 2';
    			break;
    			
    		default:
    			$message = 'Erreur';
    			break;
    	}
    ?>
    1. Contributeur
      salut,

      en PHP tu peux utiliser la variable de serveur $_SERVER['HTTP_REFERER'], décrite comme suit :
      L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
      1. merci je vais essayer de voir si je peux trouver plus car je ne 'my connait pas en php
        1. alors
           j'ai piqué un code 
          sur internet mais ça marque tout le temps accès interdit 
          que je vienne de la page https://www.google.fr/?gws_rd=ssl ou non
          
          <?php
          
          if($_SERVER['HTTP_REFERER'] != "https://www.google.fr/?gws_rd=ssl")
          {
          echo 'Accés interdit !';
          }
          else {
          
          $myWhere = 'test';
          $myValue = $_GET['test'];
          require "config.php";
          
          
          $test = urldecode($_GET['test']);
          $query = "SELECT cover FROM DB WHERE test = '{$test}';";
          $result = mysql_query($query);
          $row1 = mysql_fetch_assoc($result);
          ?>
          <html>
          <head>
          <title>Mon site</title>
          <META NAME="DESCRIPTION" CONTENT="">
          </head>
          <body>
          <div>
          <div style="z-index: 1;">
          <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload2.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,47,0" width="100%" height="100%" align="center">
          <param name="allowScriptAccess" value="always" />
          <param name="movie" value="http://www.google.fr/ok.swf" />
          <param name="quality" value="high" />
          <param name="wmode" value="transparent" />
          <embed src="test.swf" />
          </object>
          </div>
          
          <?php
          echo"<!--~~~CrawlTrack~~~~~~~~~~~~~~~~~~~~-->\n";
          $crawltsite=1;
          include("/index.php");
          echo"<p><a href=\"http://www.crawltrack.fr\">
          <img src=\"http://www.mon_site.fr/chiot.jpg\" alt=\"CrawlTrack: free crawlers and spiders tracking script for webmaster- SEO script -script gratuit de détection des robots pour webmaster\" width=\"1\" height=\"1\" style=\"border:0\"/>
          </a></p>\n";
          echo"<!--~~~CrawlTrack~~~~~~~~~~~~~~~~~~~~-->\n";
          ?>
          
          </body>
          </html>
          
          <? } ?>
          1. Contributeur
            salut,

            en début de script, ajoute :
            var_dump($_SERVER['HTTP_REFERER']);

            pour savoir ce que contient la variable.

            mais comme le dit la définition Cette valeur est affectée par le client, et tous les clients ne le font pas.
            donc ce n'est pas une méthode fiable.
            1. merci je vais voir sinon j'ai réussis à le faire marcher

              <?php
              if ($_SERVER['HTTP_REFERER']  == "http://bormat2.free.fr/1111.htm" )
              {
              ?>
              <meta http-equiv="refresh" content="0;url=/toto/">
              <?php
              }
              else
              {
              if ($_SERVER['HTTP_REFERER']  == "http://bormat2.free.fr/php/" )
              {
              ?>
              <meta http-equiv="refresh" content="0;url=/babar/">  
              <?php
              }
              else
              {
              ?>
              erreur
              <?php
              }
              }
               
              ?> 
              1. maintenant quand on arrive d'une autre page ça met null à la place de erreur c normal ?
                1. quand je l'enlève ça m' envoie toujours vers toto

                  et quand je le remet ben il y a un message différent avant la redirection j'ai sois null soit
                  string(31) "http://bormat2.free.fr/1111.htm"

                  mais ça me renvoie toujours sur toto
                  moi je voudrait juste faire une page normal peu importe d'ouù on vient et une page spécial pour des site choisit
                  merci vraiment de ton aide
                  1. super vraiment merci ça marche
                    je vais pouvoir l'appliquer à ma page d'accueil
                    voici ce que ça donne
                    <?php
                    	switch($_SERVER['HTTP_REFERER'])
                    	{
                    		case 'http://bormat2.free.fr/1111.htm':
                    			$message = 'Choix 1';
                    			break;
                    			
                    		case 'http://bormat2.free.fr/php/2222.htm':
                    			$message = 'Choix 2';
                    			break;
                    			
                    		default:
                    			$message = 'code html ';
                    			break;
                    	}
                    ?>
                    <?php
                              echo $message; 
                    ?> 


                    juste une chose est ce que ça gene le comportement de google
                    ou il prend que le code par défaut
                    1. Contributeur
                      est ce que ça gene le comportement de google
                      ou il prend que le code par défaut

                      je ne comprends pas ce que tu veux dire.
                  2. un autre truc quand le code html est trop long ça marche plus alors j'ai voulu faire une include j'ai aussi testé file_get_contents mais ça ne fonctionne pas

                    <?php
                    	switch($_SERVER['HTTP_REFERER'])
                    	{
                    		case 'http://bormat2.free.fr/1111.htm':
                    			$message = 'Choix 1';
                    			break;
                    			
                    		case 'http://bormat2.free.fr/php/2222.htm':
                    			$message = 'Choix 2';
                    			break;
                    			
                    		default:
                    			$message = '<html><body><?php include("http://bormat2.free.fr/wordpress4/"); ?></body></html>
                    ?>
                    
                    
                    <?php
                              echo $message; 
                    ?> 

                    pareil si je met pas de html et body
                    1. Contributeur
                      tu écris mal ton code.
                      avec quoi codes-tu ?
                      tu n'as pas de coloration syntaxique ?
                      <?php
                      	switch($_SERVER['HTTP_REFERER'])
                      	{
                      		case 'http://bormat2.free.fr/1111.htm':
                      			$message = 'Choix 1';
                      			break;
                      
                      		case 'http://bormat2.free.fr/php/2222.htm':
                      			$message = 'Choix 2';
                      			break;
                      
                      		default:
                      			$message = '<html><body>'.include("http://bormat2.free.fr/wordpress4/").'</body></html>';
                      	}
                      ?>
                      
                      1. ha non j'ai oublié de réinstallé notepad je m'y met
                        je viens de tester le code ça me marque

                        Warning: main(http://bormat2.free.fr/wordpress4/ [function.main]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /mnt/101/sda/f/8/bormat2/php/66.php on line 13

                        Warning: main() [function.include]: Failed opening 'http://bormat2.free.fr/</body></html>' for inclusion (include_path='/mnt/101/sda/f/8/bormat2/include:.:/usr/php4/lib/php') in /mnt/101/sda/f/8/bormat2/php/66.php on line 13