Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Jak poprawnie sprawdzać rekordy w db ?
Hikamare
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Już od kilku dni głowię się nad procesem logowania i nie potrafię przebić się przez raczej łatwy problem - jak sprawdzić, czy login znajdujący się w formularzu znajduje się także w bazie danych ? Próbowałem różnych rozwiązań, opierałem się na tym jednak nic nie działa. Aktualnie próbowałem tego rozwiązania :

  1. if ($login == null && $password==null)
  2. {
  3. echo("Wypełnij wszystkie pola");
  4. }
  5. elseif (mysql_query(SELECT 'nick' FROM 'user' WHERE 'nick' IN($login)))
  6. {
  7. Echo("Zostałeś poprawnie zalogowany!");
  8. }
  9. ?>


Jednak wyskakuje mi błąd

Cytat
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files (x86)\WebServ\httpd\index.php on line 17


Gdzie 17 linia to w przypadku tego urywku kodu linia 5. Proszę o szybką pomoc (;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


W tak krótkim skrypcie zrobiłeś kilka błędów:

Cytat
#
if ($login == null && $password==null)
#
{
#
echo("Wypełnij wszystkie pola");
#
}


Takie cos sprawdza czy login I haslo sa puste, jesli jedna z tych danych bedzie pusta to skrypt i tak dalej sie bedzie wykonywać.

Cytat
mysql_query(SELECT 'nick' FROM 'user' WHERE 'nick' IN($login)


Nie powstawiałeś (EDIT: apostrofów/cudzysłowów) w odpowiednich miejscach, dlatego Ci wyskakuje błąd.

Cytat
IN($login)


zamiast tego lepiej użyć operatora `=`, bo teraz użytkownik może podać kilka nicków na raz.

Cytat
#
elseif (mysql_query(SELECT 'nick' FROM 'user' WHERE 'nick' IN($login)))


sprawdzasz tylko czy login istnieje... czyli wystarczy, że użytkownik poda sam login (bez hasła) i już jest zalogowany.

Cytat
#
elseif (mysql_query(SELECT 'nick' FROM 'user' WHERE 'nick' IN($login)))


Taka składnia zawsze zwróci true, w związku z czym użytkownik zawsze się zaloguje, bo funkcja mysql_query zwraca resource. Zapoznaj się z funkcją mysql_num_rows();

Ten post edytował pyro 21.11.2010, 00:08:26


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Hikamare
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


To jest na razie zalążek skryptu, specjalnie nie dałem sprawdzania hasła, gdyż chciałem najpierw sprawdzić login winksmiley.jpg. Mimo wszystko nie pomyślałem o tym warunku z null.
Czy w takim razie mógłbyś pokazać mi jak poprawnie wstawić nawiasy do tego skryptu ?

Ten post edytował Hikamare 21.11.2010, 00:06:31
Go to the top of the page
+Quote Post
daros17
post
Post #4





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


Na przykład:
  1. $connection = mysql_query("select * from users WHERE pass ='$pass'")
  2.  
Go to the top of the page
+Quote Post
pyro
post
Post #5





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Sorrki, przejęzyczyłem się. Miałem na myśli apostrofy/cudzysłowy. Myślę, że dasz radę je wstawić sam, jak chwilkę nad tym pomyślisz. Interesuje Cię tylko część pomiędzy `mysql_query(` a `)`.


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
Hikamare
post
Post #6





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Skorzystałem z rozwiązania darosa, jednak po kliknięciu zaloguj otrzymuję taki błąd :

  1. Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NIE) in C:\Program Files (x86)\WebServ\httpd\index.php on line 17
  2.  
  3. Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files (x86)\WebServ\httpd\index.php on line 17


A przecież nie mam hasła do bazy danych.. Nie rozumiem, ;x
Go to the top of the page
+Quote Post
daros17
post
Post #7





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


Wcześniej masz nawiązane połączenie z bazą? Poczytaj mysql_query

Ten post edytował daros17 21.11.2010, 00:36:40
Go to the top of the page
+Quote Post
Hikamare
post
Post #8





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Tak. Używam funkcji, wcześniej nie było z tym problemu.
Go to the top of the page
+Quote Post
vonski
post
Post #9





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


Cytat(Hikamare @ 21.11.2010, 00:37:07 ) *
Tak. Używam funkcji, wcześniej nie było z tym problemu.


Jakiej funckji? Przed wykonaniem funkcji mysql_query trzeba wcześniej połączyć się z bazą danych za pomocą mysql_connect następnie wybrać odpowiednią bazę danych za pomocą mysql_select_db. Wykonujesz te kroki?


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
Hikamare
post
Post #10





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


W pliku index.php :
  1. <?
  2. require_once ("functions.php");
  3. ?>


W pliku functions.php :
  1. function db_connect() {
  2. $mysql_server = "localhost";
  3. $mysql_admin = "root";
  4. $mysql_pass = "";
  5. $mysql_db = "user";
  6. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  7. or die('Brak połączenia z serwerem MySQL.');
  8. @mysql_select_db($mysql_db)
  9. or die('Błąd wyboru bazy danych.');
  10. }
Go to the top of the page
+Quote Post
daros17
post
Post #11





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


wywal te małpy z pliku functions.php Po drugie ustaw hasło na bazę danych i wpisz je


Ten post edytował daros17 21.11.2010, 01:12:21
Go to the top of the page
+Quote Post
Hikamare
post
Post #12





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


To nic nie zmienia.
Go to the top of the page
+Quote Post
daros17
post
Post #13





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


Zmień hasło i spróbuj
Go to the top of the page
+Quote Post
Hikamare
post
Post #14





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Nie ma hasła - w tym jest problem.
Go to the top of the page
+Quote Post
daros17
post
Post #15





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


No to ustaw hasło. Wejdź http://localhost/phpmyadmin/ Następnie Uprawnienia i jest ikonka Edycji(Edytuj uprawnienia) i będzie tam rubryka hasło

Ten post edytował daros17 21.11.2010, 01:38:46
Go to the top of the page
+Quote Post
Hikamare
post
Post #16





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Okej - problem z bazą rozwiązany, jednak teraz pojawia się kolejny - wrzucam query do skryptu i nic się nie dzieje. Dodałem do bazy rekord - nick : admin, hasło : admin. Wpisuję w formularzu nick : admin i dalej nic. Oto skrypt :
  1. if ($login == null && $password==null)
  2. {
  3. echo("Wypełnij wszystkie pola");
  4. }
  5. else
  6. {
  7. $query = mysql_query("select * from 'user' WHERE 'nick' ='$login'");
  8. $fetch = mysql_fetch_assoc($query['nick']);
  9. echo("Twój login to :".$fetch);
  10. }
  11. ?>

Pokazuje mi się także błąd :

Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files (x86)\WebServ\httpd\index.php on line 20
Go to the top of the page
+Quote Post
Mackos
post
Post #17





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Może zrób tak:
  1. if ($login == null && $password==null)
  2. {
  3. echo("Wypełnij wszystkie pola");
  4. }
  5. else
  6. {
  7. $query = mysql_query("select * from 'user' WHERE 'nick' ='$login'");
  8. $numer=mysql_num_rows($query);
  9. If ($numer != '0') {
  10. echo 'Taki login już istnieje';
  11. } else {
  12. $fetch = mysql_fetch_assoc($query['nick']);
  13. echo("Twój login to :".$fetch);
  14. }
  15. }
  16. ?>


Pisałem na szybko więc moze być gdzieś drobny błąd

Ogółem w taki sposób jak ty próbujesz chyba n ie uda Ci się wypisać wartości z bazy.


Ten post edytował Mackos 21.11.2010, 18:40:24


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
Hikamare
post
Post #18





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Cytat
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files (x86)\WebServ\httpd\index.php on line 21

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files (x86)\WebServ\httpd\index.php on line 25
Twój login to :


Niestety. Nic się nie zmienia ;(
Go to the top of the page
+Quote Post
daros17
post
Post #19





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 27.08.2007

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


spróbuj tak:
  1. if ($login == null && $password==null)
  2. {
  3. echo("Wypełnij wszystkie pola");
  4. }
  5. else
  6. {
  7. $connection = mysql_query("select * from users WHERE login ='$login'")or die (mysql_error());
  8. if (!mysql_fetch_row($connection) == 0) {
  9. echo 'Taki login już istnieje';
  10. }
  11. else
  12. {
  13. $connection = mysql_query("INSERT INTO users SET login='$login");
  14.  
  15. echo 'Login: '.$login;
  16.  
  17. }
  18. }
Go to the top of the page
+Quote Post
Hikamare
post
Post #20





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 6.10.2010
Skąd: Żory

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


Daros17 ! Uwielbiam Cię ! Dziękuję za pomoc. Działa (;
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 19:12