Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Sprawdzenie czy znalazł rekord, i rozpoczęcie sesji, jeśli znalazł pasujący login i hasło
Dukov
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

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


Hej mam pewien problem, chciałem napisać skrypt logowania, jednak utknąłem na
  1. <?php
  2. $password = $_POST['pass'];
  3. try
  4. {
  5. $pdo = new PDO('mysql:host=localhost;dbname=user', 'root', '');
  6.  
  7.  
  8. $log = $_POST['login'];
  9. $stmnt = $pdo->query("SELECT login, pass FROM users WHERE login = '".$_POST['login']."' AND pass = '".sha1($password));
  10.  
  11.  
  12.  
  13. }
  14. catch(PDOException $e)
  15. {
  16. echo 'Błąd połączenia. Słowem do tyłka jak zawsze. ' . $e->getMessage();
  17. }
  18.  
  19.  
  20.  
  21.  
  22. ?>


Próbowałem wrzucić to do jakiejś $row pętlą foreach i porównać np. $row['login'] z _POST['login'], próbowałem
  1. $result = $stmnt->fetch(PDO::FETCH_ASSOC);
  2. if(count(result) <> 0) { /* jest */ } else { /* nie ma */ }
albo
  1. if($stmnt->rowCount() <> 0) { /* znalazł usera */ } else { /* nie znalazł usera */ }


ogólnie od wczoraj przeglądam w chole...dużo tutków, poradników, a nic nie działa. Uczę się dopiero php. czy raczej staram się uczyć, więc proszę o wyrozumiałość, że nie potrafię sobie jeszcze z nim poradzić.

Drugie pytanie przy okazji sha1[cośtam] zrobiłem dobrze? Bo coś mi tam nie pasuje. W bazie mam tak zaszyfrowane pole hasło TINYTEXT, login też TINYTEXT oczywiście bez szyfrowania.

EDIT
A jeszcze jedno, jak mogę w ogóle sprawdzić co zwróciło moje zapytanie do bazy?

Ten post edytował Dukov 22.03.2017, 18:15:11
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zobacz funkcję password_hash/verify. Binduj parametry bo teraz otworzyłeś atakującemu dostęp pełen (sql injection). W stopce mam kurs oraz poradnik m.in. logowania i rejestracji. var_dump($zmienna) poda wszystkie dane.
Go to the top of the page
+Quote Post
Dukov
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

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


Niech się włamuje, tam nic nie będzie ważnego. Chcę sam próbować pisać, po kroku, jak poznam coś nowego, to oczywiście zmodyfikuję skrypt. W ramach nauki php umyśliłem sobie stonkę, obsuga php, logujesz się, możesz wrzucić jakiś plik, wstawić jego opis, zaznaczyć czy ma być dostępny dla zalogowanych czy publicznie lub wygenerować link do niego i wysłać znajomemu. Nie od razu Rzym zbudowano (IMG:style_emoticons/default/smile.gif) Co do funkcji, mógłbyś mi je bardziej wyjaśnić i pokazać jak mam je zastosować? PHP w zasadzie nie znam, znam JS, bash, Pascal i trochę C ale php to póki co dla mnie czarna magia i wymyślam sobie coś i małymi kroczkami próbuję dojść do tego co i jak. Choć może jak na naukę rzuciłem się na zbyt głęboką wodę zaczynając od logowania, jeszcze podpiętego pod baze i coś na kształt CMSa dojdzie. A bindowanie to dla mnie np. zmapowanie czegoś pod klawisze albo coś takiego no i oczywiście związanie, więc możesz jasniej?

Ten post edytował Dukov 22.03.2017, 19:29:37
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


I dlatego właśnie powinieneś poczytać żeby wiedzieć o co chodzi. Zabezpieczenia to nie coś co się pomija i ewentualnie dodaje później bo to najróżniejsza luka w webie. Ucz się od razu robić kod porządnie. Błędy mogą być w logice, nieznajomości funkcji ale nie ma sensu dochodzić do tego samemu jesli można uczyć się na poprawnym kodzie.
Go to the top of the page
+Quote Post
Niree
post
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


  1. if($stmnt->rowCount() <> 0)


Ten warunek to chyba jakiś żart? (IMG:style_emoticons/default/tongue.gif)

Jeśli $stmnt będzie większy i mniejszy od 0 to znalazł usera? (IMG:style_emoticons/default/arrowheadsmiley.png)
Go to the top of the page
+Quote Post
Dukov
post
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 21.03.2017

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


Hmm, no tak żart, sam się zastanawiam skąd on się tam wziął... Aczkolwiek jeśli w php wartości mogą mieć falsy lub truthy, to dlaczego nie miałoby być tam 0?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jeśli $stmnt będzie większy i mniejszy od 0 to znalazł usera?

Jak ty czasami grypsa walniesz....

<> - operator roznosci
http://php.net/manual/en/language.operators.comparison.php

edit
Inna sprawa, ze tam poprostu powinno byc wieszke od 0 (> 0) a nie rozne od 0 (<> 0)
Go to the top of the page
+Quote Post

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: 24.08.2025 - 19:30