Muj problem se týka tohoto, tak trochu se učim php a mysql a snažim se napsat si logovací form na své stránky, ale pokaždé když chci zkontrolovat login a heslo, tak mi php vrátí chzbovou hlášku "Špatný login nebo heslo",
už se s tim mořim tři dny a ne a ne to rozlousknout.
Tady sou zdrojaky tak mi prosim nekdo pomozte:
index.php:
<?php
require "data.php";
switch ($akce)
{
case "session_error":
echo " <h3>Nastala chyba při inicializaci session.</h3>";
regform();
break;
case "logout":
session_start();
$logout1=session_unregister("user");
$logout2=session_destroy();
if($logout1 || $logout2):
echo "<h3>Byl(a) jste úspěšně odhlášen(a).</h3>";
regform();
else:
echo "<h3>Nebyl(a) jste úspěšně odhlášen(a).</h3><br>
Zkuste to <a href=\"?akce=logout\">znovu.</a>
";
endif;
break;
case "login_error": //Toto je to ošetření chyby na který mě to pořád vrací.
echo "<h3>Špatné jméno nebo heslo..</h3>";
regform();
break;
case "time_error":
session_start();
echo "<h3>Váš učet byl v nečinnosti déle než $user[interval] s</h3>";
session_unregister("user");
session_destroy();
regform();
break;
case "form_error":
echo "<h3>Vyplňte jméno a heslo.</h3>";
regform();
break;
default:
regform();
}
?>
data.php:
<?php
Header("Pragma: No-cache");
Header("Cache-Control: No-cache, Must-revalidate");
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
function regform()
{
$form="<table cellpadding=5 cellspacing=5 width=100 border=0 align=center>";
$form.="<form action=\"login.php\">";
$form.="<tr><th>Login</td><td><input type=\"text\" name=\"user_log\"></td></tr>";
$form.="<tr><th>Heslo</td><td><input type=\"text\" name=\"user_pw\"></td></tr>";
$form.="<tr><td colspan=\"2\"><input type=\"submit\"></td></tr>";
$form.="</form></table>";
echo $form;
}
$interval=900;
$db_host="mysql.webzdarma.cz";
$db_user="letnografie";
$db_pw="*";
$db="letnografie";
$tabulka="login";
$sloupec_login="login";
$sloupec_heslo="pw";
?>
login.php:
<?php
require "data.php";
if($user_log && $user_pw):
$link=mysql_connect($db_host,$db_user,$db_pw);
mysql_select_db($db,$link);
$query=mysql_query("SELECT id FROM $tabulka WHERE $sloupec_login='$user_log' AND $sloupec_heslo='$user_pw' ");
$check=mysql_num_rows($query);
if($check==1):
session_start();
$registrace=session_register("user") ;
if($registrace):
$user_data=mysql_fetch_array($query);
$user["id"]=$user_data[id];
$user["interval"]=$interval;
$user["session_time"]=Time();
HEADER("Location:user.php");
else:
HEADER("Location:index.php?akce=session_error");
endif;
else:
HEADER("Location:index.php?akce=login_error");
endif;
else:
HEADER("Location:index.php?akce=form_error");
endif;
?>
Vykašli se na session, pracuj přímo s MySQL !
Joey:Děkuju, hnedka to skusim.
hmm, hnedka to přepracuju, dík a uvidíme, ale stejně bych chtěl vědět v čem je chyba (abych se měl z čeho poučit)
Dík
Problem je, že přes session pomocí dalšího *.php a vsuvkou v každé zabezpečené stránce kontroluju zalogování na stránkách. Samozřejmě že bych mohl při zalogování změnit u nějakou položku z mysql z "false" na "true", ale připadá mi to jako zbytečně moc dotazování.(protože ten web má být do budoucna docela rozvětvenej a ještě počítám, že budu databázi používat na další operace).
Stale nic co by mi pomohlo
$query=mysql_query("SELECT id FROM $tabulka WHERE $sloupec_login='$user_log' ...
a
mysql> desc login;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| login | varchar(30) | YES | | NULL | |
| pw | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.40 sec)
mysql> SELECT id FROM login WHERE login='asdf' AND pw='asdf';
ERROR 1054: Unknown column 'id' in 'field list'
Děkuju, stačilo v tabulce přidat sloupeček ID, Hurá
Děkuju, Děkuju, Děkuju, Děkuju, Děkuju.
mira: Jenom takovej dotázek, jak je to na wz se skriptama? Myslim že když si tam dám skript, tak se do něj můžeš dívaj jak chceš? Jestli jo, kde je to nějak napsaný?
php skript nikdo nevidi, krome autora a Miry ovsem :-))