Jump to content

Archived

This topic is now archived and is closed to further replies.

rane33

prosty skrypt php

Recommended Posts

Witam wszystkich!

Dopiero rozpoczynam przygodę z PHP, mam jednak problem z przykładowym skryptem z kursu. Porównuję i porównuję z tym w książce, ale nadal nie potrafię znaleźć błędu, Przglądarka wyrzuca błąd w linii 19 jako "Notice: Undefined index: wylicz", skrypt poniżej:

<form method="post" action="skrypt.php">
<table>
<tr>
<td>Wpisz pierwszą liczbę: </td>
<td><input type="text" name="liczba1"></td>
</tr>
<tr>
<td>Wpisz drugą liczbę: </td>
<td><input type="text" name="liczba2"></td>
</tr>
<tr>
<td><input type="hidden" name="wylicz" value="tak" /></td>
<td><input type="submit" name="sprawdz" /><td>
</tr>
</table>
</form>

<?php
if($_POST['wylicz'] == 'tak')
{
    if($_POST['liczba1'] == "" AND $_POST['liczba2'] == "")
    {
    echo 'Wypelnij wszystkie pola w formularzu';
    }
    else
        {
        if(!is_numeric($_POST['liczba1']) AND !is_numeric($_POST['liczba2']))
            echo 'Wpisane dane nie sa liczbami';
        else
        {
        $WynikMnozenia=$_POST['liczba1']*$_POST['liczba2'];
        if($WynikMnozenia>20)
        {
            echo 'Wynik mnozenia jest wiekszy od 20';
        }
        else
        {
            if($_POST['liczba1']>$_POST['liczba2'])
            {
            echo 'Liczba1 jest wieksza od Liczba2';
            }

            else
            {
            if($_POST['liczba1']<$_POST['liczba2'])
            {
            echo 'Liczba1 jest mniejsza od Liczba2';
            }
            else
            {
            echo 'Obie liczby maja taka sama wartosc';

}
}
}
}
}
}
?>

Ok, już sobie poradziłem, głupi błąd. Temat do kosza.

Link to comment
Share on other sites

Nie jestem jakimś wielkim programistą php ale ponieważ czasem proszę kogoś o przygotowanie takiego kodu siłą rzeczy trochę się go naumiałem ;)

Po pierwsze wyłączanie komunikatu o błędzie nie oznacza rozwiązania błędu. Moim zdaniem php czepia się tego, że jeśli zmienna $_POST['wylicz'] nie istnieje to nie bardzo można porównać ją z wartością "tak". Ponieważ $_POST jest tablicą gdy klucz wylicz nie istnieje php zgłasza błąd. Co prawda skrypt działa poprawnie w końcu "null" nie równa się "tak", ale inne języki np as3 nie są tak idioto odporne i mogą się wykrzaczyć na takim zagraniu.

Jak się przed tym zabezpieczyć? Przypuszczam, że warto sprawdzić czy klucz istnieje, zajrzałem do dokumentacji php i najlepiej wygląda funkcja "array_key_exists", w twoim wypadku wykorzystać można to tak:

if (array_key_exists("wylicz", $_POST)) {

...tutaj caly kod...

}

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...