Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Błąd mysql_fetch_array()
porywacz
post 15.04.2012, 14:15:53
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Witam, napisałem proste logowanie w php ale wywala mi taki błąd:
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\Program Files\WebServ\WebServ\httpd-users\xxcheats\zaloguj.php on line 19


Tu jest kod:
  1. <?php
  2. $login = $_POST['login'];
  3. $haslo = $_POST['haslo'];
  4. $login = addslashes($login);
  5. $haslo = addslashes($haslo);
  6. $login = htmlspecialchars($login);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. if(isset($login) && isset($haslo) && !empty($login) && !empty($haslo)) {
  11. $users_first = mysql_query("select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`");
  12. $users = mysql_fetch_array($users_first, MYSQL_NUM);
  13.  
  14. if(!$users[id] < 0) {
  15. $_SESSION['login'] = $login;
  16. $_SESSION['haslo'] = $haslo;
  17.  
  18. echo('Pomyślnie zalogowałeś się jako<font color="red">'.$login.'</font>.');
  19. } else {
  20. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  21. }
  22. } else {
  23. echo('Logowanie nie powiodło się, musisz wypełnić wszystkie pola!');
  24. }
  25. ?>


Z góry dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post
Ruch Radzionków
post 15.04.2012, 14:19:24
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

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


  1. $users_first = mysql_query("select COUNT(*) from `uzytkownicy` where `login` = `real_escape_string($login)` and `haslo` = `$haslo`");


--------------------
Pomogłem daj pomógł
Go to the top of the page
+Quote Post
xxdrago
post 15.04.2012, 14:20:01
Post #3





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Wklej to zapytanie:
  1. "select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`"

do php my admin i zobacz czy działa. PS: masz bład w zapytaniu tutaj : `login` == ma być tylko raz =

Ten post edytował xxdrago 15.04.2012, 14:20:25


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 14:24:13
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Nadal nie działa : ( Ten sam błąd wyskakuje :/
Go to the top of the page
+Quote Post
xxdrago
post 15.04.2012, 14:26:17
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Nauczę cię prostej techniki:

robisz tak:
  1. $zap = "select COUNT(*) from `uzytkownicy` where `login` == `real_escape_string($login)` and `haslo` = `$haslo`";
  2. echo $zap;
  3. $users_first = mysql_query($zap);

Wklejasz to co ci wyświetla zmienna $zap do phpmyadmin i pokazuje ci co masz źle.


http://phpedia.pl/wiki/Supplied_argument_i...result_resource

Ten post edytował xxdrago 15.04.2012, 14:30:13


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 14:53:43
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Już wiem co było źle w zapytaniu, ale poprawiłem i nadal nie działa ;d

Teraz mam tak:
  1. <?php
  2. $login = $_POST['login'];
  3. $haslo = $_POST['haslo'];
  4. $login = addslashes($login);
  5. $login = htmlspecialchars($login);
  6. $haslo = md5($haslo);
  7.  
  8. include('connect_mysql.php');
  9.  
  10. if ($_GET['login'] != '') { //jezeli ktos przez adres probuje kombinowac
  11. }
  12. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  13. }
  14.  
  15. if(isset($login) && isset($haslo) && !empty($login) && !empty($haslo)) {
  16. $users = mysql_fetch_array(mysql_query("select count(*) from `uzytkownicy` where `login` = '$login' and `haslo` = '$haslo'"));
  17. if($users[0] > 0) {
  18. $_SESSION['login'] = $login;
  19. $_SESSION['haslo'] = $haslo;
  20.  
  21. echo('Pomyślnie zalogowałeś się jako<font color="red">'.$login.'</font>.');
  22. } else {
  23. echo('Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś wszystkie pola.');
  24. }
  25. } else {
  26. echo('Logowanie nie powiodło się, musisz wypełnić wszystkie pola!');
  27. }
  28. ?>


Teraz w php my admin nie wyświetla błędu ale nadal mi nie działa logowanie ;o Kto może wie czemu? ;/

Wyświetla mi się komunikat Logowanie się nie powiodło, sprawdź czy poprawnie wypełniłeś pola. A na pewno wprowadzam poprawne dane; *(
Go to the top of the page
+Quote Post
xxdrago
post 15.04.2012, 16:40:15
Post #7





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Daj tabele oraz rekordy z bazy danych.

  1. if($users[0] > 0) {

Po co tak komplikować sobie życie?

Lepiej jest zrobić tak :
  1. if($users[0] = 1) {


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 17:30:43
Post #8





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Ok, twoja metoda zadziałała, loguję się... Tylko, że loguje się nie zależnie od tego, co wpiszę w pola login i hasło ;d Mogę wpisać nawet "jf234hr9f8shdfji42hrt098hsdfljkagfulksdahf" a i tak się zaloguje... sad.gif

Ktoś pomoże? Cały dzień dzisiaj kombinuję z tym skryptem i nadal nie wiem co jest nie tak ;/
Go to the top of the page
+Quote Post
-Gość-
post 15.04.2012, 17:42:11
Post #9





Goście







xxdrago chodziło zapewne o warunek
  1. if($users[0] == 1) {
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 17:44:31
Post #10





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


if($users[0] == 1) {

}
Też nie działa ;d Teraz wgl mnie nie loguje nawet jak wpisuje dobre dane sad.gif
Go to the top of the page
+Quote Post
-Gość-
post 15.04.2012, 17:50:32
Post #11





Goście







spróbuj z tym zapytaniem i tym warunkiem
  1. $users = mysql_num_rows(mysql_query("select count(*) from `uzytkownicy` where `login` = '".$login."' and `haslo` = '".$haslo."'"));
  2.  
  3. if($users == 1) {
  4.  
  5. }
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 18:02:18
Post #12





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Teraz znowu loguje na każdym loginie i haśle :/
Go to the top of the page
+Quote Post
xxdrago
post 15.04.2012, 19:11:30
Post #13





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Kurde dasz w końcu swoją tabele ?

  1. if ($_GET['login'] != '') { //jezeli ktos przez adres probuje kombinowac
  2. }
  3. if ($_GET['haslo'] != '') { //jezeli ktos przez adres probuje kombinowac
  4. }

Ciekawe... Nie wpadłbym na to ... snitch.gif


  1. isset($login) && isset($haslo) && !empty($login) && !empty($haslo


if ($_POST['login'] && $_POST['haslo'])
{
}

Zrób sobie tak bo jak widzę jak kombinujesz to aż płakać się chcę łatwiej będzie...

zamiast count lepiej zastosować jest http://php.net/manual/en/function.mysql-num-rows.php

Ten post edytował xxdrago 15.04.2012, 19:14:34


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
porywacz
post 15.04.2012, 22:03:36
Post #14





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 16.03.2012
Skąd: Austria

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


Chodzi ci o table z bazy danych?
Here:

Rekordy nie wiem po co ci ale masz:


Już nie wiem czy będzie mi to kiedyś działało czy nie ;D
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 Wersja Lo-Fi Aktualny czas: 5.07.2025 - 11:31