Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> błędne zapytanie do bazy danych..., gdzie tkwi błąd ?
niko
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


witam smile.gif mam problem smile.gif jest to system logowania:
za wszysytko odpowiedzialna jest funkcja :

  1. <?php
  2.  
  3. function bazadan($t_dalej,$lg,$t_nazwa_klienta,$t_haslo,$login_0,$login_1,$login_2,$login_3,$t_kliknij_tutaj,$t_tylkodlazalogowanych,$t_nasz,$t_abysiezalogowac,$t_nowy,$t_abysiezarejestrowac,$full_url) {
  4.         $query = mysql_query(&#092;"SELECT * FROM uzytkownicy WHERE 'user_name' = \" . $_POST['login'] . \"  \");
  5.         $fetch = mysql_fetch_array($query);
  6.         if ( $fetch ) 
  7.         {
  8.           if ( md5( $_POST['haslo'] ) == $fetch['user_pass'] )
  9.           {
  10. #Logowanie zakończone sukcesem            
  11.             $_SESSION[&#092;"login\"]; 
  12.             
  13.             if (!isset($full_url)){
  14.                 $full_url=$full_url;
  15.             }else{
  16.                 $full_url=&#092;"index.php\";
  17.             }
  18.             
  19.             header(&#092;"Location: \".$full_url.\"?\" . SID);
  20.           }
  21.           else
  22.           {
  23. #Przykro nam, ale podane hasło jest błędne            
  24.            }
  25.         }
  26.         else
  27.         {
  28. #Podany użytkownik nie istnieje w bazie danych            
  29.         }
  30. }
  31. ?>


funkcja logowanie przekazuje dwie zmienne : 'login' i 'haslo'


baza wygląda tak : [plik *.sql]

  1. CREATE TABLE `uzytkownicy` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `user_pass` char(255) DEFAULT NULL,
  4. `pass_name` char(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. )


i teraz problem jest w tym ze wywala mi :
warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/funkcje.php on line 72


o co mu biega ? smile.gif i jak można do tej bazy dodać przykładowego usera lub zmodyfikować sobie zapis by załadować ja na serwa już z przykładowym userem i hasłem ?

Ten post edytował niko 12.07.2005, 20:01:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Zły dział. Przenoszę: Skrypty php -> php Początkujący

Popraw zapytanie na:
  1. <?php
  2. $query = mysql_query('SELECT * FROM uzytkownicy WHERE user_name = \"'.$_POST['login'].'\"');
  3. ?>

Więcej błędów nie widać, bo wkleiłeś masę zbędnego kodu...


--------------------
Go to the top of the page
+Quote Post
niko
post
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


nadal nie działa..
Go to the top of the page
+Quote Post
infernox
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.02.2005
Skąd: Krakow

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


dodaj za

  1. CREATE TABLE `uzytkownicy` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `user_pass` char(255) DEFAULT NULL,
  4. `pass_name` char(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. )


takie cos

  1. INSERT
  2. INTO `uzytkownicy` VALUES (1, 'TWOJE_HASLO', 'TWOJ_USER');



wtedy doda ci odrazu do tabeli wpis


apropo zapytania nie wiem czy zauwazyles ale w zapytaniu porownujesz pole user_name z podanym loginem w bazie nie masz takiego pola, masz tylko `user_pass` i `pass_name` popraw to i bedzie dzialac

Ten post edytował infernox 12.07.2005, 20:19:07
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Do funkcji nie przekazales polaczenia z baza wiec Ci nie zadziala zapytanie.

Taka uwaga, troszeczke zle to zorganizowales, poniewaz w bazie powinny byc hasla zakodowane a dodatkow po co wyciagasz haslo jak mozesz to zrobic w zapytaniu i sprawdzac czy Ci zwroci jakies rekord.


--------------------
Go to the top of the page
+Quote Post
niko
post
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


połączenie z bazą jest na samej górze serwisu
  1. <?php
  2.  
  3. $db=mysql_connect(&#092;"localhost\", \"$sql_user\", \"$sql_pass\") or die(infobox($t_npszs,$wystapil_blad,'error','',$lg));
  4. mysql_select_db(&#092;"$sql_base\", $db) or die(infobox($t_pzlzbd,$wystapil_blad,'error','',$lg));
  5.  
  6. ?>


możesz rozwinąc swój watek ?

nie bardzo rozumiem

  1. <?php
  2.  
  3. $query = mysql_query('SELECT * FROM uzytkownicy WHERE user_name = \"'.$_POST['login'].'\"');
  4. $fetch = mysql_fetch_array($query);
  5.  
  6. ?>


on sie pluje o to :
  1. <?php
  2. $fetch = mysql_fetch_array($query);
  3. ?>



--
Uzywaj tagow smile.gif


Ten post edytował SongoQ 12.07.2005, 20:45:04
Go to the top of the page
+Quote Post
infernox
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 6.02.2005
Skąd: Krakow

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


jemu chodzi o to ze wewnatrz funkcji niema informacji o polaczeniu z baza danych.Slugeruje aby przekazac do funkcji zmienna
  1. <?php
  2. $db
  3. ?>
ja jednak slugeruje najpierw poprawic to co ja npisalem.

  1. <?php
  2.  $query = mysql_query('SELECT * FROM uzytkownicy WHERE pass_name = \"'.$_POST['login'].'\"');
  3. ?>


sprawdzilem to czy wewnatrz funkcji widac informacje o polaczeniu i u mnie to zadzialalo moze dlatego ze uzywam
  1. <?php
  2. mysql_pconect()
  3. ?>


Ten post edytował infernox 12.07.2005, 20:37:46
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Polaczenie z baza masz poza funkcja a zmnienan odpowiedzialna za funkcje nie jest globalna czyli nie zadziala Ci wewnetrz fukcji.

Teraz zapytanie, zaluzmy ze masz hasla w bazie kodowane
  1. SELECT id
  2. FROM tabela WHERE haslo = md5('$haslo') AND login = '$login'


Jesli jest taka mozliwosc w bazie to po co komplikowac sobie zycie.


--------------------
Go to the top of the page
+Quote Post
niko
post
Post #9





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


wywaliłem funkcje zrobiłem sobie w pliku działa ale teraz jak wpisałem do bazy hasło to wywala mi ze hasło jest błędne - hodzi o kodowanie - jak moge w bazie przez phpmyadmina dodawać usera tak zeby po wpisaniu hasła na stronie działało ?


czy jeśli jest hasło i login przekazywane ze strony index.php na strone login.php
to czy trzeba to dawać w md5 ?

czy wystarczy

if ( $_POST['haslo'] == $fetch['user_pass'] )

w bazie mam niezakodowane hasła - jak sie to tyczy bezpieczeństwa ?

Ten post edytował niko 12.07.2005, 21:33:16
Go to the top of the page
+Quote Post
SongoQ
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
w bazie mam niezakodowane hasła - jak sie to tyczy bezpieczeństwa ?
Hasla powinny byc zakodowane, nawet ty nie powinienes ich znac.


--------------------
Go to the top of the page
+Quote Post
niko
post
Post #11





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


no to jak można sobie je tam zakodować dodając np przez panel nowego użytkownika i jego hasło ?

jak wepchnąć to z formularza do bazy ?
Go to the top of the page
+Quote Post
SongoQ
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Z php myadmina polecam skorzystac z wyboru funkcji password, wybierasz typ podczas wprowadzania tekstu.

Z SQLa
  1. INSERT
  2. INTO tabela (haslo) VALUES (PASSWORD('haslo'))


--------------------
Go to the top of the page
+Quote Post
niko
post
Post #13





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


normalnie daję cos takiego :

INSERT
INTO `uzytkownicy`
VALUES (2, 'MOJ_USER', 'JEGO_HASLO');

i gra ale hasła są nie zakodowane - jak teraz dawać żeby były w md5 ?
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




  1. <?php
  2.  
  3. $sql='INSERT 
  4. INTO `uzytkownicy`
  5. VALUES (2, 'MOJ_USER', ''.md5('JEGO_HASLO').'')';
  6.  
  7. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 - 17:42