Undefined index - nie wiem gdzie?

0

Witam. Ma mtaki kod:

    <?php
     
    if ($_GET['weryfikacja'] == 'potwierdz') {
        include 'db.php'; // połączenie się z bazą danych
        $tabela = 'uzytkownik'; // zdefiniowanie tabeli MySQL
        $kod = (htmlspecialchars(stripslashes(strip_tags(trim($_GET['kod']))), ENT_QUOTES)); // filtrowanie $_GET['kod']
        $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod' and status=1");
        if (mysql_num_rows($wynik) == 1) {
            echo '<p>Aktywowałeś już swoje konto.</p';
            exit;
        } else {
            $wynik = mysql_query("DELETE FROM $tabela WHERE data<=DATE_SUB(NOW(),INTERVAL 2 DAY) and status=0");
            $wynik = mysql_query("UPDATE $tabela SET status='1', data=NOW() WHERE kod='$kod' and status=0");
            $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod' and status=1");
            if (mysql_num_rows($wynik) == 1) {
                echo '<p>Dziękujemy. Rejestracja została zakończona poprawnie. Możesz się teraz zalogować.</p>';
            }
        }
     
        if (!$kod or mysql_num_rows($wynik)<>1) {
            echo '<p>Aktywowanie konta nie powiodło się.</p>';
        }
        mysql_close($polaczenie);
    }
     
    ?>

 

o nazwie weryfikacja.php
Wywala mi taki błąd :
Notice: Undefined index: kod in /var/www/virtual/e-portfel-online.cba.pl/weryfikacja.php on line 4.
Plik db.php ma taką treść :

    <?php
	ini_set( 'display_errors', 'On' ); 
	error_reporting( E_ALL );
     
    //stałe bazy danych
    $mysql_host = 'mysql.cba.pl';
    $mysql_login = 'uzytkownik';
    $mysql_haslo = 'pass';
    $mysql_baza = 'baza_cba_pl';
     
    // połączenie z bazą danych
    $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Błąd: nie udało się nawiązać połączenia z bazą danych.');
     
    // połączenie ze schematem bazy danych
    mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
     
    ?>

 

Nie wiem co jest przyczyną tego błedu przez który skrypt się nie wykonuje. Proszę o pomoc. Z góry dziękuje.

1

$_GET['kod'] - korzystasz, a nie sprawdzasz czy takie pole istnieje. Użyj isset().

0

Nie używaj mysql_num_rows tylko mysql'owego count()

0

Lepiej array_key_exists() :P

Dlaczego?

0

No z tego co wiem, może to już nie prawda ale funkcja isset gdy wartość jest równa null, 0 lub false, zwróci false, ale jeśli tak nie jest to sorry, gdzies tak czytałem :p

0

Witam ponownie. Dodam, że nie jestem zbyt biegły. Pokaże mi ktoś jak ma wyglądać ta linijka ? Próbowałem samemu, ale nie działa. To pewnie wina jednego przecinka albo kropki, więc proszę o pomoc.

0
konrados napisał(a)

No z tego co wiem, może to już nie prawda ale funkcja isset gdy wartość jest równa null, 0 lub false, zwróci false, ale jeśli tak nie jest to sorry, gdzies tak czytałem :p

To otwórz manual do isset i przeczytaj pierwsze zdanie:

isset — Determine if a variable is set and is not NULL

1 użytkowników online, w tym zalogowanych: 0, gości: 1