Changer une redirection via un choix de liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Changer une redirection via un choix de liste déroulante

Re: Changer une redirection via un choix de liste déroulante

par Jabe » 02 oct. 2009, 18:12

J'ai refait un test avec ce que tu as dit et en ne gardant que ce qui concernait mes premiers choix de recherche (Google), et ça ne passe pas, mais mon code doit être archi faux vu mon niveau de PHP :cry:

J'ai mis le code en ligne ici.

Re: Changer une redirection via un choix de liste déroulante

par AB » 01 oct. 2009, 19:28

Merci pour cette réponse.

Je viens de faire un test en changeant mon code et ça coince au niveau de mon:
 header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}
J'ai pas testé ton code mais déjà tu pourrais faire
$redirection = str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]);

// et
header("Location:$redirection");

/* ce qui te permettrait de vérifier entre temps
echo $redirection*/
D'ailleurs même principe à l'intérieur de la chaine $redirection : sépares les éléments pour les tester individuellement et tu trouveras bien ce qui pose problème :wink:

Re: Changer une redirection via un choix de liste déroulante

par Jabe » 30 sept. 2009, 22:06

Merci pour cette réponse.

Je viens de faire un test en changeant mon code et ça coince au niveau de mon:
 header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}

Re: Changer une redirection via un choix de liste déroulante

par AB » 28 sept. 2009, 01:08

Pas le temps de regarder ton code en particulier mais pour le select un exemple de code parmi de nombreuses possibilités :
<?php  
$page = !empty($_GET['page'])? $_GET['page'] : null;

if (isset($page))
{
	switch($page) 
		{ 
		case 'accueil': $direction = 'page_accueil.html' ;break; 
		case 'presentation': $direction = 'page_presentation.html' ;break; 
		case 'liens': $direction = 'page_lien.html' ;break; 
		
		default : $direction = null ;
		}
	header("Location:$direction");  
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
img {
border:none
}
form, select, input {
margin:0;
padding:0;
}
#menuselect p {
display:inline;
}
#menuselect select, #menuselect input {
background-color:#66CCFF;
font-family: Comic Sans MS;
font-size:0.9em;
font-weight:bold;
}
</style>
</head>
<body>
<div class="menu"> 
<form id="menuselect" action="#" method="get">
<p>
 <select  name="page">
   <option value="0">Choisissez</option> 
   <option value="accueil">Accueil</option> 
   <option value="presentation">Présentation</option>
   <option value="liens">liens</option>
  </select>
</p>
<p><input type="submit" name="ok" value="ok" /></p>
</form> 
</div>
</body>
</html>

Re: Changer une redirection via un choix de liste déroulante

par Jabe » 27 sept. 2009, 21:53

Up! Personne ne sait comment faire ?

Changer une redirection via un choix de liste déroulante

par Jabe » 20 sept. 2009, 16:03

Bonjour,

Je cherche à rediriger une recherche en fonction du bouton radio sélectionné ou du choix d'une liste déroulante.

J'ai mis une page de test en ligne ici.

Mon code HTML est le suivant:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test moteur de recherche</title>
<style type="text/css">
.page {
    text-align: center;
}
</style>
</head>
<body class="page">
<form method="get" action="actions.php">
    <div class="input">
        <input type="text" size="80" name="champ_de_recherche" />
        <button type="submit">OK</button>
    </div>
    <div class="options">
        <label for="google">
        <input type="radio" name="choix_de_recherche_1" id="google" value="google" />Google:</label>
        <select name="liste_de_choix_google">
                <option id="google_francais" value="google_francais">Google Fran&ccedil;ais</option>
                <option id="google_anglais" value="google_anglais">Google Anglais</option>
                <option id="google_espagnol" value="google_espagnol">Google Espagnol</option>
                <option id="google_allemand" value="google_allemand">Google Allemand</option>
        </select>
        <label for="bing"><input type="radio" name="choix_de_recherche_1" id="bing" value="bing" />Bing</label>
        <label for="wikipedia"><input type="radio" name="choix_de_recherche_1" id="wikipedia" value="wikipedia" />Wikip&eacute;dia:</label>
        <select name="choix_de_recherche_wikipedia">
                <option id="wikipedia_francais" value="wikipedia_francais">Wikip&eacute;dia Fran&ccedil;ais</option>
                <option id="wikipedia_anglais" value="wikipedia_anglais">Wikip&eacute;dia Anglais</option>
                <option id="wikipedia_espagnol" value="wikipedia_espagnol">Wikip&eacute;dia Espagnol</option>
                <option id="wikipedia_allemand" value="wikipedia_allemand">Wikip&eacute;dia Allemand</option>
        </select>
        <br />
        <br />
    </div>
