Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]skrypt logowania
eki
post 4.10.2008, 20:07:03
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 - 19)
melkorm
post 4.10.2008, 20:15:47
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 4.10.2008, 20:19:05
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 4.10.2008, 20:21:25
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 4.10.2008, 20:26:29
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 4.10.2008, 20:30:00
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 4.10.2008, 20:38:52
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 4.10.2008, 20:44:31
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 4.10.2008, 20:48:27
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 4.10.2008, 20:50:33
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 4.10.2008, 21:00:00
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 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']}");

smile.gif
Go to the top of the page
+Quote Post
melkorm
post 4.10.2008, 21:01:09
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 4.10.2008, 21:07:41
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 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 4.10.2008, 21:14:44
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 4.10.2008, 21:15:53
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 4.10.2008, 21:22:30
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 4.10.2008, 21:24:36
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 4.10.2008, 21:28:28
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 4.10.2008, 21:35:54
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 4.10.2008, 21:38:17
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 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 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

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:07