IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Redirection en fonction d'un champ de saisie


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Redirection en fonction d'un champ de saisie
    Bonjour,

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

    La question:

    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
    La réponse:

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

    ç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

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Je dirais que ce n'est pas vraiment du domaine de PHP mais plus de Apache...

    En effet, tu as surement déjà entendu parler des fichiers .htaccess qui permette de paramétrer le comportement de Apache.

    Parmi ce que peut gérer le .htaccess existe ce qu'on appel l'url rewriting, qui permet de rediriger (au niveau d'apache) une URL vers un fichier, mais je crois (sans certitude) qu'il existe un paramètre pour indiquer la page de redirection si l'url n'existe pas.

    Sans pouvoir te donner plus de précision, je te suggère de faire une recherche .htaccess + url rewriting sur google, je suis persuadé que tu trouveras la réponse.

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    d'une manière très simpliste le retour de la fonction file_get_contents() sera false si l'URI n'est pas valide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    if(!@file_get_contents("http://sfksmfjks.com")) echo "UNREACHABLE !";
    ?>
    on pourrait faire un peu plus en récupérant le header et en le testant avec une expression régulière, mais ça serait reposer sur ce qu'envoie le serveur, et il n'envoie pas obligatoirement la même chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(!@file_get_contents("http://google.com")) echo "UNREACHABLE !";
    else {
       echo "<pre>";
       print_r($http_response_header);
       echo "</pre>";
    }
    ?>
    le mieux serait sans doute d'exploiter les sockets, mais c'est une autre histoire.


  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J'ai cherché avec .htaccess + url rewriting j'obtiens des tutorials pour modifier les url des sites dont les adresses ne sont pas référecables et pour lesquelles il y a donc un intérêt à les rendre référençable par de l'url rewriting.

    Mais ça semble hypra compliqué par rapport à ce que je veux faire.

    En fait, quand mon fichier redirection.php génère une adresse qui ne marche pas, l'erreur obtenu est bien l'erreur 404, non?, le plus simple ne serait il pas de pouvoir personnaliser l'erreur 404? Mais j'aimerais ne pas passer par cette solution.

    Sinon, il doit être possible de modifier simplement mon petit fichier pour y adjoindre la fonction de redirection vers une page par défaut si l'adresse générée par redirection.php n'est pas bonne?



    je recommence:
    J'ai un site www.voiture.fr (exemple théorique)
    et des sous site (forum en réalité) www.marquedelavoiture.voiture.fr

    si la marque de la voiture n'existe pas je voudrais renvoyer vers une page d'erreur spécifique.

    Autre possibilité proposée mais je ne sais pas faire :
    Vu que je connais tous les paramètres possibles pour marque de la voiture, est ce que je peux pas faire faire une comparaison entre la valeur entrée et les valeurs possibles pour marque de la voiture. ainsi suivant si la comparaison est probante ou non je renvoi vers www.marquedelavoiture.voiture.fr ou ma page d'erreur spécifique.

    merci pour votre aide

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Citation Envoyé par tomcaz Voir le message
    Mais ça semble hypra compliqué par rapport à ce que je veux faire.
    lol non !

    tu as juste à créer un fichier nommé .htaccess et mettre en tout et pour tout ça dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Options +FollowSymlinks
    RewriteEngine on
    ErrorDocument 404 /adresse_page_personnalisé_pour_404.php
    Tu copie ce fichier à la racine de ton site et terminé. On peut très difficilement faire plus simple ! En plus, ça marche pour absolument toutes les erreurs 404 que tu pourras avoir sur ton site.

    Ensuite, effectivement, rien ne t'empêche de tester avant de faire ta redirection si la page vidée existe, mais là, on n'a pas assez d'info sur l'architecture de ton site pour te faire une proposition.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/06/2009, 09h28
  2. redirection en fonction de la saisie du formulaire
    Par ajgad dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 26/09/2007, 13h03
  3. Redirection en fonction d'une URL saisie
    Par steveroselmac dans le forum Langage
    Réponses: 3
    Dernier message: 25/07/2007, 17h00
  4. Réponses: 9
    Dernier message: 25/04/2007, 15h16
  5. Réponses: 6
    Dernier message: 12/02/2007, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo