OVH Cloud OVH Cloud

Declarartion variable PHP

3 réponses
Avatar
LF36
bonjour,

Je viens de passer à php 4.xxxx nécéssitant de déclarer les
variables dans les scripts. Mon problème est le suivant : la plupart
de mes scripts sont conçus comme suit :

if ($action = '')
{
traitement 1 + lien avec $action=etape2
}
elseif ($action = 'etape2')
{
etc etc
}

hors php m'indique maintenant : $action undefine variable....

j'ai essayé en début de script

$action = $_GET['action'];
ou
$action = $_POST['action'];

mais toujours un message d'erreur...
Que faire ?
(en plus j'ai un nombre important de script à modifier)

Merci d'avance
LF36

3 réponses

Avatar
clifden
LF36 wrote:
bonjour,

Je viens de passer à php 4.xxxx nécéssitant de déclarer les
variables dans les scripts. Mon problème est le suivant : la plupart
de mes scripts sont conçus comme suit :


Je ne pense pas que ce soit php V4 qui exige cela, c'est juste le niveau
d'affichage des erreurs qui est paramétré differement. En E_ALL, si tu
utilise une variable qui n'a pas été definie, tu te prends par exemple
un NOTICE.


if ($action = '')


J'espere que c'est une erreur, et que tu voulais dire " if ($action=='')
" ;-)

{
traitement 1 + lien avec $action=etape2
}
elseif ($action = 'etape2')
{
etc etc
}

hors php m'indique maintenant : $action undefine variable....

j'ai essayé en début de script

$action = $_GET['action'];
ou
$action = $_POST['action'];


Le mieux est de faire
$action=isset($_GET['action'])?$_GET['action']:"";

Ou alors de faire une fonction speciale pour cela, que tu utilise pour
recuperer les données venant de _GET, _POST, _REQUEST:

function www_get_param($name,$default,$var='GET') {
$var='_'.$var;
if (isset($$var[$name]))
return $$var[$name];
else
return $default;
}

ensuite pour affecter à id_truc la valeur de $_POST['id_truc'] (-1 si la
valeur n'a pas été envoyé), tu fais

$id_truc=www_get_param('id_truc',-1,"POST")*1;

C'est un mal necessaire pour avoir un code plus sécure, qui verifie un
minimum les variables envoyées par les internautes (dans l'exemple, je
forece en plus la valeur à un entier).


mais toujours un message d'erreur...
Que faire ?
(en plus j'ai un nombre important de script à modifier)


Et bien bon courage
(la solution de facilité est register_globals à ON, mais c'est "pas
bien" ;-) ).


Merci d'avance
LF36


2 rien.

Avatar
Steuf
bonjour,


Bonjour


Je viens de passer à php 4.xxxx nécéssitant de déclarer les
variables dans les scripts. Mon problème est le suivant : la plupart
de mes scripts sont conçus comme suit :

if ($action = '')


if (empty($action))

{
traitement 1 + lien avec $action=etape2
}
elseif ($action = 'etape2')
{
etc etc
}

hors php m'indique maintenant : $action undefine variable....


Parce que cette variable n'existe pas (register_globals à off je pense)


j'ai essayé en début de script

$action = $_GET['action'];
ou
$action = $_POST['action'];

mais toujours un message d'erreur...
Que faire ?


D'où vient le contenu de cette variable $action ?

(en plus j'ai un nombre important de script à modifier)


Ha bah ça...


Merci d'avance


De rien

LF36


Avatar
BLob
En fonction de ce que tu veux accetper comme 'action' :

if (array_key_exists('action', $_GET)) { $action urldecode($_GET['action']; // ou autre chose } else {$action = '' // ou
autre chose}

ou :
if (array_key_exists('action', $_POST)) { ... } else {$action = '' // ou
autre chose}

ou :
if (array_key_exists('action', $_REQUEST)) { ... } else {$action = '' // ou
autre chose}

BLob