Redirigé sur la page en cours si le formulaire est vide

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 : Redirigé sur la page en cours si le formulaire est vide

Re: Redirigé sur la page en cours si le formulaire est vide

par Ryle » 01 juil. 2016, 15:41

Ben "Rediriger sur la page en cours" ... y a pas besoin de rediriger l'utilisateur sur la page en cours... y a juste besoin d'afficher la page en cours puisque l'utilisateur est déjà en train de la consulter :)

Ton besoin c'est de rediriger l'utilisateur vers une autre page, uniquement si la page demandée existe. Ton code est donc bon, il faut juste compléter le if(isset($_POST['ville'])) par un test vérifiant que $_POST['ville'] est bien un id ville valide et le tour est joué :)

Au pire tu peux aussi le gérer via le htaccess pour vérifier si la page demandée au serveur existe, et pour le coup rediriger l'utilisateur vers une autre page (pas 404 donc, mais éventuellement celle d'où il vient) quand la page demandée n'existe pas. Mais c'est à mon sens plus complexe que de vérifier si un id existe :)

Re: Redirigé sur la page en cours si le formulaire est vide

par moogli » 01 juil. 2016, 15:39

salut,

tu finis simplement la validation du formulaire avec un beau message d'erreur indiquant que celui-ci n'est pas valide.
du genre : Vous devez sélectionner une ville.

sinon pour ton exemple de code
if(empty($_POST['ville'])) { redirection vers la page )
parce que la ça redirige que si l'index ville existe dans le formulaire et tu ne sais pas si région existe.


@+

Re: Redirigé sur la page en cours si le formulaire est vide

par yoann38 » 01 juil. 2016, 15:21

C'est à dire ?
Il suffit de la laisser s'exécuter sans redirection;

Le soucis c'est que le crawl voit la 404 donc je souhaite le redirigé si on soumet le formulaire vide alors on redirige sur la page en cours...

Re: Redirigé sur la page en cours si le formulaire est vide

par Ryle » 01 juil. 2016, 15:17

Bonjour,

Tu peux soit retrouver l'url de la page sur laquelle tu te trouve avec $_SERVER['PHP_SELF'].

Ou tu peux, encore plus simplement, ne pas rediriger l'utilisateur, puisqu'il appel déjà la page sur laquelle il est. Il suffit de la laisser s'exécuter sans redirection :)

Re: Redirigé sur la page en cours si le formulaire est vide

par yoann38 » 01 juil. 2016, 14:57

Oui c'est exactement ça, le crawl définit cette page comme une erreur 404.

Je souhaite parcontre le redirigé sur la page sur laquelle il se trouve :(

Re: Redirigé sur la page en cours si le formulaire est vide

par @rthur » 01 juil. 2016, 14:52

Bonjour,

Si je comprends bien, le problème c'est que lorsque le robot soumet le formulaire sans avoir sélectionné une ville ça fait une 404, c'est ça ?

Si c'est le cas, la meilleure façon de faire à mon avis serait que tu testes le nom de ville rentré et que si il ne correspond pas à une ville que tu gères (ou que c'est vide, ce qui revient au même), alors tu affiche la liste complète des villes gérées, ainsi les bot d'indexation pourront accéder (et indexer) à toutes tes pages

Redirigé sur la page en cours si le formulaire est vide

par yoann38 » 01 juil. 2016, 14:31

Salut à tous.
J'ai un formulaire qui permet de renvoyer sur la page une fois la ville renseignée, le hic c'est que pour le robot ( crawl ) quand c'est vide, ça fait une 404. Donc pas terrible quoi ?
<form id="choice" method="POST" action="">
    <div class="input-group">
    <input title="Recherche par ville" placeholder="Recherche par ville" class="search-motor form-control"  value="<?php echo  !empty($_REQUEST['ville']) ? $_REQUEST['ville'] : NULL;?>" name="ville" id="ville" type="search">
    <span class="input-group-btn">
    <button type="submit" class="btn btn-default search-btn">GO !</button>
    </span>
    </div>
    </form>
Et donc l'idée et de faire en sorte que si on post est que c'est vide on renvoie sur la page en cours avec :
$monUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
Pour l'instant j'ai tester ca:
if(isset($_POST['ville'])) {
        header('Location: /sortie/region-'.$_REQUEST['region'].'/ville-de-'.simplification($_POST['ville']).'.html');
		exit;
    }
Merci à vous