• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Sprawdzenie formularza rejestracyjnego z bazą danych.

Object Storage Arubacloud
+1 głos
209 wizyt
pytanie zadane 1 lipca 2015 w SQL, bazy danych przez Klubbers Początkujący (410 p.)
zamknięte 11 sierpnia 2015 przez Klubbers

Witam wszystkich.
Mam pewien problem związany z sprawdzeniem, czy wpisany w formularzu login lub email znajdują się w bazie danych. Stworzyłem takie zapytanie:

$sprawdzlogin = $connect->query("SELECT COUNT login FROM rejestracja WHERE login='$login'");

$sprawdzemail = $connect->query("SELECT COUNT email FROM rejestracja WHERE email='$email'");
  • tabela w bazie danych to rejestracja
  • login znajduje się w kolumnie login
  • email znajduje się w kolumnie email

Następnie ułożyłem taki warunek sprawdzający dla loginu i emaila:

if ($sprawdzlogin !=0) 
	{
        $errorlogin =  '<span style="color:red;">Ten login jest już zajęty</span>';
	}
if ($sprawdzemail !=0) 
	{
        $errormail =  '<span style="color:red;">Ten e-mail przypisany jest do innego konta</span>';
	}

Błąd zapewne jest w zapytaniu do bazy, ponieważ próbując wyrzucić na ekran zmienną $sprawdzlogin nie otrzymuje żadnego rezultatu.
Cały skrypt się wykonuje i rejestruje użytkownika mimo iż taki login lub mail już istnieje. Ma ktoś jakiś pomysł? Może powinienem ułożyć inne zapytanie?
Pozdrawiam i z góry dziękuję za każdą pomoc.

 

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

+3 głosów
odpowiedź 1 lipca 2015 przez Comandeer Guru (601,550 p.)
wybrane 1 lipca 2015 przez Klubbers
 
Najlepsza

Poprawne zapytanie powinno wyglądać mniej więcej tak:

SELECT COUNT(*) AS ile FROM rejestracja WHERE login='$login'

Wówczas przy sprawdzaniu należy sfetchować zapytanie i pobrać pole ile:

$sprawdzlogin = $polaczenie->query("SELECT COUNT(*) AS ile FROM rejestracja WHERE login='$login'")->fetch()['ile'];

BTW poczytaj o prepared statements, bo to najlepszy sposób ochrony przez SQLi.

komentarz 4 lipca 2015 przez Klubbers Początkujący (410 p.)
Dzięki za odpowiedź. Dopiero dziś miałem trochę czasu by podziękować. Niestety robię coś źle i porada od Comandeer u mnie nie działa. Wyskakuje błąd, a po zaledwie 4 dniach przygody z PHP nie jestem jeszcze w stanie zdiagnozować co jest źle. Niemniej jednak odpowiedź bardzo mi pomogła, bo podsunęła pomysł na rozwiązanie. Zastosowałem zapytanie użyte w skrypcie logowania, które sprawdza poprawność wprowadzonych danych. Trochę je zmodyfikowałem i wszystko śmiga :)
Co do prepared statements, to już nie raz się z tym spotkałem na różnych forach, więc na pewno w wolnej chwili dobiorę się do dokumentacji.
Jeszcze raz dzięki. :)

Podobne pytania

0 głosów
1 odpowiedź 542 wizyt
0 głosów
2 odpowiedzi 620 wizyt
pytanie zadane 1 grudnia 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...