Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]skrypt logowania
eki
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


Witam,próbuje uruchomić u siebie skrypt logowania znaleziony na jakiejś stronce i niestety nie działa.po podaniu loginu i hasła nic się nie dzieje,nie przenosi do strony index2.php jak powinien. kod skryptu :
CODE
ob_start();
require_once('connect.php');
function usun($data){

GLOBAL $dbc;
if (ini_get('magic_quotes_gpc')){
$data = stripslashes($data);
}
return mysql_real_escape_string($data, $dbc);
}if (isset($_POST['submit'])){

if (empty($_POST['login'])){
$message .= 'Nie podałeś loginu
';
$l = FALSE;
}else{
$l = usun($_POST['login']);
}

if (empty($_POST['haslo'])){
$message .= 'Nie podałeś hasła
';
$h = FALSE;
}else{
$h = usun($_POST['haslo']);
}if ( $l && $h ){

$query = "SELECT username, access,admin FROM user WHERE username='$l' AND haslo=password('$h')";
$result = mysql_query($query);
$row = mysql_fetch_array ($result, MYSQL_ASSOC); if($row){
session_start();
$_SESSION['username'] = $row['username'];
$_SESSION['access'] = $row['access'];
$_GET['cmd'] = 'ok';
echo 'zalogowany';
header ("Location: index2.php?cmd={$_GET['cmd']}");
exit(); // przekierowuje nas na jaka strone chcemy
}else{
$message .= 'Błędne hasło lub login
';
}
mysql_close();
}else{
$message .= 'Spróbuj jeszcze raz';
}
}
ob_end_flush();
?>
tutaj formularz
<?
if(isset($message)){
echo $message;
}
?>
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 32)
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


hmm
  1. <?php
  2. $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  3. ?>

podtym wrzuć
  1. <?php
  2. var_dump($row);
  3. ?>


i powiedz / pokaż czy zwróciło Tobie tablice tego użytkownika.
Go to the top of the page
+Quote Post
eki
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


bool(false)
Go to the top of the page
+Quote Post
melkorm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


czyli nie znalazło użytkownika o podanym loginie i haśle i nie przeszło warunku if($row) teraz zrób to samo ale daj
  1. <?php
  2. var_dump($l, $h)
  3. ?>


i zobacz czy dane się zgadzają.
Go to the top of the page
+Quote Post
eki
post
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


string(5) "admin" string(10) "tymczasowe"
hmmm i takie mam właśnie w bazie
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


a powinieneś mieć:

Kod
password('$h')


hasło za hashowane :] (oczywiście w bazie)

polecam:
http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
Go to the top of the page
+Quote Post
eki
post
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


ale w bazie hasło jest zaszyfrowane.nie rozumiem tego
Go to the top of the page
+Quote Post
michalkjp
post
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


"SELECT username, access,admin FROM user WHERE username='$l' AND haslo=password('$h')"

Hmmm... a czy w zapytaniu SQL można używać funkcji?

Co daje funkcja password? – używam SQL od jakiegoś czasu i nigdy się z tym nie spotkałem. Wiem, lama ze mnie.

BTW. Ten skrypt wygląda jak produkt w sklepie "wszystko za 4 złote". Dostał 10/10 na jakiejś stronce?
Go to the top of the page
+Quote Post
melkorm
post
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


zrób w phpmyadminie
  1. SELECT password('tuwpiszhaslo') ;

i porównaj to z tym wpisanym w bazie czy napewno jest takie samo ;]

Cytat
Hmmm... a czy w zapytaniu SQL można używać funkcji?


oczywiście że można -.-"

Cytat
Co daje funkcja password?


spójrz na link w moim poście wyżej.
Go to the top of the page
+Quote Post
eki
post
Post #10





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


no a wiec tak: zapytanie wykonało się poprawnie
michal,co proponujesz w zamian? ;>

Ten post edytował eki 4.10.2008, 20:53:27
Go to the top of the page
+Quote Post
michalkjp
post
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Cytat(melkorm @ 4.10.2008, 20:48:27 ) *
oczywiście że można -.-"


