Witam. Mam problem. To moj kod autoryzacji:
Cos jest nie tak bo po wpisaniu nazwy i hasla uzytkownika wyskakuje mi komunikat ze nie mam prawa do ogladania strony (a przeciez dobrze
wypelniam name i password)
POMOCY !!!!
plik.php
<?
// laczenie z baza danych
$mysql = mysql_connect( "localhost", "webauth", "webauth123" )
or die ("Nie mozna sie polaczyc<br>");
print "polaczenie z serwerm nawiazane.<br>";
// wybór właściwej bazy dancyh
$mysql = mysql_select_db( "auth" )
or die ("Nie można wybrać bazy danych.<br>");
print "Uzyskano dostep do bazy auth<br>";
// zapytanie do bazy danych , ktorego celem jest sprawdzenie,
// czy isnieje rekord odpowiadajacy wprowadzonycm danym
$result = mysql_query("SELECT * FROM auth WHERE (name ='$name' AND pass = '$password')");
if(!$result)
{
echo "Nie mozna uruchomic zapytania.";
exit;
}
$count = mysql_result( $result, 0, 0 );
if ( $count > 0 )
{
// nazwa oraz hasło odpowiadajacego sa poprawne
echo "<h1> Udało sie";
echo "Ta strona jest tajna.";
}
else
{
//nazwa lub hasło uzytkownikanie jest poprawne
echo "<h1> NIc z tego ! </h1>";
echo " NIe masz prawa ogladac tajnych danych.";
}
?>
Wankster
8.05.2003, 17:47:07
Istnieje coś takiego jak php BBCode
- - -
A tak :
[php:1:8a7c864be7]<?php
$r = mysql_connect( "localhost", "webauth", "webauth123" ) or die ("Nie mozna sie polaczyc<br>");
print "polaczenie z serwerm nawiazane.<br>";
$mysql = mysql_select_db( "auth" ) or die ("Nie można wybrać bazy danych.<br>");
print "Uzyskano dostep do bazy auth<br>";
$result = mysql_query("SELECT * FROM auth WHERE (name ='$name' AND pass = '$password') LIMIR 1");
$rows = mysql_num_rows( $result );
if ( $rows )
{
echo "<h1> Udało sie";
echo "Ta strona jest tajna.";
}
else
{
echo "<h1> NIc z tego ! </h1>";
echo " NIe masz prawa ogladac tajnych danych.";
}
?>[/php:1:8a7c864be7]
Kod
$result = mysql_query("SELECT * FROM auth WHERE (name ='$name' AND pass = '$password') LIMIR 1");
LIMIR ? Chyba nie sprawdziłeś tego kodu :]
Jabol
8.05.2003, 19:48:28
Kod
+--+--+
| R| T|
+--+--+
Łatwo się pomylić, a przecież przy takich błędach łatwo zauważyć literówkę (mysql pokazuje miejsce błędu!!!).
A tak wogóle to po co nawiasy dookoła warunków WHERE'a, przecież w sql, nie trzeba nawiasów (są one tak jakby automatyczne przy spotkaniu AND/OR/XOR)
W sumie to LIMIT wogóle nie jest tu potrzebny, bo raczej nie będziemy chcieli mieć dwóch użytkowników o tym samym loginie, więc wprowadzimy jakieś zabezpieczenia.
Wankster
9.05.2003, 07:54:29
Jeżeli nie dał na pole z loginem unique to będziemy mieli
Przy takim zapytaniu LIMIT ma jeszcze inne znaczenie - może znaczenie skrócić czas trwamnia zapytania, ponieważ MySQL, zamiast szukać kolejnych rekordów spełniających podany warunek (co z góry skazane jest na niepowodzenie) kończy od razu po pierwszym
scanner
9.05.2003, 10:07:57
DeyV, zawsze mi podsuniesz dobrą myśl... Czy dobrze rozumiem, że w takim razie nawet przy wybieraniu pojedynczego rekordu warto dac LIMIT ?
Tak, chyba że w warunku oparty jest tylko na unikalnym kluczu - wtedy MySQL powinien sam umieć o tym zadecydować.
Jednak na pewno jest to dobry nawyk - prosić tylko o to, co jest ci niezbędne
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.