Autor Zpráva
kabanos
Profil *
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
ř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)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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