Initialisation de variables en PHP

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


sim100
WRInaute accro
WRInaute accro
 
Messages: 1271
Inscription: Dim Fév 02, 2003 18:45

Initialisation de variables en PHP

Message le Mer Sep 13, 2006 11:34

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


scourtaud
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 242
Inscription: Sam Aoû 12, 2006 19:46

Message le Mer Sep 13, 2006 11:56

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


reglysse
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 148
Inscription: Mer Avr 19, 2006 16:51

Message le Mer Sep 13, 2006 15:38

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"] : "";


sim100
WRInaute accro
WRInaute accro
 
Messages: 1271
Inscription: Dim Fév 02, 2003 18:45

ok

Message le Mer Sep 13, 2006 15:43

OK, merci à vous deux :)


e-kiwi
Modérateur
Modérateur
 
Messages: 13817
Inscription: Mar Déc 23, 2003 9:04

Message le Mer Sep 13, 2006 15:45

soit tu desactive tes erreurs de type "notice" en modificant error_reporting, soit tu fais toujours if (isset(...)) qui reste le plus propre :)

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Mer Sep 13, 2006 15:58

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é.


e-kiwi
Modérateur
Modérateur
 
Messages: 13817
Inscription: Mar Déc 23, 2003 9:04

Message le Mer Sep 13, 2006 16:01

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

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Mer Sep 13, 2006 16:05

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.


sureau
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Lun Mar 07, 2005 15:25

Message le Mer Sep 13, 2006 16:35

Si tu en as beaucoup, tu peux faire une boucle :

$ListeVar = array('id','url', 'autre');

foreach($ListeVar as $val){
$_GET[$val] = (isset($_GET[$val])) ? $_GET[$val] : "";
}


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

lol

Message le Jeu Sep 21, 2006 9:08

@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


sureau
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Lun Mar 07, 2005 15:25

Message le Jeu Sep 21, 2006 9:15

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 accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

lol

Message le Jeu Sep 21, 2006 9:25

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


sureau
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Lun Mar 07, 2005 15:25

Message le Jeu Sep 21, 2006 9:38

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
WRInaute discret
 
Messages: 65
Inscription: Dim Aoû 13, 2006 13:15

Message le Jeu Sep 21, 2006 10:29

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
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...

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
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Sep 21, 2006 11:09

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.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités