Autor | Zpráva | ||
---|---|---|---|
robbie Profil * |
#1 · Zasláno: 25. 3. 2016, 13:11:43
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 * |
#3 · Zasláno: 25. 3. 2016, 14:07:33
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 |
#4 · Zasláno: 25. 3. 2016, 14:17:51
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 |
#5 · Zasláno: 25. 3. 2016, 14:19:43
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 * |
#6 · Zasláno: 25. 3. 2016, 14:22:16
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 * |
#8 · Zasláno: 25. 3. 2016, 20:57:47
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'])) {
|
||
Časová prodleva: 3 dny
|
|||
robbie Profil * |
#12 · Zasláno: 28. 3. 2016, 13:31:22 · Upravil/a: Moderátor (editace znemožněna) 31. 3. 2016, 09:52:22
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. |
||
Časová prodleva: 9 let
|
0