Question

Je connais assez bien PHP et je crée un site Web pour mon entreprise. J'utilise un code existant que j'ai obtenu mais que je n'arrive pas à faire fonctionner correctement - toute aide serait la bienvenue!

J'ai une variable, $ id , qui identifie le type de catégorie de produit à afficher sur la page. Je dois d’abord vérifier que la variable id a été définie et, dans le cas contraire, définir la variable sur la catégorie 0 par défaut.

Le code que j'ai est le suivant:

setdefault($id, 0);

function setdefault(&$var, $default="") 
{
   if (!isset($var)) 
   {
      $var = $default;
   }
}

Donc, avec l'adresse www.website.com/browse.php, je m'attendrais à ce que sa valeur par défaut soit $ id = 0; avec l'adresse www.website.com/browse.php?id=3, je m'attendrais à ce qu'il définisse $ id sur 3 et affiche les produits correspondants. Cependant, malgré le réglage de $ id, la valeur par défaut est toujours 0. Existe-t-il quelque chose de manifestement incorrect avec mon code?

Était-ce utile?

La solution

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

setdefault(

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

$id = array_key_exists('id', 

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

setdefault(

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

<*>

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>GET) ?

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

setdefault(

Vous vous attendez probablement à ce que PHP utilise les variables $ _POST et $ _GET en tant que variables globales. Auparavant, PHP était configuré de cette manière, mais les versions les plus récentes vous demandent de faire explicitement référence à ces variables.

Vous pouvez essayer ceci:

<*>

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>GET['id'] : 0;

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

ou même plus simplement (à l'aide de l'opérateur ternaire):

<*>

Autres conseils

Tout d’abord, s’il s’agit de PHP 5.X, je vous recommande vivement de ne pas transmettre de variables par référence à l’aide de & amp ;. Cela étant dit. l'appel de fonction isset sera toujours vrai avec la fonction. Mais vous recevrez un avertissement de variable non définie sur setdefault ($ id, 0);

Essayez plutôt ceci.

$id = isset($id) ? $id : 0;

Si $ id n'est pas défini, l'appel à setdefault ($ id, 0) générera un avertissement. Une fonction comme setdefault ne fonctionne pas en PHP. Utilisez ceci à la place.

if (!isset($id)) $id = 0;

Si vous faites cela pour des variables de tableau, telles que $ _GET et $ _POST, vous pouvez le faire:

function getuservar($A, $index, $default = '') {
    if (!isset($A[$index])) return $default;
    if (get_magic_quote_gpc()) return stripslashes($A[$index]);
    return $A[$index];
}

$clean_id = getuservar(

Si $ id n'est pas défini, l'appel à setdefault ($ id, 0) générera un avertissement. Une fonction comme setdefault ne fonctionne pas en PHP. Utilisez ceci à la place.

if (!isset($id)) $id = 0;

Si vous faites cela pour des variables de tableau, telles que $ _GET et $ _POST, vous pouvez le faire:

<*>

Ce formulaire de retour est préférable car vous cessez immédiatement d'utiliser le tableau $ _GET et utilisez uniquement les variables nettoyées dans le reste du code. Vous nettoyez vos variables externes une fois et ne les touchez plus jamais dans votre code. $ A peut être $ _GET, $ _POST, $ _REQUEST ou $ _COOKIE.

Il gère également les trucs ennuyeux de magic_quote pour que vous sachiez que les données de la variable sont le texte envoyé par l'utilisateur. Rappelez-vous simplement de le nettoyer à nouveau lors du renvoi à l'utilisateur ou à la base de données.

GET, 'id', 0);

Ce formulaire de retour est préférable car vous cessez immédiatement d'utiliser le tableau $ _GET et utilisez uniquement les variables nettoyées dans le reste du code. Vous nettoyez vos variables externes une fois et ne les touchez plus jamais dans votre code. $ A peut être $ _GET, $ _POST, $ _REQUEST ou $ _COOKIE.

Il gère également les trucs ennuyeux de magic_quote pour que vous sachiez que les données de la variable sont le texte envoyé par l'utilisateur. Rappelez-vous simplement de le nettoyer à nouveau lors du renvoi à l'utilisateur ou à la base de données.

Comment $ id est-il défini? Si register_globals est désactivé (et il est désactivé par défaut dans PHP 4.2 et versions ultérieures), vous devez examiner $ _GET ['id'] ou $ _POST [ 'id'] à la place (ou $ _ REQUEST ['id'] , mais vous pouvez éviter cela).

Le code permettant de définir $ id sur la chaîne de requête ( browse.php? id = 3 ) doit également être inclus. Vous pensez peut-être aux paramètres register_globals de PHP qui créeront automatiquement des variables lorsqu’ils sont inclus dans la chaîne de requête. NE réactivez PAS cette fonctionnalité. Depuis plusieurs années, cette idée s’est révélée être une très mauvaise idée.

Toute variable que vous extrayez de la chaîne de requête doit être vérifiée pour le type / safety avant de l’utiliser. Ainsi, par exemple, vous pouvez extraire la variable du super global $ _ GET . Vérifiez si elle est numérique. Si ce n'est pas le cas, définissez la valeur par défaut:

if (!is_numeric(

Le code permettant de définir $ id sur la chaîne de requête ( browse.php? id = 3 ) doit également être inclus. Vous pensez peut-être aux paramètres register_globals de PHP qui créeront automatiquement des variables lorsqu’ils sont inclus dans la chaîne de requête. NE réactivez PAS cette fonctionnalité. Depuis plusieurs années, cette idée s’est révélée être une très mauvaise idée.

Toute variable que vous extrayez de la chaîne de requête doit être vérifiée pour le type / safety avant de l’utiliser. Ainsi, par exemple, vous pouvez extraire la variable du super global $ _ GET . Vérifiez si elle est numérique. Si ce n'est pas le cas, définissez la valeur par défaut:

<*>GET['id']) { setdefault(

Le code permettant de définir $ id sur la chaîne de requête ( browse.php? id = 3 ) doit également être inclus. Vous pensez peut-être aux paramètres register_globals de PHP qui créeront automatiquement des variables lorsqu’ils sont inclus dans la chaîne de requête. NE réactivez PAS cette fonctionnalité. Depuis plusieurs années, cette idée s’est révélée être une très mauvaise idée.

Toute variable que vous extrayez de la chaîne de requête doit être vérifiée pour le type / safety avant de l’utiliser. Ainsi, par exemple, vous pouvez extraire la variable du super global $ _ GET . Vérifiez si elle est numérique. Si ce n'est pas le cas, définissez la valeur par défaut:

<*>GET['id'], 0); }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top