Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]System logowania problem z działąniem skryptu
-Kociowisko-
post
Post #1





Goście







Witajcie. OD razu mówię że jestem dopiero po kursie PHP i żeby poznać wiele funkcji oraz innych rzeczy związanych z PHP postanowiłem utworzyć cms. I mam taki problem, że mimo wpisania dobrego loginu i hasła wyskakuje komunikat że błędne dane, Tutaj znajduje się kod:

System logowania
Go to the top of the page
+Quote Post
boro11
post
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 11
Dołączył: 9.07.2010
Skąd: Warszawa

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


  1. <form method="post" action="logowanie.php">

zamień na:

  1. <form method="post" action="">
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #3





Goście







To nie jest związane z problem. Ale dzięki za chęci (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Niktoś
post
Post #4





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Bo masz zchrzanionego Selecta , który żadnych danych nie będzie ci zwracał z bazy danych.
Zobacz jak wygląda składnia select.Mała podpowiedź ,nazwy kolum,tabel nie daje się w apostrofy,ale jakbyś dawał "or die" to byś wiedział że coś nie gra w tej kwerendzie.

Ten post edytował Niktoś 10.03.2012, 18:40:31
Go to the top of the page
+Quote Post
GoOx
post
Post #5





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


  1. <?php
  2. if(isset($_POST['zaloguj'])) {
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $haslo = md5($haslo);
  6.  
  7. if (empty($login)) {
  8. echo 'Pole z loginem nie zostało wypełnione!!!';
  9. }
  10. if(empty($haslo)) {
  11. echo 'Pole z hasłem nie zostało wypełnione!!!';
  12. }
  13.  
  14. $zapytanie = mysql_query("SELECT COUNT(*) FROM 'uzytkownicy' WHERE `login` = '$login' AND `haslo` = '$haslo'");
  15. if($zapytanie[0] == 0) {
  16. echo 'Podane dane są nieprawidłowe';
  17. }
  18. else {
  19. $_SESSION['login'] = $login;
  20. $_SESSION['haslo'] = $haslo;
  21. header("Location:index.php");
  22. }}
  23. ?>


zmień na:

  1. <?php
  2. if(isset($_POST['zaloguj'])) {
  3. $login = $_POST['login'];
  4. $haslo = $_POST['haslo'];
  5. $haslo = md5($haslo);
  6.  
  7. if (empty($login)) {
  8. $blad++
  9. echo 'Pole z loginem nie zostało wypełnione!!!';
  10. }
  11. if(empty($haslo)) {
  12. $blad++
  13. echo 'Pole z hasłem nie zostało wypełnione!!!';
  14. }
  15. if($blad == 0) {
  16. $zapytanie = mysql_query("SELECT COUNT(*) FROM `uzytkownicy` WHERE `login` = '$login' AND `haslo` = '$haslo'");
  17. if(mysql_num_rows($zapytanie) >0) {
  18. $_SESSION['zalogowany'] = true;
  19. $_SESSION['login'] = $login;
  20. }
  21. }
  22. }
  23. ?>


nie sprawdziałem czy działa jak pominalem jakąs klamerkę lub jest jakiś błąd to pisz.

Ten post edytował GoOx 10.03.2012, 18:52:46
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


(IMG:style_emoticons/default/specool.gif) ,będzie działać, a ja chyba po hiszpańsku pisze.
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #7





Goście







To co napisałeś trochę pomgogło, będy które zrobiłeś poprawiłem ale teraz niezależnie jakie bedzie haslo to i tak przekieruje na podnaa stronę. Bo zawsze zwróci jakąś wartość a chce, żeby tylko ci co wpisali porpawnie przekierowywało do podanej podstrony. Tutaj jest kod:

http://wklej.org/id/706372/
Go to the top of the page
+Quote Post
Niktoś
post
Post #8





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Widzę, że poprawiłeś Selecta, to jednak po hiszpańsku nie pisze (IMG:style_emoticons/default/smile.gif) .
Zamień kwerende:
  1. $zapytanie = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo'"));


na:
  1. $zapytanie = mysql_fetch_row(mysql_query("IF EXISTS (SELECT login FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo') SELECT 1 else SELECT 0 "));


a reszte pozostaw bez zmian.Daj odpowiedź czy działa

Ten post edytował Niktoś 10.03.2012, 19:47:44
Go to the top of the page
+Quote Post
GoOx
post
Post #9





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


bo:

  1. if(mysql_num_rows($zapytanie) >0) {


to jest potrzebne! to sprawdza czy coś w bazie danych jest większe niż 0 bo jeśli tego czegoś nie ma to jest 0 więc to musi być!

a i do zapytania dodaj LIMIT 1 na sam koniec

  1. if ($zapytanie[0] != 0) {

moim zdaniem to jest złe rozwiązanie.

Ten post edytował GoOx 10.03.2012, 19:41:17
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #10





Goście








Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/kociowis/public_html/cms/logowanie.php on line 37
Go to the top of the page
+Quote Post
GoOx
post
Post #11





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


A i tem sposobem wykonałem logowanie do mojego portalu. bot o co pdałem było lepsze niz miałem ;p

I działa.
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #12





Goście







No ok tylko mówię, że to co podał Niktoś wywala błąd
Go to the top of the page
+Quote Post
Niktoś
post
Post #13





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Spróbuj teraz być może to wina tego że nie dałem spacji.Poprawiłem u góry.
Go to the top of the page
+Quote Post
-Gość-
post
Post #14





Goście







Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/kociowis/public_html/cms/logowanie.php on line 37

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /home/kociowis/public_html/cms/logowanie.php on line 38

Kod znajduje się tutaj:
http://wklej.org/id/706390/
Go to the top of the page
+Quote Post
Niktoś
post
Post #15





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Ale zabiłeś mi ćwieka ,te pytanie poniżej jest pod MSSQL ,myślałem że będzie poprawne.
  1. $zapytanie = mysql_fetch_row(mysql_query("IF EXISTS (SELECT login FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo') SELECT 1 else SELECT 0 "));


Do MYSQL wygląda tak ,ale nie wiem czy za działa :
  1. $zapytanie = mysql_fetch_row(mysql_query("SELECT IF(EXISTS (SELECT login FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo'),1,0) "));


Dla mnie leży i kwiczy w porównaniu do MSSQL te MYSQL.Ale widze,że masz już rozwiązanie.
Próbowałem podać lepsze ,bo gdzieś czytałem ,że kwerenda sprawdzająca istnienie/występowanie rekordu jest 4 razy szybasza od zliczania ich poprzez count.Może ktoś inny ją poprawi dla potomności w MySQL,dla MSSQL na 100% będzie działać.

Ten post edytował Niktoś 10.03.2012, 20:26:25
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #16





Goście







Jeszcze został drugi błąd
Go to the top of the page
+Quote Post
Niktoś
post
Post #17





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

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


Nie możesz używać dwóch funkcji:
  1. $zapytanie = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo'"));
  2. if(mysql_num_rows($zapytanie) >0) {
  3. $_SESSION['zalogowany'] = true;
  4. $_SESSION['login'] = $login;
  5. header('Location:index.php');


Daj tak:
  1. $zapytanie = mysql_num_rows(mysql_query("SELECT COUNT(*) FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo'"));
  2. if($zapytanie>0) {
  3. $_SESSION['zalogowany'] = true;
  4. $_SESSION['login'] = $login;
  5. header('Location:index.php');


Ten post edytował Niktoś 10.03.2012, 20:44:05
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #18





Goście







Troche to pomogło błędy znikły ale nadal nie sprawdza czy login jest poprawny, Byłbym bardzo wdzięczny gdyby ktoś skopiował kod i sprawdził czy wszystko działa i wkleił poprawny bo ja już nerwowo nie wytrzymuje (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
spokoloko123
post
Post #19





Grupa: Zarejestrowani
Postów: 114
Pomógł: 12
Dołączył: 15.02.2012

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


Swoją drogą nie powinno się szyfrować haseł md5. Nawet w manualu o tym jest.
Go to the top of the page
+Quote Post
-Kociowisko-
post
Post #20





Goście







Zmieniłem na sha1? Teraz będzie dobrze. Ale ta zmiana i tak nic nie poprawiła...
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: 25.08.2025 - 19:43