Wydawało mi się, że to jest jakaś funkcja PHP (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (coś innego niż np. SQL'owe MAX)

Cytat(melkorm @ 4.10.2008, 20:48:27 ) *
spójrz na link w moim poście wyżej.


To jest przenośne? (Zaimplementowane w czymś innym niż MySQL?) Jakieś zalety w porównaniu ze zwykłym MD5?

Cytat(eki @ 4.10.2008, 21:50:33 ) *
michal,co proponujesz w zamian? ;>


Zamiast skryptu? Napisz własny, który będzie używał hashów MD5 (metoda sprawdzona i godna zaufania – tylko szaleńcy próbują rozbijać MD5 w celach innych niż naukowe). No i nie rób czegoś takiego...

$_GET['cmd'] = 'ok';

...

header ("Location: index2.php?cmd={$_GET['cmd']}");

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
melkorm
post
Post #12





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat
no a wiec tak: zapytanie wykonało się poprawnie


hm ale nie sparwdziłeś tego co ja psiałem ? ... .
Go to the top of the page
+Quote Post
eki
post
Post #13





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


sprawdziłam.naprawdę początkuję w temacie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
zadałam zapytanie w phpMyAdminie i odnalazł ten rekord i pokazał zaszyfrowane hasło
więc hasło jest poprawne
może coś z przekierowaniem?
czy na stronie index2.php też musi być deklaracja sesji umieszczona?

Ten post edytował eki 4.10.2008, 21:12:05
Go to the top of the page
+Quote Post
michalkjp
post
Post #14





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


A przenieś session_start() na początek skryptu.
BTW. Jeśli masz w $res FALSE, to nie wejdzie do pętli – coś musi być nie tak z zapytaniem.
BTW2. Dodaj jakąś podstawową obsługę błędów
if (!$link = mysql_connect($this->host, $this->user, $this->pass)) {
print("ERROR: Cannot connect to database!");
exit();
}

if (!mysql_select_db($this->dbas, $link)) {
print("ERROR: Cannot select database!");
exit();
}

$res = mysql_query($sql, $link);

if (!$res) {
print("ERROR: Cannot execute a query!");
mysql_error();
exit();
}

Ten post edytował michalkjp 4.10.2008, 21:20:16
Go to the top of the page
+Quote Post
melkorm
post
Post #15





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


to pod zapytaniem daj:
  1. <?php
  2. var_dump($query);
  3. ?>
zobaczymy czy w ogóle zapytanie się wykonuje ;]
Go to the top of the page
+Quote Post
eki
post
Post #16





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


string(95) "SELECT username, access,admin FROM user WHERE username='admin' AND haslo=password('tymczasowe')"
Go to the top of the page
+Quote Post
melkorm
post
Post #17





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


sorry na $result......
Go to the top of the page
+Quote Post
eki
post
Post #18





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


resource(4) of type (mysql result)
Go to the top of the page
+Quote Post
michalkjp
post
Post #19





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Jeśli


Cytat(eki @ 4.10.2008, 22:28:28 ) *
resource(4) of type (mysql result)


a $res jest
bool(false) to coś jest chyba nie tak, bo $res powinno być tablicą.
Go to the top of the page
+Quote Post
melkorm
post
Post #20





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


no to wracamy do punktu wyjścia czyli tego że zapytanie jest dobre ale nei zwraca żadnego wiersza.

może swtórz użytkownika o loginie test i haśle test nie kodując go i wywołaj ten skrypt bez funkcji "password" w zapytaniu (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Cytat
bool(false) to coś jest chyba nie tak, bo $res powinno być tablicą.


gdy mysql zwraca pusty wynik $row ustawione zostaje na false (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

bo chyba chodziło Ci o $row a nie $res :] ?

Ten post edytował melkorm 4.10.2008, 21:40:07
Go to the top of the page
+Quote Post
michalkjp
post
Post #21





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Ciekawe jest jeszcze to – czy wyświetla coś z $message? Jeśli $res jest FALSE, to nie wchodzi do if'a, tylko do else – a tam powinno dodać do $message tekst. Z tego co zrozumiałem, to nic nie wyświetla.



Cytat(melkorm @ 4.10.2008, 22:38:17 ) *
gdy mysql zwraca pusty wynik $row ustawione zostaje na false (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

bo chyba chodziło Ci o $row a nie $res :] ?


Racja, chodziło o $row.
Go to the top of the page
+Quote Post
eki
post
Post #22





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


ale kicha :/ muszę to dzisiaj zrobić :/
Go to the top of the page
+Quote Post
michalkjp
post
Post #23





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Ehhh... $result = mysql_query($query);

Czy tu czegoś nie brakuje?
Go to the top of the page
+Quote Post
eki
post
Post #24





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


a taki warunek ma prawo bycia? if($row) {
Go to the top of the page
+Quote Post
melkorm
post
Post #25





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


tak. poprostu błąd jest w tym że zapytanie nei zwraca rekordów czyli błąd jest przy polu password wywal to mzień na md5 w bazie też na md5 i zapewne będzie śmigać -.-"
Go to the top of the page
+Quote Post
eki
post
Post #26





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


ok,wiec jak zmienic na md5?
Go to the top of the page
+Quote Post
michalkjp
post
Post #27





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Nie, błąd chyba jest w tym, że w mysql_query nie podaje linka do bazy, tylko samo zapytanie.

Takiego if'a można robić, bo wtedy wartość jest rzutowana na typ bool. Jeśli coś jest w tablicy, to jest true a jeśli tablica jest pusta, to rzutowanie daje false.
Go to the top of the page
+Quote Post
melkorm
post
Post #28





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat
Nie, błąd chyba jest w tym, że w mysql_query nie podaje linka do bazy, tylko samo zapytanie.


poczytaj manula ... gdyby nie mogło wykonać zapytania zwróciło by FALSE - chyba że wykorzystuje nie to połączenie do bazy co trzeba a wątpie by koleżanka* korzystała z większej ilości połączeń niż jedno ;]

eki , a więc w bazie dajesz pole na hasło typu md5 i zapisujesz swoje hasło i przed zapytaniem dajesz:

  1. <?php
  2. $haslo = md5($haslo);
  3. ?>


i nawet nie musisz się bawić w metode oczyszczającą string hasła .... . No i oczywiście w zapytaniu dajesz poprostu:

  1. WHERE haslo = '$haslo'


wsio.

mhmm mało tu dziewczyn - przyzwyczajenie ;]

Ten post edytował melkorm 4.10.2008, 22:07:16
Go to the top of the page
+Quote Post
eki
post
Post #29





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


koleżanka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
michalkjp
post
Post #30





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Cytat(melkorm @ 4.10.2008, 23:03:25 ) *
poczytaj manula ... gdyby nie mogło wykonać zapytania zwróciło by FALSE - chyba że wykorzystuje nie to połączenie do bazy co trzeba a wątpie by kolega korzystał z więkzej ilości połączeń niż jedno ;]


Wiesz, ja już wszystkiego się spodziewam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

W każdym bądź razie życzę powodzenia z tym problemem, bo ja idę czytać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
eki
post
Post #31





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


CODE
if ( $l && $h ){
$haslo = md5($h);
$query = "SELECT username, access,admin FROM user WHERE username='$l' AND haslo=$haslo";
$result = mysql_query($query);
$row = mysql_fetch_array ($result, MYSQL_ASSOC); if($row){


hmm
wyrzuca błąd :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Go to the top of the page
+Quote Post
melkorm
post
Post #32





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. AND haslo = '$haslo'

(IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Ten post edytował melkorm 4.10.2008, 23:05:48
Go to the top of the page
+Quote Post
eki
post
Post #33





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 26.03.2008
Skąd: nowy sącz

Ostrzeżenie: (10%)
X----


błędu już nie wywala,ale dalej nie wchodzi do pętli if($row) {

(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

ok,
posiedziałam trochę nad tym i działa już

dzięki za wskazówki

Ten post edytował eki 5.10.2008, 07:39:59
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 12:12