Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] Logowanie
Forum PHP.pl > Forum > PHP
zaba12
Mam problem nie loguje i do tego pokazuje błąd ;/

  1. <? function zaloguj() {
  2. global $cmd,$nick,$haslo;
  3. $haslo=md5($_POST['haslo']);
  4. $query = &#092;" SELECT * FROM uzytkownicy where login = '\".$_POST['login'].\"' AND haslo = '\".$_POST['haslo'].\"' \";
  5. $result = mysql_query($query);
  6. if($result && mysql_affected_rows($result) > 0)
  7. {
  8. echo '&nbsp;Zostałe&para; zalogowany';
  9. }
  10. else
  11. {
  12.  echo '&nbsp;bledny login lub haslo';
  13. }
  14.  
  15. } 
  16. ?>


oto błąd

Kod
Warning: mysql_affected_rows(): supplied resource is not a valid MySQL-Link resource in C:\strony\gry\module\login.php on line 8
bledny login lub haslo
ikioloak
Pisze dzis juz chyba 4 raz: jak robisz mysql_query() to daj pozniej die(mysql_error()); czyli:
  1. <?php
  2.  
  3. $result = mysql_query($query) or die(mysql_error());
  4.  
  5. ?>

i bedzie jasniej.
zombie
1. nie sądzę, żeby po query z SELECT'em wystąpiły mysql_affected_rows... w siódmej linii powinno raczej pojawić się np.:
  1. <?php
  2. if (mysql_num_rows($result) > 0){
  3. ?>
2. błąd w $result najprościej sprawdzić zmieniając szóstą linię na
  1. <?php
  2. $result = mysql_query($query) or die (mysql_error());
  3. ?>
zaba12
Dzieki zombie błędu już nie ma ale nieda się zalogowac teraz ;/ pisze tylko to
Kod
Logowanie

bledny login lub haslo
zombie
no to znaczy, że nie znalazł użytkownika o podanym loginie i haśle. Sprawdź pomiędzy 5 i 6 linią, przez np.
  1. <?php
  2. echo($query);
  3. ?>
czy do zapytania w ogóle docierają istniejące w bazie login i haslo.
zaba12
hmm chyba widzi


Kod
Logowanie

SELECT * FROM uzytkownicy where login = 'admin' AND haslo = 'admin'  



bledny login lub haslo
ikioloak
a haslo w bazie nie jest czasem w md5()?
nie powinno byc czasem:
  1. <?php
  2.  
  3. $query = &#092;" SELECT * FROM uzytkownicy where login = '\".$_POST['login'].\"' AND haslo = '\".$haslo.\"' \";
  4.  
  5. ?>

tak wnioskuje przynajmniej z twojego kodu
zaba12
ok jest zakodowane ale nadal nie loguje;/

Kod
SELECT * FROM uzytkownicy where login = 'admin' AND haslo = 'db42fda9c404b99262b0855c173c764b'  
zombie
a dodałeś do bazy takiego użytkownika? odpowiedź na zapytanie jest negatywna, więc pewnie nie
zaba12
tak taki uzytkownik jest w bazie danych
zombie
no coz... nie jestem przekonany, ale bez dostępu do całości skryptu i bazy nie umiem Ci pomóc
zaba12
Oki oto sql


  1. CREATE TABLE `uzytkownicy` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `nick` varchar(20) NOT NULL DEFAULT '',
  4. `login` varchar(20) NOT NULL DEFAULT '',
  5. `haslo` varchar(30) NOT NULL DEFAULT '',
  6. `email` varchar(40) NOT NULL DEFAULT '',
  7. `url` varchar(30) NOT NULL DEFAULT '',
  8. `gg` varchar(30) NOT NULL DEFAULT '',
  9. `miejscowosc` varchar(30) NOT NULL DEFAULT '',
  10. `zainteresowania` varchar(25) NOT NULL DEFAULT '',
  11. `kto` varchar(25) NOT NULL DEFAULT 'user',
  12. KEY `id` (`id`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  14.  
  15. --
  16. -- Zrzut danych tabeli `uzytkownicy`
  17. --
  18.  
  19. INSERT
  20. INTO `uzytkownicy` VALUES (1, 'admin', 'admin', 'db42fda9c404b99262b0855c173c76', 'zaba141@o2.pl', '', '', 'Gliwice', '', 'user');


a to caly kod php

login.php
  1. <?php 
  2. //Engine strony
  3. include (&#092;"config.php\");
  4. include (&#092;"functions.inc\");
  5. include (&#092;"module/login.php\");
  6. //Koniec Engine strony
  7.  
  8. function pokaz() {
  9. global $cmd,$login,$haslo;
  10. echo &#092;"<b>&nbsp;Logowanie</b><br>\";
  11. echo &#092;"<br>\";
  12. if ($cmd == '') {
  13.  
  14. zaloguj();
  15.  
  16. }
  17.  
  18. }
  19.  
  20.  
  21. //Ładowanie Skóry
  22. include (&#092;"theme/$theme/index.php\");
  23. ?>


a to jest module/login.php

  1. <?
  2.  
  3. function zaloguj() {
  4. global $cmd,$login,$haslo;
  5. $haslo=md5($_POST['haslo']);
  6. $query = &#092;" SELECT * FROM uzytkownicy where login = '\".$_POST['login'].\"' AND haslo = '\".$haslo.\"' \";
  7. $result = mysql_query($query) or die (mysql_error());
  8. if (mysql_num_rows($result) > 0)
  9. {
  10. echo '&nbsp;Zostałe&para; zalogowany';
  11. }
  12. else
  13. {
  14.  echo '&nbsp;bledny login lub haslo';
  15. }
  16.  
  17.  
  18. }
  19.  
  20.  
  21. ?>
zombie
md5() - hash ma 32 znaki. Ty ustaliłeś na 30, więc do bazy dopisało się tylko pierwsze 30 znaków hasła. zatem hasło w bazie jest inne, niżw zapytaniu.
zaba12
aha dzięki juz działa mam jeszcze jedno pytanie jak mozna zrobic zeby po zalogowaniu ten kodzik
Kod
<table border="0" cellspacing="0" cellpadding="2" align="right">
<tr>
<td><form name="logowanie" action="login.php" method="post"></td>
<td><input class="input" type="text" name="login" size="10" /></td>
<td><input class="input" type="text" name="haslo" size="10" /></td>
<td><input src="theme/glowna/input/wyslij.gif" type="image" name="login" value="Zaloguj" /></td>
<td></form></td>
</tr>
</table>


zmienial się np na to.

Twoje konto, Dodaj artykul itp
zombie
poszukaj informacji o sesjach na forum. za szeroki temat, żeby tłumaczyć i powtarzać to samo setny raz.
zaba12
a mam inny problem oto on

Kod
Warning: mysql_query() [http://www.mysql.com/doc]: Query was empty in C:\strony\gry\module\login.php on line 22

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\strony\gry\module\login.php on line 23


a to kod

  1. <?
  2.  
  3. function user() {
  4. global $cmd,$nick,$login,$haslo,$email,$url,$gg,$miejscowosc,$zainteresowania,$kto;
  5. if ($kto == '\".$login.\"')
  6. $query1 = &#092;"SELECT * FROM uzytkownicy WHERE login='\".$login.\"';\";
  7. $result1 = mysql_query ($query1);
  8. while ($row = mysql_fetch_array($result1)) {
  9. $id = $row['id'];
  10. $nick = $row['nick'];
  11. $login = $row['login'];
  12. $haslo = $row['haslo'];
  13. $email = $row['email'];
  14. $url = $row['url'];
  15. $gg = $row['gg'];
  16. $miejscowosc = $row['miejscowosc'];
  17. $zainteresowania = $row['zainteresowania'];
  18. $kto = $row['kto'];
  19.  }
  20.  
  21. } 
  22.  
  23. ?>
Jim
błąd jest prawdopodobnie w tym fragmencie

  1. <?php
  2. if ($kto == '\".$login.\"')
  3. $query1 = &#092;"SELECT * FROM uzytkownicy WHERE login='\".$login.\"';\";
  4. ?>


pierwszy komunikat informuje o tym, ze zapytanie bylo puste. a to dlatego ze nie zostal spelniony warunek powyzszego if'a ($kto !== $login).
w ogole dziwnie to zapisales sprobuj tak:

  1. <?php
  2. if ($kto == $login)
  3. ?>


a drugi error jest konsekwencja pierwszego.

btw: zapytan SQL nie trzeba zakanczac ';'
zaba12
czemu nie wyswietla mi zadnych danych ;/
i nie ma bledu zadnego
  1. <?
  2. function user() {
  3. global $cmd,$nick,$login,$haslo,$email,$url,$gg,$miejscowosc,$zainteresowania,$kto;
  4. if ($f == $login) {
  5. $query1 = &#092;"SELECT * FROM uzytkownicy WHERE login='\".$login.\"'\";
  6. $result1 = mysql_query ($query1);
  7. while ($row = mysql_fetch_array($result1)) {
  8.  
  9. $id = $row['id'];
  10. $nick = $row['nick'];
  11. $login = $row['login'];
  12. $haslo = $row['haslo'];
  13. $email = $row['email'];
  14. $url = $row['url'];
  15. $gg = $row['gg'];
  16. $miejscowosc = $row['miejscowosc'];
  17. $kto = $row['kto'];
  18. echo $login;
  19.  }
  20. echo '<b>Dane Uzupełniające:</b><br />
  21. Status: Offline<br />
  22. Gadu-gadu:$gg<br />
  23. Strona WWW:$url<br />
  24. Skąd: \".$login.\"';
  25. }
  26. }
  27.  
  28. ?>
R4v3N
  1. <?php
  2.  
  3. function user() {
  4.    global $cmd,$nick,$login,$haslo,$email,$url,$gg,$miejscowosc,$zainteresowania,$kto;
  5.   // if ($f == $login) {  - CO TO JEST ?
  6.      $query1 = &#092;"SELECT * FROM uzytkownicy WHERE login='$login'\";
  7.      $result1 = mysql_query($query1);
  8.      while ($row = mysql_fetch_array($result1)) {
  9.  
  10.     $id      = $row['id'];
  11.     $nick   = $row['nick'];
  12.     $login  = $row['login'];
  13.     $haslo = $row['haslo'];
  14.     $email = $row['email'];
  15.     $url     = $row['url'];
  16.     $gg     = $row['gg'];
  17.     $miejscowosc = $row['miejscowosc'];
  18.     $kto    = $row['kto'];
  19.  
  20.     echo $login;
  21.      }
  22.    echo &#092;"<b>Dane Uzupełniające:</b><br />
  23.    Status: Offline<br />
  24.    Gadu-gadu: $gg<br />
  25.    Strona WWW: $url<br />
  26.    Skąd: &#092;".$login;
  27.    // }
  28. }
  29.  
  30. ?>


Kod
$f == $login) { ... }


No nie mam pojecia po co to jest :] z tego co wnioskuje z towjego kodu to porownojesz wartosci $f (ktora nie jest dostepna w tej funkcji) z $login. Jasna sprawa z ci nic nie wyswietli bo warunek zapytania jest niespelniany ;]

pozatym w echo masz lekki blad jezeli dajesz text w ' to nastepnie zeby wyswietlic warotsc zmiennej musisz dac '..' a nie ".."

Zreszta nie rozumiem po co masz tu petle, no chyba ze w bazie userow masz uzytkownikow o takichsamych nazwach ;]
zaba12
to wyglada mniej więcej tak

login.php?cmd=mini&f=admindo tego jest to $f == $login
R4v3N
to musisz dac
Kod
global $f;

a najlepiej w tej funkcji dopisz
  1. <?php
  2. $f = $_GET['f'];
  3. ?>
zaba12
jak to zrobilem to nic teraz nie wyswietla
mike
Zmienne z URL'a powinno siępobierać za pomocą tablicy superlobalnej $_GET.

Masz źle ustawione register_globals.
Jim
Cytat(mike_mech @ 2005-08-07 08:30:40)
Zmienne z URL'a powinno siępobierać za pomocą tablicy superlobalnej $_GET.

[OT]
jestem ciekawy dlaczego? rolleyes.gif
mike
Poczytaj, np. tutaj: Podręcznik php -> Bezpieczeństwo -> Using Register Globals
zaba12
lol przczytales poprawnie temat jaki zrobilem bo z tego co widze to chyba nie
mike
1. Moja poprzednia wypowiedź była odnośnie wypwiedzi @Jim'a.
2. Jeżeli piszesz funkcję po to żeby użyć jej tylko raz, to pomyśl nad tym czy warto. Jest to zbędny czas dla procesora.
3. Funkcje z tłumem globali są bez sensu i źle zaprojektowane. Lepiej przekazać zmiennne do funkcji jako jej parametry, ewentualnie poprzez referencję.
4. Jeżeli czasem zdarza się, że nie widać błędu to znaczy, że ustawienia php mogą blokować ich wyświetlanie. Na początku takiego skryptu daj:
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. ?>

5. Nie używanie zmiennych superglobalnych szkodzi bezpieczeństwu skryptów.
6. Poczytaj sobie o podstawach w jakimś lepszym kursie niż czytałeś winksmiley.jpg
zaba12
A mam taki kod zalogowalem sie i gdy wchodze w jakąs pod strone to odrazu mnie wylogowuj;/

co zrobic zeby mnie nie wylogowywal?

  1. <?
  2. $zaloguj_login = $_POST['login']; if (!$_POST['haslo'])
  3. {
  4. echo ' <table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" align=\"right\">
  5. <tr>
  6. <td><form name=\"logowanie\" action=\"login.php\" method=\"post\"></td>
  7. <td><input class=\"input\" type=\"text\" name=\"login\" size=\"10\" /></td>
  8. <td><input class=\"input\" type=\"password\" name=\"haslo\" size=\"10\" /></td>
  9. <td><input src=\"theme/glowna/input/wyslij.gif\" type=\"image\" name=\"loguj\" value=\"Zaloguj\" /></td>
  10. <td></form></td></tr>
  11. ';
  12. }
  13. else
  14. {
  15. echo '<table border=\"0\" cellspacing=\"0\" cellpadding=\"8\" align=\"right\"><tr><td>Zalogowany jako: '.$login.' | <a href=\"login.php?cmd=logout\">Wyloguj</a></td></tr>';
  16. }
  17.  
  18. ?>
strife
Poczytaj o sesjach
zaba12
hmm niemoge se poradzic ;/
strife
  1. <?php
  2.  
  3. //... Twoj kod, jesli haslo i login sa dobre...
  4. $_SESSION['Login'] = TRUE; // ...dodaje zmienna sesji.
  5. // ... reszta kodu
  6.  
  7. ?>

A później sprawdzasz czy dana sesja istnieje, jeśli tak to user jest zalogowany czyli
  1. <?php
  2.  
  3. if ( isset ( $_SESSION['Login'] ) )
  4. {
  5.  echo 'Jestes zalogowany';
  6. }
  7. else{
  8.  echo 'Zaloguj sie';
  9. }
  10.  
  11. ?>

Pozdrawiam!
zaba12
Jestes zalogowany

wyloguj ale czemu mnie z tego kodu wylogowuje questionmark.gif

  1. <?
  2. $zaloguj_login = $_POST['login']; if (!$_POST['haslo'])
  3. {
  4. echo ' <table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" align=\"right\">
  5. <tr>
  6. <td><form name=\"logowanie\" action=\"login.php\" method=\"post\"></td>
  7. <td><input class=\"input\" type=\"text\" name=\"login\" size=\"10\" /></td>
  8. <td><input class=\"input\" type=\"password\" name=\"haslo\" size=\"10\" /></td>
  9. <td><input src=\"theme/glowna/input/wyslij.gif\" type=\"image\" name=\"loguj\" value=\"Zaloguj\" /></td>
  10. <td></form></td></tr>
  11. ';
  12. }
  13. else
  14. {
  15. echo '<table border=\"0\" cellspacing=\"0\" cellpadding=\"8\" align=\"right\"><tr><td>Zalogowany jako: '.$login.' | <a href=\"login.php?cmd=logout\">Wyloguj</a></td></tr>';
  16. }
  17.  
  18. ?>
strife
Ponieważ przy przejściu na inną stronę $_POST wygasa... dlatego aby wiedzieć czy ktoś jest zalogowany trzeba użyć sesji.
zaba12
tzn jak questionmark.gif? bo z logowania jestem ciemny troche ;/
strife
Poszukaj! Sprawa logowania przewija się przez to forum codziennie!

Tu masz link do tematów z logowaniem...
http://forum.php.pl/index.php?showtopic=34102
Przejrzyj poszukaj i skrob... cool.gif
zaba12
przeglądalem i sprawdzalem lecz nic nie pomogly ;/

pomoze ktoś b.prosze
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.