erreur Undefinied index

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 : erreur Undefinied index

Re: erreur Undefinied index

par grisbi » 29 mars 2015, 11:27

MERCI Ryle de ta reponse

Donc si j'ai bien compris le mieux c'est de declarer toutes variables avant utilisation
mon code est celui d'un vieux script que j'utilise pour l'apprentissage du php
avec un projet d'amelioration de celui ci
ce script a surement eté fait à ''l'arrache'

a+

Re: erreur Undefinied index

par Ryle » 25 mars 2015, 11:45

Hello !

Le problème ce coup-ci ne vient pas du GET qui est correct. Tu testes effectivement la présence de la valeur dans les données reçues avant de l'utiliser. Le message d'avertissement est d'ailleurs différent, ce n'est pas l'index "url" dans le tableau $_GET qui n'est pas définie, c'est la variable $url. La ligne de l'erreur est importante, car elle va t'aider à situer le problème.

Ta variable $url est effectivement bien définie dans ton code, mais pas dans tous les cas. Si l'action est meta_send, alors tu exécutes le if() et tu récupères bien la valeur passée en paramètre si elle existe. Jusque la pas de problème. Mais si l'action est meta_pass, ce code n'est pas exécuté. PHP va aller directement dans le elseif(), dans lequel tu utilises la variable $url qui pour lui n'est pas définie (puisqu'il n'a pas exécuter le code du if() :)

La solution la plus simple est donc de déclarer ta variable un peu avant, afin que celle-ci soit disponible dans tous les cas, le if ou le elseif, ou autre... et en fonction des données passées en paramètres elle sera définie et égale à la donnée utilisateur spécifiée, ou juste définie et égale à chaine vide si aucune donnée n'est reçue :
$url = isset($_GET['url']) ? $_GET['url'] : '';

 if ( $_GET['action']=='meta_send' )
         {
            url_valide ( $url, true );            
            list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,true);
         }
         elseif ($_GET['action']=='meta_pass' )
         {
            list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,false);
         };

Re: erreur Undefinied index

par sirakawa » 25 mars 2015, 10:41

Ca vet dire que, avant, on n'a pas transmis cette valeur.
Comment aboutit-on à cette page?

Re: erreur Undefinied index

par grisbi » 24 mars 2015, 21:43

Oui en effet j'obtiens string(0) ""

mais alors je fais comment maintenant pour corriger cette erreur ?

merci

a+

Re: erreur Undefinied index

par sirakawa » 24 mars 2015, 16:59

cA DOIT DONNER
string(0) "" SI PAS D'URL
OU
string (nombre) et la chaine

Re: erreur Undefinied index

par grisbi » 24 mars 2015, 12:42

merci de ta reponse sirakawa

j'apprends php depuis quelques semaines seulement et je comprends pas ton code
j'ai essaye ce que tu proposes :
$url = isset($_GET['url']) ? $_GET['url'] : '';
var_dump($url) ; die();

et ça ne marche pas

merci encore

Re: erreur Undefinied index

par sirakawa » 24 mars 2015, 09:35

Dans tous les cas où une variable pose problème, il faut la faire afficher

1) $url = isset($_GET['url']) ? $_GET['url'] : '';
var_dump($url) ; die();
2) var_dump($_GET);
$url = isset($_GET['url']) ? $_GET['url'] : '';
var_dump($url) ; die();
L'erreur vient presque TOUJOURS d'avant le moment où elle est signalée, JAMAIS d'après

Re: erreur Undefinied index

par grisbi » 24 mars 2015, 02:06

Merci ryle

J'apprends le php depuis peu et j'ai un peu de mal a comprendre je l'avoue

par exemple une autre erreur code ci dessous : Undefinied url in...

Code : Tout sélectionner

else { $id_cat = isset($_GET['id_cat']) ? $_GET['id_cat'] : ''; if ( $_GET['action']=='meta_send' ) { $url = isset($_GET['url']) ? $_GET['url'] : ''; url_valide ( $url, true ); list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,true); } elseif ($_GET['action']=='meta_pass' ) { list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,false); };
pourtant '$url' est definie dans cette ligne :

Code : Tout sélectionner

$url = isset($_GET['url']) ? $_GET['url'] : '';


y a quelque chose que je n'ai pas bien compris


merci encore

a+

Re: erreur Undefinied index

par Ryle » 23 mars 2015, 14:36

Hello !

C'est tout simplement que dans les données reçues par la page via la méthode post, la variable "action" n'existe pas. PHP remonte donc un avertissement pour te dire que tu utilises une variable qui n'existe pas (ou plus exactement tu appelles un index inexistant du tableau $_POST).

Pour éviter cela, il faut t'assurer que la variable que tu veux comparer à la valeur "submit" a bien été transmise AVANT de la comparer :)

Le plus simple est d'ajouter un contrôle supplémentaire :
if ( isset($_GET['image']) || (isSet($_POST['action']) && $_POST['action'] == "submit") )
Le test est alors vrai si l'attribut "image" est passée en get dans l'url, OU que l'attribut action est passé en post ET que celui-ci est égal à "submit" ;)

erreur Undefinied index

par grisbi » 23 mars 2015, 11:37

Bonjour

j'ai cette erreur que j'aimerais resoudre :

Notice: Undefined index: action in.. pour cette ligne :

Code : Tout sélectionner

if ( isset($_GET['image']) || $_POST['action'] == "submit" )
im me semble que c'est ''submit'' qu n'est pas defini mais comment on fait ?

merci d'avance pour votre aide

a+