Redirection avec location header

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 : Redirection avec location header

Re: Redirection avec location header

par Ryle » 12 mai 2016, 17:38

Bonjour,

Effectivement, le else vide ne sert à rien, et comme ça n'est pas un opérateur obligatoire, tu peux simplement le dégager :)
<?php   
    if(isset($_POST['ville']))
    {
        header('Location: /digital/sortie/'.$_REQUEST['region'].'/'.$_POST['ville'].'.html');
    }
?>
Tu peux également ajouter un " exit(); " après le header(), il n'est pas utile ici mais c'est une bonne habitude à prendre. En effet, php continue d'exécuter le code après avoir lu le header() et ce n'est qu'une fois la fin du script atteint que le header sera exécuté. Cela peut parfois avoir des comportements surprenant. Avec un exit(), tu dis à php d'arrêter l'exécution juste après le header() et php redirige l'utilisateur immédiatement sans aller plus loin dans le code...

Re: Redirection avec location header

par yoann38 » 09 mai 2016, 17:28

Bon les puristes vont surement pas aimer mais ca marche:
Que puis je faire pour que ca soit optimal, surtout le else vide comme ca jaime pas ...
Merci encore
<form id="choice" method="POST" action="">
    
        <div class="col-md-10 col-sm-10 max">
        <input title="Recherche par ville" placeholder="Recherche par ville" class="form-control" placeholder="Recherche par ville" value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
        </div>   
                        
        <div class="col-md-2 col-sm-2 max">
        <button type="submit"  class="find" value="Rechercher"><i class="fa fa-search" aria-hidden="true"></i></button>
        </div>   
        </form>



<?php   

    if(isset($_POST['ville']))
    {
        header('Location: /digital/sortie/'.$_REQUEST['region'].'/'.$_POST['ville'].'.html');
    }
    
    else  {
     '';
    }	

?>

Re: Redirection avec location header

par yoann38 » 09 mai 2016, 07:19

J'ai essayer ceci alors vous allez me dire c'est du pareil au même mais je ne vois pas comment faire
Si il n y a pas de ville renseignée on est bien redirigé correctement sinon si il y a une ville ca créer l'adresse url mais avec 2 fois la région:
<form id="choice" method="POST" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    
        <div class="col-md-10 col-sm-10 max">
        <input title="Recherche par ville" placeholder="Recherche par ville" class="form-control" placeholder="Recherche par ville" value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
        </div>   
                        
        <div class="col-md-2 col-sm-2 max">
        <button type="submit"  class="find" value="Rechercher"><i class="fa fa-search" aria-hidden="true"></i></button>
        </div>   
        </form>

<?php    
    
    if(isset($_POST['ville']))
    {
		// Si il n y a pas de ville de renseigné ca renvoi bien par exemple
		// http://127.0.0.1/digital/actu/rhone-alpes/lyon.html
		if(!empty($_REQUEST['ville'])) {
        header('Location: '.$_REQUEST['region'].'/'.$_POST['ville'].'.html');
		}
		
		// on dirait que le else est ignoré car ca renvoi l'url du type 
		// http://127.0.0.1/digital/actu/rhone-alpes/rhone-alpes/lyon.html
		}else{
        header('Location: /'.$_POST['ville'].'.html');
		
    }
	
	echo 'nom de la ville : <strong>'. $_GET['ville'].'</strong>';
	

?>

Re: Redirection avec location header

par or 1 » 08 mai 2016, 21:30

if(isset($_POST['ville']))
{
if(!empty($_REQUEST['ville'])) {
$_POST['ville'] et $_REQUEST['ville'], c'est la même chose dans une page appelée en méthode post, donc le second test retournera toujours la même chose.

Redirection avec location header

par yoann38 » 08 mai 2016, 19:40

Salut à tous.
Je me retourne vers vous mon problème sur mon formulaire.

Si il y a aucune ville de posté on redirigé vers region suivi de ville que l'utilisateur vient de saisir et si il y a déjà une ville de renseignée alors on redirigé également vers region + ville.

Si il n y a pas de ville de renseignée ca me créer le bon lien mais si une ville est déjà renseignée ca redirige vers region + region + ville, en gros ya 2 fois région pourquoi ?
<?php    
    // Check données
    if(isset($_POST['ville']))
    {
		if(!empty($_REQUEST['ville'])) {
        header('Location: '.$_REQUEST['region'].'/'.$_POST['ville'].'.html');
		}else{
        header('Location: '.$_POST['ville'].'.html');
		}
    }
	
	echo 'nom de la ville : <strong>'. $_REQUEST['ville'].'</strong>';
?>
le formulaire:
<form id="choice" method="POST" action="<?php echo  !empty($_POST['ville']) ? '/'.$_REQUEST['ville'] : NULL;?>">
    
        <div class="col-md-10 col-sm-10 max">
        <input title="Recherche par ville" placeholder="Recherche par ville" class="form-control" placeholder="Recherche par ville" value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
        </div>   
                        
        <div class="col-md-2 col-sm-2 max">
        <button type="submit"  class="find" value="Rechercher"><i class="fa fa-search" aria-hidden="true"></i></button>
        </div>   
        </form
Merci à vous