Je n'étais pas encore capable de trouver un bon travail, alors j'ai pensé que je pourrais demander ici.PHP - comment se débarrasser de "Undefined index"
Mon error.log dit pour une bonne raison
[error] [client xxx.xxx.xxx.xxx] PHP Notice: Undefined index: Variablename
Jusqu'à présent, je me suis débarrassé de celui-ci avec l'aide d'une instruction if autour d'elle comme
if (isset($var)) {
if ($var ...) { ... }
}
Mais maintenant j'ai eu un problème de lil si Je ne peux pas utiliser ce "wrap-around" comme ci-dessus facilement. La fonction check_login (...) écrira $ _SESSION Variables comme ['loginattempts'] ou ['captchaattempts'] - maintenant je veux laisser le login disparaître si ces tentatives atteignent un montant spécifié. Comme
if ($_SESSION['loginatt'] < x && $_SESSION['capatt'] < x) { echo 'login form...';}
Si j'enveloppait un chèque si la variable est définie autour d'elle - la connexion ne semble pas si ces variables ne sont pas définies.
possibles travail-a-tours pourraient être
if (!isset($var)) {echo 'login form ...';}
else {echo 'login form...';}
mais cela voudrait dire que je devrais avoir un formulaire de connexion en double dans mon code je sais pourrait aussi simplement changer cet écho « formulaire de connexion ... 'dans un requice_once' inclut/loginform.php '- mais il y aura toujours une entrée en double pour cette commande require_once.
Je pourrais aussi définir un testvar de $ comme
if (isset($var)) {
if ($var > x) {
echo 'acc. blocked;
$testvar = 0;
}
else {
$testvar = 1;
}
if ($testvar < 1) {
echo 'login form...';
}
Alors y at-il d'autres moyens que ceux?
Si ce n'est pas le moyen que vous suggérez de prendre pour conserver le code comme il se doit pour une "bonne programmation"?
Toutes les déclarations sont les bienvenus, merci pour aider à
Kris
Merci - m'a donné une bonne impression - les expressions ternaires ici semblent assez sympa pour garder le code soigné. A propos de l'index de session: ce n'est pas exactement ce nom - j'ai juste pris un nom d'exemple pour garder le sujet plus clair :) – Kris
@Kris Je suis d'accord - les expressions ternaires sont soignées si vous avez beaucoup de variables à initialiser. Si nous devions jouer sur l'efficacité, le code de mon premier bloc écrirait toujours '0' à' $ login_attempts', alors que la variante ternaire prendrait directement la valeur correcte (à moins qu'elle ne soit optimisée de toute façon). De toute façon, je doute que ça vaille la peine de perdre le sommeil. Bonne chance pour votre projet! – ljacqu
Bien vrai - quelle que soit la solution que je pourrais prendre - il ne nuira pas à la performance d'une manière «réelle». C'est juste ce que je veux garder c'est aussi propre que possible et le garder aussi simple que possible si d'autres programmeurs doivent modifier mon code :) – Kris