Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php]Problem z logowanie
Magik125
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Witam..
Mam zainstalowany serwer i php5.Zrobiłem proste logowanie i nie wiem dlaczego cały czas wychodzi mi wiadomość "Użytkownik o podanej
nazwie nie istnieje". Proszę o pomoc.
  1. <?php
  2. function logowanie ($login, $pass){
  3.  
  4. include('../connect.php');
  5.  
  6. $sprawdz = "SELECT FROM users WHERE user = '$login'";
  7. $wykonaj = mysql_query($sprawdz);
  8. $ile = mysql_num_rows($wykonaj);
  9.  
  10. if($ile != 0) {
  11. $pole = mysql_fetch_row($wykonaj);
  12.  
  13. if($pass == $pole[1])
  14. {
  15. $_SESSION['logowanie'] = $login;
  16. header("Location: panel.php");
  17.  }
  18.  else {
  19. print 'Podałes złe hasła';
  20.  }
  21. }
  22. else {
  23. print 'Użytkownik o podanej nazwie nie istnieje.';
  24. }
  25. }
  26. ?>
Go to the top of the page
+Quote Post
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Poprawna forma to:
  1. <?php
  2. $sprawdz = "SELECT * FROM users WHERE user = '$login'";
  3. ?>


Jeśli mimo tego wyskakuje błąd, daj schemat bazy, bo możesz mieć problem też w innym miejscu.

Ten post edytował Hazel 3.09.2007, 19:07:03
Go to the top of the page
+Quote Post
Magik125
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Dalej to samo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Crade
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.05.2007

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


A tak poza tym, zamiast print() wrzucaj echo, będzie o setne setnych sekund szybciej działać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

$pole = mysql_fetch_row($wykonaj);

zamień na

$pole = mysql_fetch_array($wykonaj);

Rzadko, bo rzadko pomaga - ale może zawsze. Chociaż mało prawdopodobne.

Ten post edytował Crade 3.09.2007, 19:16:42
Go to the top of the page
+Quote Post
Magik125
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Dzięki za rade ale co to ma do tego.
Go to the top of the page
+Quote Post
Hazel
post
Post #6





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Cytat(Hazel @ 3.09.2007, 20:06:21 ) *
Jeśli mimo tego wyskakuje błąd, daj schemat bazy, bo możesz mieć problem też w innym miejscu.


ehh...
Go to the top of the page
+Quote Post
Magik125
post
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Ale jak mam dać schemat bo nie kapuje.
Go to the top of the page
+Quote Post
Hazel
post
Post #8





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Jakie pola masz w tabeli users?
Dawaj po kolei.
I dobrze Ci napisał Kolega, żebyś stosował mysql_fetch_array()" title="Zobacz w manualu PHP" target="_manual.
I odwołuj się do zmiennych pobieranych z bazy indeksami ciągowymi, a nie numerycznymi (mysql_fetch_row()" title="Zobacz w manualu PHP" target="_manual, jak pewnie wiesz, zwraca tablicę numeryczną, ale mysql_fetch_array() - również asocjacyjną). Wtedy trudniej o błąd, bo mysli się bardziej logicznie, odwołując się do $wiersz['haslo'] zamiast do $wiersz['23']... Możliwe, że o to chodzi.

Napisz te pola w tabeli users.

Ten post edytował Hazel 3.09.2007, 19:24:45
Go to the top of the page
+Quote Post
markotny
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 2.09.2007
Skąd: Wielkopolska

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


Cytat(Hazel @ 3.09.2007, 20:06:21 ) *
Poprawna forma to:
  1. <?php
  2. $sprawdz = "SELECT * FROM users WHERE user = '$login'";
  3. ?>


