Autor Zpráva
robbie
Profil *
Ahoj, chtěl jsem se optat,
lze nějakým způsobem ošetřit formulář , aby se neodeslal, např. v případě když je zadávaná hodnota do daneho policka <400
Dekuji
lionel messi
Profil
robbie:
<form>
Zadaj číslo väčšie alebo rovné 400:  <input type="text" name="cislo">
<input type="submit" value="Odoslať">
</form>

<?php
if (isset($_POST["cislo"])) {
  if ($_POST["cislo"] < 400) {
    echo "Zadané číslo je menšie než 400.";
  }
  else {
    //tu bude spracovanie formuláru
  }
}
?>
robbie
Profil *
lionel messi:
Zkusil jsem to takto a hází to chybu. Poradíš?

<?php
include("after.html");

$dbcon = mysqli_connect('localhost','...','.....','........'); /* uziv, heslo a nazev db schálne nevyplněny*/
 


if (isset($_POST["castka"]) {
    if($_POST["castka"]<500){
 
    echo "Částka musí být větší než 500.".msqli_error($dbcon);
  }
  else {
    $sql = "
INSERT INTO 
    drazitele
    (
    jmeno,
    prijmeni,
    email,
    plysak,
    castka
    )
    VALUES
    (
    '$_POST[jmeno]',
    '$_POST[prijmeni]',
    '$_POST[email]',
    '$_POST[plysak]',
    '$_POST[castka]'
    )
";
 

    

mysqli_query($dbcon, $sql);
 
      mysqli_close($dbcon);
  }
}
?>
lionel messi
Profil
robbie:
lionel messi:
Zkusil jsem to takto a hází to chybu. Poradíš?

Akú chybu konkrétne?

Na riadku 11 voláš namiesto mysqli_error neexistujúcu funkciu msqli_error.

Prečítaj si ešte príručku escapovania a vyhľadaj si niečo o útoku SQL Injection.
Keeehi
Profil
lionel messi:
Na riadku 11 voláš namiesto mysqli_error neexistujúcu funkciu msqli_error.
A kromě toho tam navíc ani nedává smysl.
robbie
Profil *
Píše to, že stránka nefunguje. Ten překlep jsem opravil a nic
tazzys
Profil
robbie:
já bych dal místo include spiš require
Slark
Profil *
tazzys:
Zřejmě máte na mysli require, které ale určitě nevyřeší problém, že stránka "nefunguje".

robbie:
Napište jak přesně vám stránka nefunguje, resp. co vám to dělá, že jste došel k závěru že to nefunguje. Na základě toho je možné poradit.
Lonanek
Profil
robbie:
a co obsahuje soubor after.html?
Tomáš123
Profil
robbie:
Píše to, že stránka nefunguje.
Nie, nepíše. Ak by si uviedol presnú chybu, viac diskutérov by si všimlo, že ti na riadku 8 chýba ukončovacia zátvorka.

Hodnota kľúču pri výpise poľa neobalená úvodzovkami alebo apostrofmi tiež za určitých okolností generuje chybu úrovne E_NOTICE.

Upravil som tvoj kód a pridal escapovanie hodnôt vkladaných do databázy (snáď bezchybne, netestoval som – prípadne dodaj presné znenie chyby):
<?php
include("after.html");
$dbcon = mysqli_connect('localhost','...','.....','........'); 
if (isset($_POST['jmeno'], $_POST['prijmeni'], $_POST['email'], $_POST['plysak'], $_POST['castka'])) {
    if($_POST['castka'] < 500) {
        echo "Částka musí být větší než 500.".mysqli_error($dbcon); //Myslím, že to čo požaduješ sa tu neobjaví
    }
    else {
        $sql = "INSERT INTO `drazitele`
        (`jmeno`, `prijmeni`, `email`, `plysak`, `castka`) 
        VALUES
        (
        '".mysqli_real_escape_string($dbcon, $_POST['jmeno'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['prijmeni']."',
        '".mysqli_real_escape_string($dbcon, $_POST['email']."',
        '".mysqli_real_escape_string($dbcon, $_POST['plysak']."',
        '".mysqli_real_escape_string($dbcon, $_POST['castka']."'
        )";
        mysqli_query($dbcon, $sql);
    }
}
mysqli_close($dbcon);
?>

Ďakujem ↓.
lionel messi
Profil
Tomáš123:
Hodnota v poli neobalená úvodzovkami alebo apostrofmi tiež generuje chybu úrovne E_NOTICE.

V prípade robbieho kódu nie, treba rozlišovať kontext.

Porovnaj:

$futbalisti = ["Messi" => "Lionel", "Ronaldo" => "Cristiano",]; //skrátený zápis poľa funguje od PHP 5.4

echo "Krstné meno najlepšieho futbalistu sveta je $futbalisti[Messi]"; //vypíše správne Lionel

verzus:

$futbalisti = ["Messi" => "Lionel", "Ronaldo" => "Cristiano",]; //skrátený zápis poľa funguje od PHP 5.4

echo "Krstné meno najlepšieho futbalistu sveta je $futbalisti['Messi']"; //pred spustením si skús tipnúť, čo uvidíš

A na 4. riadku máš prehodený apostrof s ukončovacou hranatou zátvorkou, správne: if (isset($_POST['jmeno'], $_POST['prijmeni'], $_POST['email'], $_POST['plysak'], $_POST['castka'])) {
robbie
Profil *
Tomáš123:
Ahoj Tome:

tak jsem ulozil na server tvoji veryi, co jsi poslal a nezapisuje to vubec do databaze, zkusil jsem to upravit viz kod niz a taky nic, napadá tě neco jeste? Ja uz fakt nevim

kod:

<?php
include("after.html");
$dbcon = mysqli_connect('localhost','login','heslo','aukce'); 
if (isset($_POST['jmeno'], $_POST['prijmeni'], $_POST['email'], $_POST['plysak'], $_POST['castka'])) {
    if($_POST['castka'] > 500){ $sql = "INSERT INTO drazitele(jmeno, prijmeni, email, plysak, castka) 
        VALUES
        (
        '".mysqli_real_escape_string($dbcon, $_POST['jmeno'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['prijmeni'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['email'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['teddy'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['rango'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['squirell'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['mimon'])."',
        '".mysqli_real_escape_string($dbcon, $_POST['castka'])."'
        )";
                                    
                                     
        mysqli_query($dbcon, $sql);    
    }

    
    
    else {echo "Částka musí být větší než 500.".mysqli_error($dbcon);
        
    }
                                     
}
                                                                      

    mysqli_close($dbcon);
                                     
?>
lionel messi
Profil
robbie:

Nikdy sem nevkladaj prihlasovacie údaje do db, svet je bohužiaľ zlý a nevieš, kto ich zneužije, radšej ich vyhviezdičkuj.

Vkladanie ti nefunguje, pretože sa do 5 stĺpcov (jmeno, prijmeni, email, plysak, castka) snažíš napchať 8 hodnôt a databáza si s tým pochopiteľne nevie rady. Máš v db stĺpce teddy, rango, squirell a mimon? Ak áno doplň ich v danom poradí do insertu (jmeno, prijmeni, email, teddy, rango, squirell, mimon, castka). Ak nie, skús popísať, čo chceš pri vkladaní do stĺpca plysak dosiahnuť.

Ak má $_POST['castka'] byť číslo, tak nemusíš escapovať, ale postačí pretypovať na číslo (napr. funkciou intval) a pri vkladaní ju neohraničuj apostrofmi.
robbie
Profil *
robbie [#12], Lonanek:

Soubor after.html obsahuje pouze html stranku , která se objeví po odesláni formuláře


lionel messi:
Sem to zvoral s temi prihlas udaji, ja vim, ale ted nevim jak to smazat.
Keeehi
Profil
robbie:
ale ted nevim jak to smazat.
Normálně zedituješ příspěvek, tedy kdyby jsi byl registrovaný. Takhle ti pomůže jen moderátor.
Fisir
Profil
Reaguji na robbie:
Sem to zvoral s temi prihlas udaji, ja vim, ale ted nevim jak to smazat.
Změň si heslo. I kdybys příspěvek zpětně editoval, údaje si mohl někdo mezitím uložit, navíc zdejší moderátoři si mohou zobrazit jeho původní verzi a zrovna u nich bych ochranu citlivých dat nečekal.
robbie
Profil *
Fisir:
Díky, pořešeno.


lionel messi:
Jsi božský, dekuji moc, už to funguje.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0