Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tabela w Bazie danych mysql
Forum PHP.pl > Forum > Przedszkole
JacobGames26
Witam . Mam bowiem problem . Polega on na tym że mam już zrobione login.php register.php i logout.php . Ale nie mam tabeli potrzebnej w bazie danych msql możecie pomóc i otworzyć ową tabele na podstawie tych kodów? :

register.php

  1. <?php
  2.  
  3. require 'config.php';
  4. require_once 'user.class.php';
  5.  
  6. if ($_POST['send'] == 1) {
  7.  
  8. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
  9. $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
  10. $pass_v = mysql_real_escape_string(htmlspecialchars($_POST['pass_v']));
  11. $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
  12. $email_v = mysql_real_escape_string(htmlspecialchars($_POST['email_v']));
  13.  
  14. $existsLogin = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login='$login' LIMIT 1"));
  15. $existsEmail = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE email='$email' LIMIT 1"));
  16.  
  17. $errors = '';
  18.  
  19. if (!$login || !$email || !$pass || !$pass_v || !$email_v ) $errors .= '- Musisz wypełnić wszystkie pola<br />';
  20. if ($existsLogin[0] >= 1) $errors .= '- Ten login jest zajęty<br />';
  21. if ($existsEmail[0] >= 1) $errors .= '- Ten e-mail jest już używany<br />';
  22. if ($email != $email_v) $errors .= '- E-maile się nie zgadzają<br />';
  23. if ($pass != $pass_v) $errors .= '- Hasła się nie zgadzają<br />';
  24.  
  25. if ($errors != '') {
  26. echo '<font color="FF0000">Rejestracja nie powiodła się, popraw następujące błędy:<br />'.$errors.'</font>';
  27. }
  28.  
  29. else {
  30.  
  31. $pass = user::passSalter($pass);
  32.  
  33. mysql_query("INSERT INTO users (login, email, pass) VALUES('$login','$email','$pass');") or die ('<p class="error">Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika.</p>');
  34.  
  35. echo '<li>'.$login.', zostałeś zarejestrowany.</li>
  36. <br /><a href="/login.php">Logowanie</a></p>';
  37. }
  38. }
  39. ?>


