Redirection en fonction d'un champs de saisie

Thomas C. -  
scriptiz Messages postés 1494 Statut Membre -
Bonjour,

J'ai trouvé sur ce forum un script utile pour effectuer une redirection en fonction d'un champ saisie:

La question:

[quote]Je suis en train de faire un petit jeu pour les gars du forum où je suis et je souhaiterais leur faire une chasse au trésor.
Le principe est qu'ils se rendent sur une page internet que j'ai créé et ils doivent rentrer une référence dans un champs de saisie et je souhaiterais utiliser ce qu'ils ont saisi pour les renvoyer vers une page web.

exemple : ils mettent dans la zone : boule
ça les renvoie vers www.bouleetbill.com
ils auraient mis : tintin ça aurait envoyé vers www.tintinetbill.com [/quote]

La réponse:

[quote]Admettons que ta page soit comme ça avec ton champ de saisie :

<form method="post" action="redirection.php">

Zone : <input type="text" name="zone">

<input type="submit" value="Envoyer">

</form>

Dans ta page redirection.php:

<?php

//ici tu récupères la valeur saisie
$saisie = $_POST['zone'];

//ici tu construis ton url pour rediriger
$redirection = "www.".$saisie."etbill.com";

header('Location: '.$redirection);
exit();
?> [/quote]

ça marche parfaitement et je l'utilise. Par contre je souhaiterais l'améliorer en faisant que la nouvelle adresse de redirection est invalide, qu'il n'y est pas d'erreur 404 mais que l'internaute soit renvoyer vers une page d'erreur faite maison du style www.monsite.com/erreur.htm

Quelqu'un pourrait m'aider, je suis une macro bille en php .

Merci d'avance

Thomas
Configuration: Windows XP
Firefox 3.0.8

6 réponses

  1. adns Messages postés 1152 Statut Membre 153
     
    bonjour

    sans etre sure de moi je pense que tu peux faire un truc du genre :

    //ici tu récupères la valeur saisie
    $saisie = $_POST['zone'];
    
    //ici tu construis ton url pour rediriger
    $redirection = "www.".$saisie."etbill.com";
    $redirection2 = "url de ta page d'erreur"
    
    $conn = @fopen($redirection, "r");
    
    if ($conn) {
    header('Location: '.$redirection);
    exit(); 
    }else{
    header('Location: '.$redirection2);
    exit(); 
    }
    

    Adns
    0
  2. scriptiz Messages postés 1494 Statut Membre 425
     
    Salut Thomas, ceci devrait te convenir :

    <?php
    
    function is_valid_url('/$url')
    {
        $url = @parse_url('/$url');
    
        if (!$url)
        {
            return false;
        }
    
        $url = array_map('trim', $url);
        $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
        $path = (isset($url['path'])) ? $url['path'] : '';
    
        if ($path == '')
        {
            $path = '/';
        }
    
        $path .= (isset($url['query'])) ? "?$url[query]" : '';
    
        if (isset($url['host']) AND $url['host'] != gethostbyname($url['host']))
        {
            if (PHP_VERSION >= 5)
            {
                $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
            }
            else
            {
                $fp = @fsockopen($url['host'], $url['port'], $errno, $errstr, 30);
    
                if (!$fp)
                {
                    return false;
                }
                fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
                $headers = fread($fp, 4096);
                fclose($fp);
            }
            $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
            return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
        }
        return false;
    }
    
    ?>


    Il te suffit de faire appel à la méthode comme suit :

    if(is_valid_url("https://www.google.be/?gws_rd=ssl"))
    {
        // alors on redirige vers google
    }
    else
    {
        // alors on redirige vers ton message d'erreur
    }


    Voilà bonne continuation.
    0
  3. tomcaz Messages postés 1 Statut Membre
     
    C'est thomas ;-)

    Alors,

    ADNS avec ton script

    J'ai l'erreur Parse error: parse error in C:\wamp\www\index\redirection.php on line 10

    à cette ligne : $conn = @fopen($redirection, "r");

    SRIPTIZ:

    Je suis newbie, ton code me fait peur. J'ai l'impression qu'il y a plein de truc à compléter et je sais pas quoi mettre.

    Merci de votre aide en tout cas
    0
  4. scriptiz Messages postés 1494 Statut Membre 425
     
    @tomcaz

    Il n'y a rien à compléter, tu le copie colle en haut de ta page PHP, ensuite tu fait juste :

    if(is_valid_url("http://www.monsite.com/"))
    {
         // site valide
    }
    else
    {
        // site invalide
    }


    Enfin c'est toi qui voit :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tomcaz
     
    scriptiz, il faut ien que je précise l'adresse de la page du message d'erreur, non?
    0
  7. scriptiz Messages postés 1494 Statut Membre 425
     
    Dans le else tu met un Header("Location: tonsite.com/tapagederreur.php");

    Dans la première partie du if, si le site est valide, tu fais la même chose mais vers le site en question.
    0