Question

J'ai Basiquement un tas de liens sur une page et je vais utiliser quelque chose comme ceci

<?PHP echo $SITE_PATH ?>

Beaucoup de fois sur la même page, mais il affichera un avis en PHP pour le faire.

Je sais que vous êtes censé utiliser des choses comme isset () mais que je vraiment besoin d'utiliser chaque fois que je l'appelle?

<?PHP echo $SITE_PATH ?>

--- EDIT: Si je passe à l'aide d'une variable définie, les avis semblent aller

Était-ce utile?

La solution

Deux solutions, ici:

  • utilisez uniquement des variables qui existent -. Qui est ce que vous devriez probablement faire
  • ou test si elles existent (avec isset) avant d'essayer de les utiliser.

Il n'y a pas magique ^^

Si votre application utilise de nombreuses variables, vous avez sans doute pas un problème, mis dans votre conception.


Dans un cas comme celui que vous avez présenté, pour une variable qui est utilisé beaucoup de fois, je vous assurer qu'il existe, et, sinon, réglez-le sur « », par exemple, au début de mon script.

Ce ne regarde pas vraiment super, mais ça va marcher -. Et, de cette façon, vous ne serez pas passer par votre application tout, tout rapiéçage

(Ou je pourrais aussi désactiver le niveau de E_NOTICE de error_reporting - Je n'aime pas cette idée, mais, parfois, il est vraiment la seule façon de traiter avec une base de code)

Autres conseils

Vous pouvez supress messages en utilisant @:

print @$site_path;

Vous pouvez aussi utiliser une opération ternaire pour obtenir une valeur par défaut:

print (isset($site_path)) ? $site_path : "default_path" ;

En fin de compte cependant, vous ne devriez pas utiliser des variables qui ne sont pas définies. Si vous êtes, vous devez repenser votre approche. Gérer ces informations à l'avance, de sorte que le reste de vos scripts peut fonctionner sans problème comme celui-ci.

Vous devriez vraiment vous assurer une variable est définie avant de l'utiliser (en particulier en écho à la page). Si la variable provient d'une source non sécurisée ($ _GET, $ _POST, base de données), vous devez faire un certain type de filtrage pour empêcher une violation de la sécurité (cross site scripting (XSS), la falsification de demande de cross site (CSRF), etc .. .) mais si vous sentez que tout est sûr et vous ne veulent tout simplement pas montrer des erreurs (par exemple dans la production) définir votre rapport d'erreurs à 0.

par exemple. error_reporting(0);

Vous pouvez le faire au niveau php.ini ou par page (jeu error_reporting(0); en haut de la page).

Sur une note de côté, quand la production vous ne voulez jamais pour afficher les erreurs. Connectez-vous leur place. Dans le développement que vous voulez voir toutes vos erreurs (E_STRICT).

Vous pouvez créer une fonction pour vérifier si la variable est définie et le retourner:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top