login.php
  1. <?php
  2. require 'config.php';
  3.  
  4. require_once 'user.class.php';
  5.  
  6. $login = htmlspecialchars(mysql_real_escape_string($_POST['login']));
  7. $pass = mysql_real_escape_string($_POST['pass']);
  8.  
  9. if ($_POST['send'] == 1) {
  10.  
  11. if (!$login or empty($login)) {
  12. die ('
  13. <font color="FF0000"> <p>Wypełnij pole z loginem! <a href="login.php">Powrót</a></p></font>
  14. ');
  15. }
  16.  
  17. if (!$pass or empty($pass)) {
  18. die ('
  19. <font color="FF0000"> <p>Wypełnij pole z hasłem! <a href="login.php">Powrót</a></p></font>
  20. ');
  21. }
  22.  
  23. $pass = user::passSalter($pass);
  24.  
  25. $userExists = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE login = '$login' AND pass = '$pass'"));
  26.  
  27. if ($userExists[0] == 0) {
  28.  
  29. echo '
  30.  
  31. <font color="FF0000"> <p>Użytkownik o podanym loginie i haśle nie istnieje. <a href="login.php">Powrót</a></p></font>
  32. ';
  33. }
  34.  
  35. else {
  36. $user = user::getData($login, $pass);
  37.  
  38. $_SESSION['login'] = $login;
  39. $_SESSION['pass'] = $pass;
  40.  
  41. echo '
  42.  
  43. <font color="FF0000"> <p>Zostałeś zalogowany. Możesz przejść na <a href="index.php">Stronę Główną</a></p></font>
  44. ';
  45.  
  46. }
  47. }
  48.  
  49. else {
  50. ?>


logout.php

  1. <?php
  2.  
  3. if (user::isLogged()) {
  4.  
  5. $user = user::getData('','');
  6.  
  7. $_SESSION = array ();
  8. echo '<center><font color="#00FF00"> <p>Zostałeś wylogowany! Możesz przejść na <a href="/s/index.php">stronę główną</a></p></font></center>';
  9. }
  10. else {
  11. echo '<center><font color="00FF00"> <p>Aby wykonać tą opcje <a href="/s/login.php">zaloguj się</a></p></font></center>';
  12. }
  13. ?>


Kod był zerżnięty z neta więc a na owej stronie nie było tabeli ... biggrin.gif
Dziękuje z góry za pomoc i mam nadzieje że ninkt nie napisze mi "poszukaj w google"...
Pozdrawiam
matiit
  1. CREATE TABLE users (
  2. `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. `login` varchar(100) NOT NULL,
  4. `email` varchar(255) NOT NULL,
  5. `pass` varchar(255) NOT NULL
  6. );
  7.  


Na przykład
JacobGames26
Cytat(matiit @ 14.10.2013, 00:21:08 ) *
  1. CREATE TABLE users (
  2. `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. `login` varchar(100) NOT NULL,
  4. `email` varchar(255) NOT NULL,
  5. `pass` varchar(255) NOT NULL
  6. );
  7.  


Na przykład

No nie działa ;c Możecie jakoś pomóc aby owa tabela działała?
matiit
To może powiedz co Ci dokładnie nie działa.
JacobGames26
Ta tabela co podałeś to był przykład tak?
Mogę cię prość o zrobienie tabeli takiej jak jest podana na kodach u góry?
Nie znam się zabardzo na tego typu tabel.
matiit
Napisz dokładnie co CI nie działa, jakiś błąd? To wklej go.
JacobGames26
Powiem tak. Mam stronkę www.mineland.ugu.pl/s/index.php .
Ta stronka dziala ale nie działa na niej Logowanie i Rejestracja.
Ponieważ nie ma tabeli tak przypuszczam.
Rejestrując konto wyskakuje błąd w zapytaniu i nie można zrobić konta. Zobacz sam.
www.mineland.ugu.pl/s/register.php.
kujol
To wejdź w mysql i sprawdź czy owa tabela jest utworzona.
JacobGames26
Nie ma tabeli .
in5ane
Nie robi się czegoś takiego:
  1. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));

Powinieneś zrobić:
  1. $login = mysql_real_escape_string($_POST['login']);
(to przy "wkładaniu" danych do bazy)
oraz powinieś zrobić coś takiego:
  1. $_SESSION['login'] = htmlspecialchars($login);
(to przy "wyciąganiu" danych z bazy, a najlepiej jeszcze wcześniej, od razu jak wyciągasz z bazy, a nie w momencie przypisania do zmiennej sesyjnej).
A ponadto najlepiej jakbyś skorzystał z PDO.
JacobGames26
Cytat(in5ane @ 14.10.2013, 10:46:55 ) *
Nie robi się czegoś takiego:
  1. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));

Powinieneś zrobić:
  1. $login = mysql_real_escape_string($_POST['login']);
(to przy "wkładaniu" danych do bazy)
oraz powinieś zrobić coś takiego:
  1. $_SESSION['login'] = htmlspecialchars($login);
(to przy "wyciąganiu" danych z bazy, a najlepiej jeszcze wcześniej, od razu jak wyciągasz z bazy, a nie w momencie przypisania do zmiennej sesyjnej).
A ponadto najlepiej jakbyś skorzystał z PDO.


A tabele jak zrobić miej więcej? ;x
in5ane
Podaj kody tych dwóch plików:
  1. require 'config.php';
  2. require_once 'user.class.php';
JacobGames26
Kody są dodane . Ale chodzi mi dokładne o tabele na mysql.
in5ane
Każdy wie, że chodzi Ci o MySQL. Gdzie masz dodane kody? Nam pokaż, co się w nich znajduje. Co się znajduję w tych dwóch plikach, pokaż nam to.
JacobGames26
Cytat(in5ane @ 14.10.2013, 13:12:46 ) *
Każdy wie, że chodzi Ci o MySQL. Gdzie masz dodane kody? Nam pokaż, co się w nich znajduje. Co się znajduję w tych dwóch plikach, pokaż nam to.


