Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Sprawdzenie czy znalazł rekord
Forum PHP.pl > Forum > Przedszkole
Dukov
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?
viking
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.
Dukov
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 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?
viking
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.
Niree
  1. if($stmnt->rowCount() <> 0)


Ten warunek to chyba jakiś żart? tongue.gif

Jeśli $stmnt będzie większy i mniejszy od 0 to znalazł usera? arrowheadsmiley.png
Dukov
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?
nospor
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)
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.