Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: błędne zapytanie do bazy danych...
Forum PHP.pl > Forum > Przedszkole
niko
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 ?
crash
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...
niko
nadal nie działa..
infernox
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
SongoQ
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.
niko
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
infernox
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. ?>
SongoQ
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.
niko
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 ?
SongoQ
Cytat
w bazie mam niezakodowane hasła - jak sie to tyczy bezpieczeństwa ?
Hasla powinny byc zakodowane, nawet ty nie powinienes ich znac.
niko
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 ?
SongoQ
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'))
niko
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 ?
nospor
  1. <?php
  2.  
  3. $sql='INSERT 
  4. INTO `uzytkownicy`
  5. VALUES (2, 'MOJ_USER', ''.md5('JEGO_HASLO').'')';
  6.  
  7. ?>
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.