</form>
<form method="get" action="actions.php">
    <div class="input">
        <input type="text" size="80" name="champ_media" />
        <button type="submit">OK</button>
    </div>
    <div class="options">
        <label for="audio"><input type="radio" name="choix_de_recherche_2" id="audio" value="audio" />Audio:</label>
        <select name="liste_de_choix_audio">
                <option id="deezer" value="deezer">Deezer</option>
                <option id="jiwa" value="jiwa">Jiwa</option>
                <option id="last.fm" value="last.fm">Last.fm</option>
        </select>
        <label for="google_images"><input type="radio" name="choix_de_recherche_2" id="google_images" value="google_images" />Google Images</label>
        <label for="video"><input type="radio" name="choix_de_recherche_2" id="video" value="video" />Video:</label>
        <select name="liste_de_choix_video">
                <option id="youtube" value="youtube">Youtube</option>
                <option id="dailymotion" value="dailymotion">Dailymotion</option>
                <option id="google_video" value="google_video">Google Video</option>
        </select>
    </div>
</form>
</body>
</html>
Mon code PHP (qui je sais est faux !) est:
<?php
if (!empty($_REQUEST['champ_de_recherche']))
{
    $url = array(
        'google_anglais'=>'http://www.google.com/#hl=en&q=__motscles__',
        'google_espagnol'=>'http://www.google.com/#hl=es&q=__motscles__',
        'google_allemand'=>'http://www.google.com/#hl=de&q=__motscles__',
        'google_francais'=>'http://www.google.com/#hl=fr&q=__motscles__',
        'bing'=>'http://www.bing.com/search?q=__motscles__',
        'wikipedia_anglais'=>'http://en.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_espagnol'=>'http://es.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_allemand'=>'http://de.wikipedia.org/wiki/Special:Search?search=__motscles__',
        'wikipedia_francais'=>'http://fr.wikipedia.org/wiki/Special:Search?search=__motscles__');
    header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_de_recherche'])),$url[trim($_REQUEST['choix_de_recherche_1'])]));
    die();
}
else if (!empty($_REQUEST['champ_media']))
{
    $url = array(
        'deezer'=>'http://www.deezer.com/music/result/all/__motscles__',
        'jiwa'=>'http://www.jiwa.fm/#search/track/{%22q%22%3A%22__motscles__%22}',
        'last.fm'=>'http://www.last.fm/music?q=__motscles__',
        'google_images'=>'http://images.google.com/images?&q=__motscles__',
        'youtube'=>'http://www.youtube.com/results?search_query=__motscles__',
        'dailymotion'=>'http://www.dailymotion.com/relevance/search/__motscles__',
        'google_video'=>'http://images.google.com/images?q=__motscles__');
    header('Location:'.str_replace('__motscles__',preg_replace('/(\ )+/', '+', trim($_REQUEST['champ_media'])),$url[trim($_REQUEST['choix_de_recherche_2'])]));
    die();
}

else
{
    // S'il n'y a pas de termes de recherche cela redirige vers la page de recherche
    header('Location:index.html');
    die();
}
?>
La version plus ancienne de mon code qui fonctionne correctement mais avec des boutons radios uniquement est disponible en test ici.

Je n'arrive pas à le faire avec la liste déroulante, si quelqu'un pouvait m'arranger mon code qu'il fonctionne ce serait génial.

Merci d'avance pour votre aide.