[PHP] Probleme avec $_GET....

Probleme avec $_GET.... [PHP] - PHP - Programmation

Marsh Posté le 11-01-2004 à 16:21:59    

Hello,
 
Je vient enfin d'installer easyphp1.7, et j'ai un probleme qui est apparue :
quand dans un script je recupere la valeur $_GET['variable'] (meme chose avec $POST etc...), et que celle-ci n'existe pas il me sort une erreur.
Bon ok, ca parait normal, mais c'est très genant pour mes scripts :/
Sur mon serveur qui a la meme version php (4.33) je n'ai pas ce probleme. Comment je fait pour configurer chez moi ?

Reply

Marsh Posté le 11-01-2004 à 16:21:59   

Reply

Marsh Posté le 11-01-2004 à 16:23:23    

Il faut désactiver E_NOTICE comme expliqué dans ce guide :
http://forum.hardware.fr/forum2.ph [...] 943&cat=10
qui explique aussi comment pouvoir se passer d'Easyphp pour être maître de ce qu'on fait :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 16:38:39    

j'était sur que qq'un allait me dire d'abandonner easyphp :D , ok ok je vais le faire des que j'ai un peut de temps
 
Bon alors j'ai fait comme expliqué, mais l'erreur s'affiche quand meme :
 

Citation :


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings
; E_ERROR           - fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Examples:
;
;   - Show all errors, except for notices
;
; error_reporting = E_ALL & ~E_NOTICE
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors
;
error_reporting  =  E_ALL
 
; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below).  Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = On

Reply

Marsh Posté le 11-01-2004 à 16:51:13    

heu là t'as laissé le "error_reporting  =  E_ALL" , faut rajouter le truc avec notice comme indiqué dans l'exemple


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-01-2004 à 18:04:48    

Il faut plutôt vérifier que le paramètre existe :
if (isset($_GET['variable'])) {
    $pVariable = $_GET['variable'];
} else {
    $pVariable = valeur_par_defaut;
}

Reply

Marsh Posté le 12-01-2004 à 13:58:00    

finalement j'ai installé tout sans easyphp, et c'est bon  :)  
 
mrbebert -> Bon maintenant j'ai plus vraiment besoins de ca vu que chez moi et chez mon hébergeur il ne fait pas d'erreur dans ce cas, mais je voudrais savoir si ce que tu dit fonctionne vraiment.
Avant de poster ici, il me semble que j'avais testé la meme chose, mais il mettait la meme erreur, comme si le seul fait qu'il y ai un $_GET['variable'] dans le script pose probleme  :??:

Reply

Marsh Posté le 12-01-2004 à 14:12:44    

Je ferais comme mrbebert.
 
La philosophie "on m'affiche des alertes (notices), pour corriger je supprime l'affichage des alertes" est un poil légère.
 
J'avais un script foireux où l'accumulation de notices provoquait un temps de chargement de page infini, sans qu'aucune erreur apparaisse.
 
-> Mieux vaut coder proprement et le vérifier avec affichage des alertes en local, tant qu'à faire !

Reply

Marsh Posté le 12-01-2004 à 14:17:21    

c'est vrais, mais jusqu'à maintenant je savais pas que ca provoquait une erreur  [:airforceone]  
bon alors j'utiliserait ce controle comme l'a ecrit mrbebert, si qq'un me confirme que ca enleve vraiment cette erreur, parce comme j'ai ecrit plus haut il me semblait que le probleme venait du simple fait que $_GET['variable'] soit ecrit dans la page :/

Reply

Marsh Posté le 12-01-2004 à 14:22:26    

Non, c'est juste que si dans ta page tu fais référence à une variable qui n'existe pas et que tu n'as pas fait de test pour vérifier cela, tu auras droit à une alerte.
 
->bebert's solution corrigera la chose, confirmation, je répète, confirmation.

Reply

Marsh Posté le 12-01-2004 à 14:24:10    

:D  
ok merci la c'est clair !  :D  
au fait ca devait etre impressionnant ce truc :

Citation :

J'avais un script foireux où l'accumulation de notices provoquait un temps de chargement de page infini, sans qu'aucune erreur apparaisse.


t'a fait comment ???

Reply

Marsh Posté le 12-01-2004 à 14:24:10   

Reply

Marsh Posté le 12-01-2004 à 14:30:37    

Big-Foot a écrit :

:D  
ok merci la c'est clair !  :D  
au fait ca devait etre impressionnant ce truc :

Citation :

J'avais un script foireux où l'accumulation de notices provoquait un temps de chargement de page infini, sans qu'aucune erreur apparaisse.


t'a fait comment ???


 
Ben c'était un con de formulaire avec bon nombre de champs...
 
