Тази грешка как може да се премахне?

plamen_003

Registered
Ето грешката:
Notice: Undefined index: log_key in C:\xampp\htdocs\proekt\index.php on line 10

Ето и двете страници:

index.php
PHP:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        if($_SESSION['log_key']==true)
        {
            echo "---------";
            echo '<a href="logout.php">(X)</a>';
        }
        else
        {
        ?>    
            <form method="post" action="log.php">
                Потребител:<input type="text" name="login"><br>
                Парола:<input type="password" name="pass"><br>
                <input type="submit" value="Влез">
            </form>
        
        <?php    
        }
        ?>
    </body>
</html>

и log.php

PHP:
<?php session_start(); ?>
<?php
if($_POST['login']==potrebitel && $_POST['pass']==123456)
{
    $_SESSION['log_key']=true;
    header('Location: index.php');
}
?>

До колкото разбирам грешката се появява,защото масивът $_SESSION['log_key'] никъде преди да бъде използван не е зададен(index.php).Aз съм го задал в log.php.И всъщност как мога да премахна тази грешка?
 
primecode каза:
Замени

PHP:
if($_SESSION['log_key']==true)

със

PHP:
if ( isset($_SESSION['log_key']) && $_SESSION['log_key'] === true )

Така става.А можеш ли да ми обясниш,защо трябва да бъде така?
 
Виж документацията за isset тук.

Когато ползваш isset проверяваш за съществуването на дадената променлива/масив. Ако тя не е зададена,то при проверката за стойността ще ти даде грешка защото просто няма такава. То е като да направиш

PHP:
echo $string;

а самата променлива $string не съществува.
 
И аз имах същият проблем и го реших със " @ " като замаскирам грешката.Явно имало по интелигентен начин.Мерси.
 

Back
Горе