Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql - PHP - LOGOWANIE
Forum PHP.pl > Forum > Gotowe rozwiązania
jaca
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
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]
Cudi
Kod
$result = mysql_query("SELECT * FROM auth WHERE (name ='$name' AND pass = '$password') LIMIR 1");  


LIMIR ? Chyba nie sprawdziłeś tego kodu :]
Jabol
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)
Cudi
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
Jeżeli nie dał na pole z loginem unique to będziemy mieli biggrin.gif
DeyV
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
DeyV, zawsze mi podsuniesz dobrą myśl... Czy dobrze rozumiem, że w takim razie nawet przy wybieraniu pojedynczego rekordu warto dac LIMIT ?
DeyV
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 winksmiley.jpg
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.