J'avais simplement des
<input type=... value="<?=$_POST['machin']?>" />
 
J'essayais de couper des bouts du form pour voir d'où venait l'erreur, et à chaque fois que j'avais plus de 11 champs tout partait en couille (affichage de 3 champs et chargement infini)...
 
Rien de terrible dans le fonds, mais j'avais mis du temps à piger ma bêtise !
 
EDIT : vi c'était même pas un script foireux, en fait, bien plus con !


Message édité par deliriumtremens le 12-01-2004 à 14:31:15
Reply

Marsh Posté le 12-01-2004 à 14:32:10    

ah ok donc c'est vraiment utile d'utiliser ce controle :jap:

Reply

Marsh Posté le 12-01-2004 à 18:17:43    

encore une petite question :
 
si au lieu d'avoir :

Code :
  1. if (isset($_GET['variable'])) {
  2.    $pVariable = $_GET['variable'];
  3. } else {
  4.    $pVariable = valeur_par_defaut;
  5. }


 
j'ai :

Code :
  1. $variable = $_GET['variable'];
  2. if (empty($variable)) {
  3.    $pVariable = $variable;
  4. } else {
  5.    $pVariable = valeur_par_defaut;
  6. }


Est ce que ca change quelque chose ? est ce que le fait que je donne une valeur qui peut ne pas exister à $variable pose probleme ??

Reply

Marsh Posté le 12-01-2004 à 18:46:48    

Big-Foot a écrit :

encore une petite question :
 
si au lieu d'avoir :

Code :
  1. if (isset($_GET['variable'])) {
  2.    $pVariable = $_GET['variable'];
  3. } else {
  4.    $pVariable = valeur_par_defaut;
  5. }


 
j'ai :

Code :
  1. $variable = $_GET['variable'];
  2. if (empty($variable)) {
  3.    $pVariable = $variable;
  4. } else {
  5.    $pVariable = valeur_par_defaut;
  6. }


Est ce que ca change quelque chose ? est ce que le fait que je donne une valeur qui peut ne pas exister à $variable pose probleme ??


 
ben tu auras les mêmes messages d'erreur (en fin plutôt de warning) car tu affectes à $variable une variable inexistante ($_GET['variable']).
 
Utilises la méthode de mrBebert

Reply

Marsh Posté le 12-01-2004 à 18:50:16    

le premier teste si la variable existe
le tien teste si la variable contient une chaîne vide, mais ne vérifie pas si elle existe ou non


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-01-2004 à 19:04:14    

hum ok, donc ca me ferait l'erreur :/
ce qui me derrange c'est le fait de devoir betement recuperer $variable une seconde fois

Reply

Marsh Posté le 12-01-2004 à 19:06:03    

:??: je vois pas trop le problème


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-01-2004 à 19:08:53    

question de style du code  [:aloy]  
 :whistle:  
mais je pense que je peut m'en passer

Reply

Marsh Posté le 12-01-2004 à 19:09:55    

la 1e solution donne une ligne de moins, et je vois pas trop ce que ça change au style [:mlc]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-01-2004 à 19:14:01    

ben si je definie une variable $variable = $_GET['variable'];
celle-ci est stocké en memoire non ? php ne va donc pas tenter a chaque fois de recuperer $_GET['variable']. Enfin c'est ce qu'il me semble

Reply

Marsh Posté le 12-01-2004 à 19:16:17    

ouais enfin je vois pas l'intérêt par rapport à l'autre solution :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-01-2004 à 19:22:15    

imaginons que je veux recuperer $_GET['variable'] 10 fois dans le script, dans ce cas avec un $variable = $_GET['variable']; définie avant le isset au lieu d'apres, je gagne un $_GET['variable'];
bon ok c'est pas grand chose  :sweat:

Reply

Marsh Posté le 12-01-2004 à 19:57:19    

tu fais une fois le isset pour initialiser variable soit avec le get soit avec la valeur par defaut, je vois pas le problème :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 13-01-2004 à 11:08:30    

Big-Foot a écrit :

c'est vrais, mais jusqu'à maintenant je savais pas que ca provoquait une erreur  [:airforceone]  
bon alors j'utiliserait ce controle comme l'a ecrit mrbebert, si qq'un me confirme que ca enleve vraiment cette erreur, parce comme j'ai ecrit plus haut il me semblait que le probleme venait du simple fait que $_GET['variable'] soit ecrit dans la page :/

oui, ca marche bien :)  
L'avertissement apparait quand tu utilise (que tu lis la valeur) une variable qui n'existe pas. Mais "isset" ne lit pas la valeur, il se contente de vérifier que la variable existe.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed