Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z bazą danych, skrypt logowania
Forum PHP.pl > Forum > Przedszkole
Sheo
Cześć,

Stawiam swoje pierwsze kroki w PHP, znalazłem jakiś tutorial na youtubie z tworzeniem skryptu logowania, błąd mam przy wybieraniu tabeli. Oto błąd jaki mi wyrzuca : 
Cytat
Could not select MySQL database. MySQL returned:
Access denied for user 'sheo'@'%' to database 'users'


Oto zawartość pliku login.php :

  1. <?php
  2.  
  3.  
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6.  
  7. if($username&&$password)
  8. {
  9.  
  10. mysql_connect('host mojej bazy','login','mojehasło') or die('Could not connect to MySQL Server. MySQL returned: <br />' . mysql_error());
  11. mysql_select_db('users') or die('Could not select MySQL database. MySQL returned: <br />' . mysql_error());
  12.  
  13.  
  14. $query = mysql_query("SELECT * FROM users WHERE username='$username'");
  15. $numrows = mysql_num_rows($query);
  16.  
  17. if ($numrows!=1)
  18. {
  19. //kod do logowania
  20. while ($row = mysql_fetch_assoc($query));
  21. {
  22. $dbusername = $row['username'];
  23. $dbpassword = $row['password'];
  24. }
  25. if ($username==$dbusername&&$password==$dbpassword)
  26. {
  27. echo "Zalogowałeś się! <a href='member.php'>Kliknij TU</a> aby przejść do strony";
  28. $_SESSION['username']==$dbusername;
  29. }
  30. else
  31. echo "Nieprawidłowe hasło!";
  32.  
  33. }
  34. else
  35. die("Użytkownik nie istnieje");
  36. echo $numrows;
  37.  
  38. }
  39.  
  40. else
  41. die("Podaj login i haslo");
  42.  
  43.  
  44. ?>
Rysh
Błąd mówi wyraźnie:
Access denied for user 'sheo'@'%' to database 'users'

Dostęp zabroniony dla użytkownika sheo do bazy 'users'
Sheo
Cytat(Rysh @ 25.03.2010, 18:06:40 ) *
Błąd mówi wyraźnie:
Access denied for user 'sheo'@'%' to database 'users'

Dostęp zabroniony dla użytkownika sheo do bazy 'users'

Tyle to sam zrozumiałem...
sadistic_son
Sprawdz czy w funkcji łączącej się z bazą masz tą samą nazwę usera, hasło i host co w ustawieniach serwera mysql. Zwróć uwagę czy w obu przypadkach jest np. localhost. Jeśli to nie pomoże to przydziel temu użytkownikowi wszystkie prawa, jeśli masz taką możliwość. A przynajmniej przydziel mu prawo do wglądu do Twojej bazy.

Twój user - sheo ma teraz ustawiony w pliku php host dowolny. Daję głowę że na serwerze ma localhost i to jest problem.
Sheo
Dane wszystkie są prawidłowe. Gdzie przydzielić te prawa ?
sadistic_son
Najpierw to sprawdź:
Cytat(sadistic_son @ 25.03.2010, 18:49:45 ) *
Twój user - sheo ma teraz ustawiony w pliku php host dowolny. Daję głowę że na serwerze ma localhost i to jest problem.
Jakiego serwera używasz? Lokalnie, na Twoim kompie? Czy zdalnie?
Sheo
cba.pl
sadistic_son
To w funkcji łączącej z bazą hosta podmień na localhost (linijka 11).
Sheo
jak napisałem na początku, jestem początkujący. W którym miejscu mam to podmienić, bo chyba nie zamiast hosta.

Już wiem jaki błąd zrobiłem. Pomyliłem po prostu nazwę tabeli z nazwą bazy danych. Problem kolejny mam teraz z zalogowaniem się. Skrypt wypluwa mi że podaje nieprawidłowe hasło.
Rysh
Jeśli by miał złe wpisane dane, w ogóle by się nie połączył i miał przerwanie skryptu już w chwili:
  1. mysql_connect('host mojej bazy','login','mojehasło') or die('Could not connect to MySQL Server. MySQL returned: <br />' . mysql_error());


Zaloguj się do phpmyadmin i sprawdz po lewej stronie z rozwijanej listy jak nazywa się Twoja baza danych i wstaw ją w 12 linijkę.

[edit]:
Założyłem konto i powinno działać tak:
  1. mysql_connect('mysq.cba.pl','rysh','haslo') or die('Could not connect to MySQL Server. MySQL returned: <br />' . mysql_error());
  2. mysql_select_db('rysh_cba_pl') or die('Could not select MySQL database. MySQL returned: <br />' . mysql_error());


