Autor | Zpráva | ||
---|---|---|---|
Spectrum Profil * |
#1 · Zasláno: 14. 2. 2015, 19:27:02
Mám ďalší problém, mám PHP kód na registráciu:
$meno = $_POST['meno']; $heslo = sha1($_POST['heslo']); } mysql_query("INSERT INTO uzivatelia(meno,heslo) VALUES('$meno','$heslo' )") or die("Užívateľa sa nepodarilo registrovať."); ?> A chcem aby do inputu s name="meno" a name="heslo" nedávali prázdne hodnoty. Skúšal som to cez podmienku if(isset(....)) a if(empty(...)) no vôbec to nechcelo fungovať a do databázy sa stále ukladali prázdne hodnoty. Ako teda docieliť toho aby sa pri zadaní prázdnej hodnoty neposlali údaje do databázy? |
||
Taps Profil |
#2 · Zasláno: 14. 2. 2015, 19:30:03
Spectrum:
$meno = mysql_real_escape_string($_POST['meno']); $heslo = sha1($_POST['heslo']); if(!empty($meno) || !empty($heslo)){ mysql_query("INSERT INTO uzivatelia(meno,heslo) VALUES('$meno','$heslo' )") or die("Užívateľa sa nepodarilo registrovať."); } |
||
Kubo2 Profil |
Taps:
Myslím, že v tej podmienke by bolo vhodnejšie použiť && .
|
||
juriad Profil |
#4 · Zasláno: 14. 2. 2015, 19:51:52
|
||
Kubo2 Profil |
#5 · Zasláno: 14. 2. 2015, 19:54:46
juriad:
...a následne strlen() , či vstup nie je prázdny tj. nulovej dĺžky.
|
||
Spectrum Profil * |
#6 · Zasláno: 14. 2. 2015, 20:15:12
Vytvoril som si teda tento kód:
$meno = mysql_real_escape_string($_POST['meno']); $heslo = sha1($_POST['heslo']); if(isset($meno) && isset($heslo)){ if(is_string($meno) && is_string($heslo)){ if(strlen($meno) > 0 && strlen($heslo) > 0){ mysql_query("INSERT INTO uzivatelia(meno,heslo) VALUES('$meno','$heslo' )") or die("Užívateľa sa nepodarilo registrovať."); }else { echo "Musíte vyplniť všetky údaje."; } } } A narazil som na 2 problémy. 1. problém je že hláška "Musíte vyplniť všetky údaje." sa napíše vždy, už hneď po načítaní stránky. 2. problém je že heslo zobere vždy ako vyplnené, pretože je zahashované. Vedeli by ste mi prosím ešte s týmto pomôcť? |
||
Fisir Profil |
Reaguji na Spectruma:
První dva řádky přesuň těsně před mysql_query a v podmínkách nahraď $meno a $heslo za $_POST['meno'] , respektive $_POST['heslo'] .
|
||
Kubo2 Profil |
<?php $empty = array(); if(!isset($_POST['meno']) || !is_string($_POST['meno']) || !strlen($_POST['meno'])) { $empty[] = 'meno'; } if(!isset($_POST['heslo']) || !is_string($_POST['heslo']) || !strlen($_POST['heslo'])) { $empty[] = 'heslo'; } if(!count($empty)) { $meno = $_POST['meno']; // bez escapovania, použije sa pri výpise chyby resp. oznámenia o úspechu $heslo = sha1($_POST['heslo']); // predpokladám, že heslo sa v pôvodnej podobe nikde nepoužije $dotaz = sprintf('INSERT INTO uzivatelia (meno, heslo) VALUES ('%s', '%s' )', mysql_real_escape_string($meno), $heslo); if(!mysql_query($dotaz)) { printf('Používateľa sa %s nepodarilo zaregistrovať.', htmlspecialchars($meno)); } else { printf('Registrácia používateľa %s bola úspešná.', htmlspecialchars($meno)); } exit; } printf('Nevyplnili ste správne %s', join(', ', $empty)); |
||
Spectrum Profil * |
#9 · Zasláno: 15. 2. 2015, 13:39:38
Upravil som to podľa Fisira a všetko funguje ako má, vďaka každému.
|
||
Časová prodleva: 10 let
|
0