Autor | Zpráva | ||
---|---|---|---|
kabanos Profil * |
#1 · Zasláno: 27. 6. 2008, 15:12:33
Mám problém s přihlašováním na stránky.
Jména a hesla mám v mysql tabulce. Pokud v kódu stránky (viz níže) uvedu vyhledávání dle jména: $sql = mysql_query('SELECT * FROM data WHERE login='.$log.';'); tak mi to nenajde žádnou shodu:-(( Pokud vyhledávám podle hesla: $sql = mysql_query('SELECT * FROM data WHERE heslo='.$pass.';'); tak mi to najde heslo pouze pokud je zapsáno jen číslicemi (např. 12345). Pokud je to ale složeno i z písmen (např. tn123) tak mi to také nenajde.-(( Čím to je? Mám něco špatně nastaveno? Dík Mysql tabulku jsem vytvořil tímto kódem: $sql = 'CREATE TABLE data ( id INT NOT NULL PRIMARY KEY, heslo VARCHAR(5) NOT NULL, login VARCHAR(20) NOT NULL, ) TYPE = myisam, DEFAULT CHARACTER SET cp1250;'; mysql_query($sql) or die('Chyba databaze.') Kód stránky: <?php session_unset(); session_start(); $_SESSION['ok'] = 0; if (isset ($_POST['login']) && ($_POST['heslo'])){ error_reporting(0); $db_server = '127.0.0.1'; $db_login = 'root'; $db_heslo = ''; $db_jmeno = 'mysql'; @mysql_pconnect($db_server,$db_login,$db_heslo); @mysql_select_db($db_jmeno); $set = @mysql_query ('SET NAMES cp1250'); $log = $_POST['login']; $pass = $_POST['heslo']; $sql = mysql_query('SELECT * FROM data WHERE login='.$log.';'); $info = mysql_fetch_array($sql); $jmeno = $info[2]; $heslo = $info[1]; if ($heslo == $pass) { $_SESSION['ok'] = '1'; Header('Location:page.php'); } else { echo '<p>Nemáte oprávnění k prohlížení této stránky</p>'; exit(); } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=content-type content="text/html; charset=windows-1250"> <title></title> </head> <body> <form action="" method="post"> <input type="text" name="login"> <input type="password" name="heslo"> <input type="submit" value="VSTUP"> </form> </body> </html> |
||
nightfish Profil |
#2 · Zasláno: 27. 6. 2008, 15:16:15
řetězcové konstanty v mysql dotazech je nutné uzavřít do apostrofů
takže místo $sql = mysql_query('SELECT * FROM data WHERE login='.$log.';'); mysql_query("SELECT Count(*) FROM data WHERE login = '".$log."' AND heslo = '".$pass."';"); a pak kontrolovat vrácené číslo (1 a více = nalezeno, 0 = nenalezeno) |
||
Časová prodleva: 16 let
|
0