Jeśli mimo tego wyskakuje błąd, daj schemat bazy, bo możesz mieć problem też w innym miejscu.
A nie powinno być 'SELECT * FROM users WHERE user = "'.$login.''';';

Ja używam takiej formy zapytania do mysql.Mnie się wydaje że błąd leży również w sprawdzeniu warunku if($pass == $pole[1]).
Sprawdz czy w tabeli users kolumna z hasłem jest druga. W razie czego możeż też zastosować if($pass == $pole['pass']) jeśli tak nazwałeś kolumnę w bazie.
Zwróciłem uwagę na błąd w składni zapytania select do bazy mysql. Zastosuj skłądnie zaproponowaną przeze mnie i spróbuj wyświetlić na stronie liczbę otrzymanych w zapytaniu wierszy. Jeśli zapytanie jest prawidłowe i login jest w bazie powinno ci wyświetlić wartość 1. Jeśli zapytanie jest błędne otrzymasz 0. Miłego testowania. U mnie 50% problemów przy tworzeniu strony wynika z błędnego wpisania polecenia zapytania do bazy mysql. Zawsze zgubię cudzysłów, apostrof albo zapomnę o średniku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował markotny 3.09.2007, 22:05:56
Go to the top of the page
+Quote Post
drPayton
post
Post #10





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Sprawdzanie hasła to sprawa na później, teraz nie ma to nic do rzeczy. Zmiana sposobu wstawienia zmiennej też nic do rzeczy nie ma.
Zaraz na początku funkcji daj
  1. <?php
  2. function logowanie ($login, $pass){
  3. var_dump($login);
  4. (...)
  5. }
  6. ?>
.
Zobacz czy nie ma np zbędnych spacji czy coś w tym stylu i czy taki user faktycznie istnieje w bazie.

Ten post edytował drPayton 4.09.2007, 08:51:58
Go to the top of the page
+Quote Post
Magik125
post
Post #11





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Daje ten schemat:
  1. CREATE TABLE users (user char(30), pass char(30), email char(30), PRIMARY KEY(user));
Go to the top of the page
+Quote Post
crunch
post
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.03.2007
Skąd: ZG

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


proponuję wrzucić
  1. <?php
  2. print_r ($pole);
  3. ?>

po mysql_fetch_... (zobaczysz czy dane zgadzają się w bazie)

lub dla pewności (czy błąd nie tkwi w sql)
  1. <?php
  2. ?>
Go to the top of the page
+Quote Post
qqrq
post
Post #13





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


markotny => Miałem podobny problem jeśli chodzi o byki w SQL-u. Proponuję ściągnąć sobie SQLyog-a, czy coś podobnego i tam wklejać i testować "podejrzane" zapytania. Dużo szybciej...
Go to the top of the page
+Quote Post
Magik125
post
Post #14





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Wyskakuje taki błąd
  1. Access denied FOR user 'ODBC'@'localhost' (USING password: NO)
Go to the top of the page
+Quote Post
Kostek.88
post
Post #15





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


Spróbuj tak:

  1. <?php
  2.  function logowanie ($login, $pass){
  3.  
  4.  include('../connect.php');
  5.  
  6.  $wykonaj = mysql_query('SELECT FROM users WHERE user="'.$login.'"');
  7.  $ile = mysql_num_rows($wykonaj);
  8.  
  9.  if($ile != 0) {
  10. $pole = mysql_fetch_array($wykonaj);
  11.  
  12. if($pass == $pole[1]) {
  13. $_SESSION['logowanie'] = $login;
  14. header("Location: panel.php");
  15. } else {
  16.  echo 'Podałes złe hasła';
  17. }
  18.  } else {
  19. echo 'Użytkownik o podanej nazwie nie istnieje.';
  20.  }
  21. }
  22. ?>



Jeśli nie pomoże, to zaraz po $wykonaj daj tę zmienną $pole=mysql_fetch_array(blablala), a po niej daj var_dump($pole), jak będzie pokazywało wartość NULL, to masz błąd w zapytaniu.

PS. A może masz błąd w pliku connect.php, albo zła ścieżka do niego w include ?

Ten post edytował Kaloryfer 4.09.2007, 18:50:53
Go to the top of the page
+Quote Post
Magik125
post
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Teraz jak to dodałem to nic nie wyskoczyło tzn. ani nie ma takiego użytkownika ani podałeś zle haslo
Go to the top of the page
+Quote Post
Kostek.88
post
Post #17





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


To daj kod formularza, którym się logujesz
Go to the top of the page
+Quote Post
Magik125
post
Post #18





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


<form action="index.php?log=player" method="post">
<input type="text" name="user" class="form" />
<input type="password" name="pass" class="form1" />
<input type="submit" class="zaloguj" value="" />
</form>

Ten post edytował Magik125 4.09.2007, 19:06:20
Go to the top of the page
+Quote Post
Kostek.88
post
Post #19





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


index.php

  1. <?php
  2.  $login=$_POST['login'];
  3.  $pass=$_POST['pass'];
  4.  
  5.  mysql_connect("localhost", "root", "krasnal");  //  tu daj ten connect.php
  6.  mysql_select_db("test"); //
  7.  
  8.  $wykonaj = mysql_query('SELECT * FROM users WHERE user="'.$login.'"');
  9.  
  10.  $ile = mysql_num_rows($wykonaj);
  11.  
  12.  if($ile != 0) {
  13. $pole = mysql_fetch_array($wykonaj);
  14.  
  15. if($pass == $pole[1]) {
  16. $_SESSION['logowanie'] = $login;
  17. header("Location: panel.php");
  18. } else {
  19.  echo 'Podałes złe hasła';
  20. }
  21.  } else {
  22. echo 'Użytkownik o podanej nazwie nie istnieje.';
  23.  }
  24. ?>


a tu loguj.html

  1. <form action="index.php" method="post">
  2. <input type="text" name="login" class="form" /><br />
  3. <input type="password" name="pass" class="form1" /><br />
  4. <input type="submit" class="zaloguj" value="zaloguj" />
  5. </form>



PS.

1) Czemu zrobiłeś funkcję z logowania?
2) Dlaczego w formularzu wysyłanego metodą POST wstawiłeś w action zapytania charakterystyczne dla GET?

Ten post edytował Kaloryfer 4.09.2007, 19:22:37
Go to the top of the page
+Quote Post
Magik125
post
Post #20





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 30.06.2007

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


Wielki dzięki działa nareszcie
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:52