Słuchaj . Jakie dokładnie kody? Chodzi ci o całe login.php , register.php ? No wiesz ja sie na tym nie znam więc prosze was o pomoc.
in5ane
  1. require 'config.php';
  2. require_once 'user.class.php';
Oznacza, że plik o nazwie config.php i user.class.php są dołączone, więc musisz je też mieć. Więc otwórz je, skopiuj zawartość i wklej tutaj na forum.
JacobGames26
config.php

  1. <?php
  2.  
  3.  
  4. $cfg['db_server'] = 'mysql1.ugu.pl'; // Serwer bazy danych
  5. $cfg['db_user'] = 'UŻYTKOWNIK JEST WPISANY'; // Nazwa użytkownika
  6. $cfg['db_pass'] = 'HASŁO JEST WPISANE.'; // Hasło
  7. $cfg['db_name'] = 'BAZA JEST WPISANA'; // Nazwa bazy danych
  8.  
  9.  
  10. // POŁĄCZ Z BAZĄ DANYCH
  11. $conn = @mysql_connect ($cfg['db_server'], $cfg['db_user'], $cfg['db_pass']);
  12. $select = @mysql_select_db ($cfg['db_name'], $conn);
  13.  
  14. if (!$conn) {
  15. die ('<p class="error">Nie udało się połączyć z bazą danych.</p>');
  16. }
  17.  
  18. if (!$select) {
  19. die ('<p class="error">Nie udało się wybrać bazy danych.</p>');
  20. }
  21.  
  22. ?>


user.class.php

  1. <?php
  2.  
  3.  
  4. class user {
  5.  
  6. public static $user = array();
  7.  
  8. /**
  9.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku.
  10.   * Indeksy tablicy odpowiadają nazwom pól w bazie danych (login, pass etc...)
  11.   * @param string $login
  12.   * @param string $pass
  13.   * @return array
  14.   */
  15. public function getData ($login, $pass) {
  16. if ($login == '') $login = $_SESSION['login'];
  17. if ($pass == '') $pass = $_SESSION['pass'];
  18.  
  19. self::$user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE login='$login' AND pass='$pass' LIMIT 1;"));
  20. return self::$user;
  21. }
  22.  
  23.  
  24. /**
  25.   * Zwraca tablicę ze wszystkimi danymi o użytkowniku, tak jak powyższa metoda klasy,
  26.   * ale rozpoznaje użytkownika nie po podaniu loginu i hasła tylko po podaniu ID.
  27.   * Używana np. do wyświetlania strony profilu.
  28.   * @param int $id
  29.   * @return array
  30.   */
  31. public function getDataById ($id) {
  32. $user = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id' LIMIT 1;"));
  33. return $user;
  34. }
  35.  
  36. /**
  37.   * Jeśli użytkownik jest zalogowany - zwraca true, w przeciwnym wypadku - false
  38.   * @return bool
  39.   */
  40. public function isLogged () {
  41. if (empty($_SESSION['login']) || empty($_SESSION['pass'])) {
  42. return false;
  43. }
  44.  
  45. else {
  46. return true;
  47. }
  48. }
  49.  
  50. /**
  51.   * "Soli" hasło przed jego zahashowaniem funkcją md5()
  52.   * @param string $pass
  53.   * @return string
  54.   */
  55. public function passSalter ($pass) {
  56. $pass = '$@@#$#@$'.$pass.'q2#$3$%##@';
  57. return md5($pass);
  58. }
  59.  
  60. }

matiit
Utwórz w bazie danych taką tabelę jaką wczoraj podałem.
in5ane
W takim razie to musi Ci działać. Jeśli to Ci nie działa, tzn. że nie w tym leży problem.
  1. CREATE TABLE users (
  2. `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. `login` varchar(100) NOT NULL,
  4. `pass` varchar(100) NOT NULL
  5. );
JacobGames26
Cytat(in5ane @ 14.10.2013, 15:56:01 ) *
W takim razie to musi Ci działać. Jeśli to Ci nie działa, tzn. że nie w tym leży problem.
  1. CREATE TABLE users (
  2. `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. `login` varchar(100) NOT NULL,
  4. `pass` varchar(100) NOT NULL
  5. );


