Nejste přihlášeni
Stránky 1
Dobrý den,
vytvářím si přihlašování a mám následující kod:
$db = new mysqli('localhost', 'username', 'password', 'database');
$query = $db->stmt_init();
$query->prepare("SELECT id FROM users WHERE username= ? AND password=?");
$query->bind_param('ss', $_POST["username"], md5($_POST["password"]));
$query->bind_result($userid);
$query->execute();
$query->fetch();
echo $userid;
Což by vypsat id uzivatele: 1, ale vypíšeto 0;
Přitom ale ten samý dotaz přes phphmyadmin:
Mohl byste mi někdo prosím poradit, co mám špatně?
$_POST["username"] i $_POST["password"] mají hodnotu "test".
Předem děkuji Frychnovsky
Offline
Zkusil bych vymazat mezeru v dotazu
$query->prepare("SELECT id FROM users WHERE username=? AND password=?");
Nejprve se zeptám, jak funkci voláte? Skriptem pomocí formuláře?
- prověřte si názvy vstupních proměnných
Což by vypsat id uzivatele: 1, ale vypíšeto 0;
Vypíše 0, protože nic nebylo nalezeno - žádná shoda.
Jako druhou připomínku je bezpečnost!
Zařaďte do svého kódu také
$username = $query->real_escape_string($_POST["username"]);
$password = $query->real_escape_string($_POST["password"]);
$query->bind_param('ss', $username, md5($password));
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
bartama: zatím potřebuju jenom id uživatele,možná později si budu brát i jiné údaje
kksmirice: mezeru jsem dal pryč stále ale id je 0
názvy proměnných i jejich hodnoty jsem kontroloval - OK
viz výpis print_r($_POST):
Array
(
[username] => test
[password] => test
)
$query je proměnná třídy mysqli_stmt, která se o ošetření proměnných stará sama
Offline
Nejsem zběhlý v mysqli. Prozatím používám mysql
Otestujte toto:
$db = new mysqli('localhost', 'username', 'password', 'database');
$query = $db->stmt_init();
$query->prepare("SELECT id FROM users WHERE username=? AND password=?");
$query->bind_param('ss', $_POST["username"], md5($_POST["password"]));
$query->execute();
$query->bind_result($userid);
$query->fetch();
echo $userid;
Dle manuálu:
Note that all columns must be bound after mysqli_stmt_execute() and prior to calling mysqli_stmt_fetch().
EDIT:
kde možno testovat, abych nemusel vymýšlet u sebe?
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Tak jsem to zkusil a pořád id je 0
Offline
kde možno testovat, abych nemusel vymýšlet u sebe?
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Offline
Zkuste mi poslat zdroják na mejla login(at)kksmirice.hys.cz
Divná diakritika....
Nevylučuji profesionální slepotu - znám to
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Zkuste opravit:
Heslo: <input type="password" name="password"value="">
na
Heslo: <input type="password" name="password" value="">
chybí mezera a heslo nemusí být předáno...
Pro HTML 5 doporučuji striktně používat NET zápis u nepárových prvků.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Stránky 1