Maison > Questions et réponses > le corps du texte
P粉6449810292023-08-24 11:13:56
Essayez-les
// recommended solution for recent PHP versions $user_name = $_SESSION['user_name'] ?? ''; // pre-7 PHP versions $user_name = ''; if (!empty($_SESSION['user_name'])) { $user_name = $_SESSION['user_name']; }
Ou, comme solution rapide et sale :
// not the best solution, but works // in your php setting use, it helps hiding site wide notices error_reporting(E_ALL ^ E_NOTICE);
Remarques sur les séances :
Lorsque vous utilisez des sessions, vous devez placer session_start();
dans tous les fichiers qui utilisent des sessions.
P粉7879344762023-08-24 10:41:30
Ce message d'erreur est destiné à aider les programmeurs PHP à trouver des fautes de frappe ou des erreurs lors de l'accès à une variable (ou un élément de tableau) qui n'existe pas. Alors un bon programmeur :
Bien que PHP ne nécessite pas de déclaration de variable, il le recommande pour éviter certaines failles de sécurité ou bugs où les gens oublient d'attribuer une valeur à une variable qui est utilisée plus tard dans le script. PHP émet une erreur de niveau E_WARNING
lorsqu'une variable n'est pas déclarée.
Cet avertissement aide les programmeurs à repérer les noms de variables mal orthographiés ou des types d'erreurs similaires (comme l'attribution d'une valeur à une variable dans une condition qui est évaluée à false ). De plus, d'autres problèmes peuvent survenir avec les variables non initialisées. Comme indiqué dans le manuel PHP ,
Cela signifie qu'une variable peut obtenir une valeur à partir d'un fichier inclus, et cette valeur sera utilisée à la place du null
attendu pour accéder à une variable non initialisée, ce qui peut conduire à des résultats imprévisibles. Pour éviter cela, il est préférable d'initialiser toutes les variables des fichiers PHP avant utilisation.
Méthodes pour gérer les problèmes :
Recommandation : Déclarez chaque variable avant de l'utiliser. De cette façon, vous ne verrez cette erreur que si vous faites l'erreur d'essayer d'utiliser une variable qui n'existe pas - c'est exactement pourquoi ce message d'erreur existe.
//Initializing a variable $value = ""; //Initialization value; 0 for int, [] for array, etc. echo $value; // no error echo $vaule; // an error pinpoints a misspelled variable name
Cas particulier où la variable est définie mais non visible dans la fonction. Les fonctions en PHP ont leur propre portée de variable, si vous devez utiliser une variable externe dans une fonction, sa valeur doit être passée en paramètre de la fonction :
function test($param) { return $param + 1; } $var = 0; echo test($var); // now $var's value is accessible inside through $param
Supprimez les erreurs à l’aide de l’opérateur de coalescence nul. Mais rappelez-vous, de cette façon, PHP ne pourra pas vous avertir que vous avez utilisé un mauvais nom de variable.
// Null coalescing operator echo $value ?? '';
Pour les anciennes versions de PHP (<7.0), vous pouvez utiliser isset() avec ternaire< 7.0),可以使用带有三元的 isset()
echo isset($value) ? $value : '';
Veuillez noter qu'il s'agit toujours essentiellement d'une suppression d'erreur, mais uniquement pour une erreur spécifique. Par conséquent, cela peut empêcher PHP de vous aider en marquant des variables uniformes.
Utilisez le @operator pour supprimer les erreurs. Partir d'ici pour des raisons historiques, mais sérieusement, cela ne devrait pas arriver.
Remarque : Fortement recommandé de mettre en œuvre uniquement le point 1.
Cet avis/avertissement se produit lorsque vous (ou PHP) essayez d'accéder à un index non défini d'un tableau.
L'attitude doit être exactement la même lorsqu'il s'agit de tableaux internes définis dans le code : il suffit d'initialiser toutes les clés avant utilisation. De cette façon, le bug fera son travail prévu : informer les programmeurs des erreurs dans leur code. La méthode est donc la même :
Recommandé : Déclarez les éléments de votre tableau :
//Initializing a variable $array['value'] = ""; //Initialization value; 0 for int, [] for array, etc. echo $array['value']; // no error echo $array['vaule']; // an error indicates a misspelled key
Un cas particulier est lorsque certaines fonctions renvoient des tableaux ou d'autres valeurs (par exemple null
或 false
). Ensuite, vous devez effectuer un test avant de tenter d'accéder aux éléments du tableau, comme
$row = $stmt->fetch(); if ($row) { // the record was found and can be worked with echo $row['name']; }
Pour les tableaux externes (tels que $_POST
/ $_GET
/ $_SESSION
ou entrée JSON), la situation est un peu différente, car le programmeur n'a aucun contrôle sur le contenu de ces tableaux. Il est donc raisonnable de vérifier si certaines clés existent ou même d’attribuer des valeurs par défaut aux clés manquantes.
Lorsqu'un script PHP contient un formulaire HTML, il est naturel qu'il n'y ait aucun contenu de formulaire lors de son premier chargement. Un tel script devrait donc vérifier si le formulaire a été soumis
// for POST forms check the request method if ($_SERVER['REQUEST_METHOD'] === 'POST') { // process the form } // for GET forms / links check the important field if (isset($_GET['search'])) { // process the form }
Certains éléments de formulaire HTML (tels que les cases à cocher) ne seront pas envoyés au serveur s'ils ne sont pas cochés. Dans ce cas, il y a une raison d'utiliser l'opérateur de coalescence nul pour attribuer une valeur par défaut
$agreed = $_POST['terms'] ?? false;
Les éléments facultatifs QUERY STRING ou les cookies doivent être traités de la même manière
$limit = $_GET['limit'] ?? 20; $theme = $_COOKIE['theme'] ?? 'light';
Mais le devoir doit être fait au tout début du script. Validez toutes les entrées, attribuez-les à des variables locales et utilisez-les dans tout votre code. Par conséquent, chaque variable à laquelle vous accédez existera volontairement.
Connexe :