Initialisation de variables en PHP
15 messages
• Page 1 sur 1
-

sim100 - WRInaute passionné

- Messages: 1431
- Inscription: 2 Fév 2003
Initialisation de variables en PHP
J ai besoin d initialiser une liste de variables en PHP, mais seulement une fois!
Car si elles ne sont pas initialisees j ai une erreur.
Donc en fait en debut de programme j ai mis
$_GET['page']=""; $_GET['idmenu']=""; $_GET['id']="";
mais si je le laisse comme ca, je n ai plus d erreurs mais mes variables sont toujours vide.
J ai besoin qu elles soient initialisees qu une fois.
Une solution pour ca
Car si elles ne sont pas initialisees j ai une erreur.
Donc en fait en debut de programme j ai mis
$_GET['page']=""; $_GET['idmenu']=""; $_GET['id']="";
mais si je le laisse comme ca, je n ai plus d erreurs mais mes variables sont toujours vide.
J ai besoin qu elles soient initialisees qu une fois.
Une solution pour ca
-

scourtaud - WRInaute discret

- Messages: 242
- Inscription: 12 Aoû 2006
J'ai pas bien compris ce que tu voulais mais ca peut etre ceci :
if (!isset($_GET["xxxx"])) {
$_GET["xxxx"] = '';
}
Je te conseillerai plutot de faire :
if (!isset($_GET["xxxx"])) {
$xxxx = '';
} else {
$xxxx = $_GET["xxxx"];
}
Amicalement
Sebastien
if (!isset($_GET["xxxx"])) {
$_GET["xxxx"] = '';
}
Je te conseillerai plutot de faire :
if (!isset($_GET["xxxx"])) {
$xxxx = '';
} else {
$xxxx = $_GET["xxxx"];
}
Amicalement
Sebastien
-

reglysse - WRInaute discret

- Messages: 150
- Inscription: 19 Avr 2006
Moi aussi je fais toujours ça avec toutes mes variables passées en GET ou en POST et justement je me demande si il y a pas une autre façon de faire parce que c'est lourd.
Petite astuce (ou pas) :
On peut reduire le truc avec l'opérateur ternaire
au lieu de :
if (!isset($_GET["xxxx"])) {
$xxxx = '';
} else {
$xxxx = $_GET["xxxx"];
}
On peut faire :
$xxxx = (isset($_GET["xxxx"])) ? $_GET["xxxx"] : "";
Petite astuce (ou pas) :
On peut reduire le truc avec l'opérateur ternaire
au lieu de :
if (!isset($_GET["xxxx"])) {
$xxxx = '';
} else {
$xxxx = $_GET["xxxx"];
}
On peut faire :
$xxxx = (isset($_GET["xxxx"])) ? $_GET["xxxx"] : "";
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
e-kiwi a écrit:soit tu desactive tes erreurs de type "notice" en modificant error_reporting, soit tu fais toujours if (isset(...)) qui reste le plus propre
ce n'est pas la bonne solution.
s'il y a un warning ou une erreur, c'est que le code est mal employé.
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
e-kiwi a écrit:c'est la solution de rapidité, car les "notices" d'infuent pas sur le bon fonctionnement du site. ça laisse le temps de tout recoder proprement en local si le site doit être mis en ligne
on est d'accord.
le fait de préciser que ce n'est qu'une solution temporaire est important.
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
lol
@sureau
pas d'accord, si global est a on tu es en flagrand délit de php injection de variable
@e-kiwi
désolé aussi mais si tu fais ça sur un site de grosse frequentation les logs apache risquent de grossir violament (bien sur tu pourrais aussi régler le systeme de logging)
rog
pas d'accord, si global est a on tu es en flagrand délit de php injection de variable
@e-kiwi
désolé aussi mais si tu fais ça sur un site de grosse frequentation les logs apache risquent de grossir violament (bien sur tu pourrais aussi régler le systeme de logging)
rog
-