Owa tabela teraz nie chce sie utworzyć w bazie mysql
b4rt3kk
Zdajesz sobie sprawę kolego, że jest to język SQL? Tak więc owy kod musisz wywołać w konsoli SQL, tudzież poprzez PHP My Admina odpalić zapytanie w okienku SQL.
JacobGames26
Cytat(b4rt3kk @ 14.10.2013, 17:56:54 ) *
Zdajesz sobie sprawę kolego, że jest to język SQL? Tak więc owy kod musisz wywołać w konsoli SQL, tudzież poprzez PHP My Admina odpalić zapytanie w okienku SQL.


Zdaje. Ale na SQL konsoli też nie działa bo jest błąd #1046 - No database selected
in5ane
Wiesz co Ci powiem? Weź poproś moderatora o przeniesienie tego do działu Giełda ofert i zapłać komuś za zrobienie tego. Bo Ty nie kumasz nic, mówimy do Ciebie jak do ściany. Nie każdy musi znać się na programowaniu, a Ty się nie znasz, więc zleć to komuś, a nie kombinujesz i banalnej rzeczy nie potrafisz zrobić.
JacobGames26
Ja nie bede komuś płacić. Że sie nie znam to chyba nie każdy to umie? A ja z tym sie bawie od 3 miechów więc ok . ;x
in5ane
Cytat(JacobGames26 @ 14.10.2013, 21:42:07 ) *
Ja nie bede komuś płacić. Że sie nie znam to chyba nie każdy to umie? A ja z tym sie bawie od 3 miechów więc ok . ;x

Bawisz się od trzech miesięcy, więc OK? Super, bo połączenia z bazą danych człowiek poznaje i umie obsługiwać po tygodniu nauki. A wracając do tematu, żeby nie robić syfu.
Cytat
błąd #1046 - No database selected
Rozumiesz, co to znaczy po angielsku? Jeśli tak, to chyba wiesz, czego nie zrobiłeś.









P.S.: Musisz wybrać bazę najpierw w phpMyAdmin.
matiit
A ja już szukałem czemu moje prościutkie 4 linijki w SQLu nie działają.

@autor czapki z głów smile.gif
JacobGames26
Cytat(in5ane @ 14.10.2013, 21:48:46 ) *
Bawisz się od trzech miesięcy, więc OK? Super, bo połączenia z bazą danych człowiek poznaje i umie obsługiwać po tygodniu nauki. A wracając do tematu, żeby nie robić syfu.
Rozumiesz, co to znaczy po angielsku? Jeśli tak, to chyba wiesz, czego nie zrobiłeś.









P.S.: Musisz wybrać bazę najpierw w phpMyAdmin.


Ahaaaaaa. Jaki ja głupi ... LooL . Ja wbijałem na phpMyAdmin i odrazu SQL... A bazy nie wybrałem. Dzięki ... ; )

Dobra tabela jest utworzona. Ale teraz przy rejestracji mam taki o to błąd "Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika."
in5ane
Cytat(JacobGames26 @ 14.10.2013, 22:03:53 ) *
Ahaaaaaa. Jaki ja głupi ... LooL . Ja wbijałem na phpMyAdmin i odrazu SQL... A bazy nie wybrałem. Dzięki ... ; )

Dobra tabela jest utworzona. Ale teraz przy rejestracji mam taki o to błąd "Wystąpił błąd w zapytaniu i nie udało się zarejestrować użytkownika."

Brakuje Ci pola e-mail. Usuń te tabele "users" i utwórz tą:
  1. CREATE TABLE users (
  2. `id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. `login` varchar(100) NOT NULL,
  4. `email` varchar(255) NOT NULL,
  5. `pass` varchar(100) NOT NULL
  6. );
JacobGames26
Ok. Dziękuje wink.gif
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.