IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: validace kódu

Aktivity
Avatar
Davidsun
Člen
Avatar
Davidsun:9.11.2019 9:41

Ahoj,
mám html formulář a k němu php kód. Na localhostu mi vše funguje, avšak po uploadu jinam (třeba i it network-kurz) dostávám chybu: Undefined index: tajneslovo on line 11 Neplatné heslo.

<?php
$password = "";
$password = 'veslo';

$heslo = $_POST['tajneslovo'];
if ($heslo == $password)
{
    echo('Udělal to knihovník.');
}

else
{
    echo('Neplatné heslo.');
}
?>

Zkusil jsem: Dočetl jsem se, že problém by měl odstranit isset, ale isset dle googlu vrací hodnotu true a nebo false, pro kontrolu vstupu, když jsem zkusil toto, tak jsem opět na mrtvém bodě.

<?php
$password = "";
$password = 'veslo';

$heslo = $_POST['tajneslovo'];

var_dump(isset($heslo['tajneslovo']));

if ($heslo == $password)
{
    echo('Udělal to knihovník.');
}

else
{
    echo('Neplatné heslo.');
}
?>

Chci docílit: Dočetl jsem se, že se jedná o nastavení serveru (používám easy php), nevíte, kde se dá nastavit validace kódu, abych byl na stejném levelu a po tom, co mám v kódu špatně?

Děkuji mnohokrát.

Odpovědět
9.11.2019 9:41
Budeme spolu, dokud nás výpadek elektrické sítě nerozdělí :-)
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:9.11.2019 12:27

Ano isset() vrací boolean (true/false) proto musíš dát

if(isset($_POST['tajneslovo'])) {}

aby vše fungovalo. Jinak Váš kód nedává logiku $_POST je globální proměnná a vy jste nastavil že

$heslo = $_POST['tajneslovo']

(to znamená že heslo je určitý POST) a proto nemůžete určovat $heslo['tajnes­lovo'] jelikož $heslo není globální proměnná a ani pole. Taky přece nebudete dělat

$_POST['tajneslovo']['tajneslovo']

Totiž podmínka (if) funguje na tom jestli to co v ní je vrací 1 nebo 0 (true, false, čili jestli to je pravda nebo ne) proto kdyby například jsme měli funkci

function nazevfunkce() {
   return true;
}

a podmínku if(nazevfunkce()) tak by se podmínka splnila a kdyby tam bylo false, tak by se nesplnila..

Editováno 9.11.2019 12:28
Nahoru Odpovědět
9.11.2019 12:27
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Davidsun
Člen
Avatar
Odpovídá na Milan Turyna
Davidsun:9.11.2019 15:56

Nastavení error reportingu jsem si již našel v php.ini

Kód je funkčně správně, do "tajneslovo" ve formulari zadam textem heslo, ktere je "veslo". If ho vyhodnotí a pokud je pravda, zobrazí "udělal to komorník".
Následující logiku bych potřeboval napsat s isset
potřebuji použít něco jako toto: odkaz

Nahoru Odpovědět
9.11.2019 15:56
Budeme spolu, dokud nás výpadek elektrické sítě nerozdělí :-)
Avatar
Milan Turyna
Tvůrce
Avatar
Odpovídá na Davidsun
Milan Turyna:9.11.2019 15:59

Myslím tím var_dump(isset($hes­lo['tajneslovo']))

Editováno 9.11.2019 15:59
Nahoru Odpovědět
9.11.2019 15:59
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:9.11.2019 16:02
<?php

$password = 'veslo';

if(isset($_POST['tajneslovo']) && !empty($_POST['tajneslovo']))
{
    $heslo = $_POST['tajneslovo'];

    if($heslo == $password) {
        echo('Udělal to knihovník');
    } else {
        echo('Neplatné heslo');
    }
}
Editováno 9.11.2019 16:02
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
9.11.2019 16:02
Řeš pouze to, co dokážeš ovlivnit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.