sureau - WRInaute discret

- Messages: 195
- Inscription: 7 Mar 2005
- Code: Tout sélectionner
@sureau
pas d'accord, si global est a on tu es en flagrand délit de php injection de variable
Comment ça?
Il définit ses variables autorisées avant.
Je ne vois pas en quoi ça peut être dangereux.
register_global a off, celà va de soit
-

rog - WRInaute passionné

- Messages: 1662
- Inscription: 21 Sep 2006
lol
content de voir que tu le prend bien,
dans un hebergement mutualisé tu n'as pas le controle de globals
pour la declaration :
$ListeVar = array('id','url', 'autre');
foreach($ListeVar as $val){
$_GET[$val] = (isset($_GET[$val])) ? $_GET[$val] : "";
}
http://site-vulnerable/page.php?ListeVar[inject]=variable_injectée
me semble plus que possible avec global a on
rog
dans un hebergement mutualisé tu n'as pas le controle de globals
pour la declaration :
$ListeVar = array('id','url', 'autre');
foreach($ListeVar as $val){
$_GET[$val] = (isset($_GET[$val])) ? $_GET[$val] : "";
}
http://site-vulnerable/page.php?ListeVar[inject]=variable_injectée
me semble plus que possible avec global a on
rog
-

sureau - WRInaute discret

- Messages: 195
- Inscription: 7 Mar 2005
- Code: Tout sélectionner
$ListeVar = array('id','url', 'autre');
foreach($ListeVar as $val){
$_GET[$val] = (isset($_GET[$val])) ? $_GET[$val] : "";
}
http://site-vulnerable/page.php?ListeVar[inject]=variable_injectée
Celà ne marcherait pas, car ListeVar est initalisée ( $ListeVar = array('id','url', 'autre'); ) donc meme si tu la passe par url, cette variable passée par url sera écrasée
- rafgug
- WRInaute discret

- Messages: 65
- Inscription: 13 Aoû 2006
Oui et non... Une notive d'une variable non initialisée c'est potentiellement un endroit où l'on peut injecter une valeur dans le script...e-kiwi a écrit:c'est la solution de rapidité, car les "notices" d'infuent pas sur le bon fonctionnement du site. ça laisse le temps de tout recoder proprement en local si le site doit être mis en ligne
En règle générale:
Serveur de développement:
error_reporting: E_ALL
Serveur prod:
error_reporting: E_ALL ~E_NOTICE
Mieux vaut développer convenablement qu'ignorer les erreurs...
@++
R@f
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
thierry8 a écrit:e-kiwi a écrit:soit tu desactive tes erreurs de type "notice" en modificant error_reporting, soit tu fais toujours if (isset(...)) qui reste le plus propre
ce n'est pas la bonne solution.
s'il y a un warning ou une erreur, c'est que le code est mal employé.
thierry8 a écrit:e-kiwi a écrit:c'est la solution de rapidité, car les "notices" d'infuent pas sur le bon fonctionnement du site. ça laisse le temps de tout recoder proprement en local si le site doit être mis en ligne
on est d'accord.
le fait de préciser que ce n'est qu'une solution temporaire est important.
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Comment passer des variables PHP dans un header PHP ?
- Mise à jour Php v4.0.X vers Php v4.2.X et Variables Globales
- Boucle PHP et variables
- Probleme de variables php
- variables dynamique en php
- [PHP] Variables de session
- Effacer des variables en php ?
- PHP, JavaScript + AJAX et variables
- Variables entre PHP et FLASH
- Variables Pré-définies PHP
- Le référencement de pages PHP - 04-08-2008
- API Google Analytics : segments avancés, objectifs, variables personnalisées - 15-12-2009
- Référencement : le problème des sessions des pages PHP - 04-08-2008
- Gérer ses paramètres de tracking dans Google Webmaster Tools - 16-09-2009
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