mysql.cba.pl - zostawiasz
rysh - zmieniasz na użytkownika którego utworzyłeś (o ile utworzyłeś) w Panelu CBA.
haslo - domyśl się

i druga linijka:
rysh_cba_pl - zmieniasz na sheo_cba_pl
Sheo
Napisałem już wcześniej że działa i łączy się z bazą, tylko teraz nie chce mi się zalogować, każdy login i hasło błędne.
gizmo1985
A sprawdzałeś , cze masz identyczną bazę na serwerze jak u siebie na kompie questionmark.gif wiem że to głupie, ale też miałem tak błahy problem, a szukałem i szukałem winksmiley.jpg
Rysh
Poznasz głupiego po czynach jego... tak było w Forrest Gump.
Skoro masz błąd, że nie może Ci wybrać bazy danych to jak ma Ci pobrać LOGIN i HASŁO!?

[edit]:
I nic Ci się nie łączy, bo dopiero rozpoczynasz połączenie z bazą danych w chwili kiedy dane w formularzu zostaną uzupełnione.
Sheo
Cytat(Rysh @ 25.03.2010, 22:47:19 ) *
Poznasz głupiego po czynach jego... tak było w Forrest Gump.
Skoro masz błąd, że nie może Ci wybrać bazy danych to jak ma Ci pobrać LOGIN i HASŁO!?


Co ty pleciesz ? Napisałem że wszystko z bazą ok, tylko nie chce się zalogować.
Rysh
No dobra, jak chcesz.

Kiedy dostajesz komunikat z pierwszego postu? Po wypełnieniu formularza czy za każdym razem? Skąd masz pewność, że połączenie zostało ustanowione?
Sheo
Założyłem tak, gdyż nie wywala żadnego błędu z bazą, tylko wyskakuje
Cytat
?Nieprawidłowe hasło!
czyli tak jak powinno być
Rysh
OK, już się pogubiłem. Pisałeś, że dostajesz komunikat z pierwszego postu...

Ale lecimy dalej, w zły sposób sprawdzasz czy użytkownik się zaloguje.
Lepiej wysyłać zapytanie w stylu:
  1. $sql = mysql_query("SELECT `id` FROM users WHERE `username`='". $username ."' AND `password`='". $password ."'") or die (mysql_error());
  2. if (mysql_num_rows($sql) == 1) {
  3. //zalogowany.
  4. }


Nie musisz pobierać danych do php żeby sprawdzić czy użytkownik istnieje. Możesz przecież sprawdzić to jeszcze w bazie danych.
Sheo
Po zamianie kawałka kodu który mi podałeś, wypluwa to :
Cytat
Parse error: syntax error, unexpected T_ELSE in /var/www/virtual/sheo.cba.pl/login.php on line 37


nikt nie da rady pomóc ?
mortus
To znaczy, że źle pozamykałeś nawiasy. Wklej tutaj aktualny kod.
Sheo
  1. <?php
  2.  
  3.  
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6.  
  7. if($username&&$password)
  8. {
  9.  
  10.  
  11. mysql_connect('mysql.cba.pl','sheo','damian123') or die('Could not connect to MySQL Server. MySQL returned: <br />' . mysql_error());
  12. mysql_select_db('sheo_cba_pl') or die('Could not select MySQL database. MySQL returned: <br />' . mysql_error());
  13.  
  14.  
  15.  
  16. $sql = mysql_query("SELECT `id` FROM users WHERE `username`='". $username ."' AND `password`='". $password ."'") or die (mysql_error());
  17.  
  18. if (mysql_num_rows($sql) == 1) {
  19.  
  20. {
  21. //kod do logowania
  22. while ($row = mysql_fetch_assoc($query));
  23. {
  24. $dbusername = $row['username'];
  25. $dbpassword = $row['password'];
  26. }
  27. if ($username==$dbusername&&$password==$dbpassword)
  28. {
  29. echo "Zalogowałeś się! <a href='member.php'>Kliknij TU</a> aby przejść do strony";
  30. $_SESSION['username']==$dbusername;
  31. }
  32. else
  33. echo "Nieprawidłowe hasło!";
  34.  
  35. }
  36. else
  37. die("Użytkownik nie istnieje");
  38. echo $numrows;
  39.  
  40. }
  41.  
  42. else
  43. die("Podaj login i haslo");
  44.  
  45.  
  46. ?>
mortus
Błąd pojawia się przez nawias w linii 21. Ale niestety w tym kodzie masz mnóstwo błędów i usunięcie nawiasu nie pomoże. Najlepiej poszukaj w Googlach przykładowego skryptu logowania w php przy użyciu mysql, z pewnością znajdziesz. Przejrzyj dokładnie, wypróbuj i dopiero wtedy zadawaj pytania.
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.