comment recuperer cette variable

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 : comment recuperer cette variable

par Ajoloca » 12 janv. 2007, 17:18

Re,

Dans ce cas, une autre question. Quelle est la différence entre un code de "bidouilleur" et un code de pro ?

À toi de voir dans quelle catégorie tu veux te classer.

par abricot » 12 janv. 2007, 17:14

Le but est que lorsqu'erreur il y a un texte s'affiche à l'écran avant la redirection.
Je peu effectivement afficher l'erreur une fois redirigé mais j'avais la flème d'écrire d'autres erreurs alors j'ai fais comme ca :/

par Ajoloca » 12 janv. 2007, 17:10

Re,

Je ne comprends pas l'intérêt de faire attendre pour faire corriger une erreur ?

Peux-tu m'expliquer quel est le but de cette attente ?

par abricot » 12 janv. 2007, 17:06

ok je vois... j'ai vu que header sert principalement a renomer des fichiers, afficher des fichiers etc...
mais pour cette fonction que tu m'a cité, comment je fais pour qu'elle s'execute 3 seconde après? parce que la c'est instantané

par Ajoloca » 12 janv. 2007, 16:57

Re,
C'est pourtant pas compliqué du tout.

On va l'appliquer à ton cas.
Tu as cette ligne qui fait un echo pour faire appel à du html, etc, etc...
echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">'; 
En utilisant header(), ça te donnerait
header('Location: '.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2); 

par abricot » 12 janv. 2007, 16:50

Je capte rien à cette fonction, c'est super compliqué et super mal expliqué :shock:
et les exemples font que je vois vraiment pas l'interet de cette fonction

par Ajoloca » 12 janv. 2007, 16:31

Re,

Les raisons sont multiples, mais si tu est en PHP, pourquoi basculer en HTML pour faire la même chose?

Pour la doc tu n'as qu'à "cliquer sur le nom de la fonction et tu seras automatiquement redirigé vers la page du manuel de cette fonction.

par abricot » 12 janv. 2007, 16:26

euh, je connais pas cette fonction, je vais voir sur php.net, mais si les 2 fonctionnent pourquoi devrais je choisir celle ci?

par Ajoloca » 12 janv. 2007, 16:08

Re,

C'est bien ce que je pensait.
Dans ce cas, tu ne dois pas utiliser la balise HTML <meta> mais la fonction PHP header() avec Location.

par abricot » 12 janv. 2007, 15:59

Mais pourquoi mets-tu die() après ta balise meta ?
Je met die apres la balise meta car tout le script est sur une seule page, aucun include, aucune redirection vers d'autres page php pour verifier les donnés.. Donc je met die comme ca il tue le script au lieux d'executer d'autres script par dessus celui ci

AB : Pas mal ton bout de code, je n'y avais pas pensé, c'est clair que vu come ca c'est beaucoup plus clair

Ajoloca : en fait en cas d'erreur $var et $var2 doivent être redirectionnés vers la boucle corriger sans passer par un formulaire, car c'est une redirection automatique

par Ajoloca » 12 janv. 2007, 15:34

Re,

Dis-moi si ce que tu cherches à faire c'est,.
En cas d'erreur tu voudrais que le script se ré-exécute avec les valeurs $var et $var2 comme paramètres et 'corriger' comme action ?

C'est ça ?

par AB » 12 janv. 2007, 15:34

Salut abricot,
Quand tu utilises l'opérateur ternaire, tu risques d'avoir des soucis.
Nulle part tu testes si $_POST['var'] est définie. Et idem pour $_POST['var2'].
Donc si tu souhaites que ta variable $var prenne la valeur de $_GET['var'] si $_GET['var'] existe ou la valeur $_POST['var'] si $_GET['var'] n'existe pas, tu peux faire quelque chose comme :
$var = isset($_POST['var'])? $_POST['var'] : '' ;
$var = isset($_GET['var'])? $_GET['var'] : $var ;
Edit : le temps que je poste, ton code a changé, mais bon l'exemple reste valable

par Ultim4T0m » 12 janv. 2007, 15:29

Pour le rendre plus clair, indente le un peu mieux encore :
// si $_GET['form'] existe
if (isset($_GET['form'])){

     // si $_POST['var'] n'existe pas $var = rien si non $var prend la valeur de $_POST['var'] donc $var existe quoi qu'il arrive
     if ($_GET['form'] == "erreur1"){
          $var = isset($_POST['var']) ? $_POST['var'] : '';
          $var2 = isset($_POST['var2']) ? $_POST['var2'] : '';

          //je recupere les donnés de mes deux variables pour les utiliser dans ma boucle corriger
          echo '<meta http-equiv="refresh" content="3;url='.$_SERVER['PHP_SELF'].'?form=corriger&var='.$var.'&var2='.$var2.'">';
          die(); 
      }

     if ($_GET['form'] == "corriger"){
          //si $_GET['var'] et var 2 existe je donne leurs valeur a $var et $var2
          if (isset($_GET['var']) && isset($_GET['var2'])){
               $var = $_GET['var'];
               $var2 = $_GET['var2'];
          }
     }
} 
Mais pourquoi mets-tu die() après ta balise meta ?

par abricot » 12 janv. 2007, 15:24

Je n'ai pas encore testé ultim, pour l'instant j'ai éssayé que lepremier, et il marche tres bien!
par contre j'ai l'impression qu'en rajoutant des if partout ca complique beaucoup le code, lol!

par Ultim4T0m » 12 janv. 2007, 15:22

Bonjour,

Utilises plutôt la balise PHP que Code, on y voit bien plus clair ;)

Ca a l'air mieux, as-tu testé ?