Front-end týden Zimní slevy
Pouze tento týden sleva až 80 % na HTML & CSS a JavaScript
Využij našich zimních slev a získej až 33 % prémiové výuky navíc zdarma
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
Redaktor
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
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í :-)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Milan Turyna
Redaktor
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
Avatar
Milan Turyna
Redaktor
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět
9.11.2019 16:02
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.