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
A voir également:

6 réponses

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tomcaz
 
scriptiz, il faut ien que je précise l'adresse de la page du message d'erreur, non?
0
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