November Black Friday C/C++ week
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++
Avatar
Davidsun
Člen
Avatar
Davidsun:9. listopadu 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. listopadu 9:41
Budeme spolu, dokud nás výpadek elektrické sítě nerozdělí :-)
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:9. listopadu 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. listopadu 12:28
 
Nahoru Odpovědět
9. listopadu 12:27
Avatar
Davidsun
Člen
Avatar
Odpovídá na Milan Turyna
Davidsun:9. listopadu 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. listopadu 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. listopadu 15:59

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

Editováno 9. listopadu 15:59
 
Nahoru Odpovědět
9. listopadu 15:59
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:9. listopadu 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. listopadu 16:02
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
9. listopadu 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.