Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Account Maker
Forum PHP.pl > Forum > PHP
mrtepes
Witam, powiem szczerze, że nie mam pojęcia na czym polega programowanie w php.
Potrzebuję skrypt php + formularz, który będzie dodawał dane do bazy mysql. Ma to wyglądać mniej więcej tak:
link do tego pliku sql:
http://www.filefront.../db_account.sql
Lokalizacja tego pliku u mnie to: /home/mrtepes/DB__
w tabeli t_account ma wpisywać dane:
W kolumnie accountid ma wpisywać które to konto z kolei jest zakładane (np. pierwszy wysłany formularz wprowadzi 1, drugi 2 itd.)
w kolumnie name ma wpisywać login podany przy rejestracji
w kolumnie pwd haslo w md5
w kolumnie pw2 haslo w normalnej formie.
Może się znajdzie ktoś kto by mi wytłumaczył jak zrobić stronę internetową z takim skryptem? Same pola do wpisania loginu i hasła i nic więcej, tak żeby wszystko fajnie działało i wprowadzało dane do bazy. Jeśli trzeba będzie to mogę podać więcej danych.
Z góry przepraszam jeśli zrobiłem coś wbrew regulaminowi forum.
modern-web
Pozwolisz, że coś Ci powiem.
Gotowca tutaj nikt Ci nie da - my możemy Ci tylko pomóc i nakierować na właściwą drogę.
Niestety do tego musisz mieć jakiekolwiek podstawy.

Polecam lekturę:

http://webhosting.pl/Kurs.PHP..Wstep.do.pr...zyku.skryptowym


Daj znać jak już mniej więcej obczaisz.
nowofresh
">Albo książkębiggrin.gif
mrtepes
To może zaczne od początku. Żeby w ogóle to działało to stronę muszę mieć postawioną tam gdzie mam bazę mysql? Czyli, że jak jest ona u mnie na komputerze z ubuntu to strona musi być postawiona też u mnie za pomocą np webserv?
mam na ubuntu php5-mysql czyli, że nie muszę nic więcej ściągać?
modern-web
Chcesz stronę hostować za pomocą No-IP u siebie na komputerze?
Powiem tak - marne rozwiązanie.
1. Nie warto obciążać sobie systemu.
2. Domyślam się, że Twój komp nie jest online 24/7 więc uptime byłby marny.
3. Mocne komputery stacjonarne klasy PC zżerają około 100W (w stanie spoczynku) - dla porównania serwery tylko 20W.

Polecam abyś wykupił serwer z obsługą bazy danych i php. To na prawdę kosztuje grosze, a przynosi same korzyści.
Skorzystaj z oferty firmy hostingowej ProSerwer.pl. Serwery od 5zł/miesiąc + domena za 24,40zł/rok.
Jak sam widzisz; nie jest to duży wydatek...

Teraz powiedz; w jakim celu ma służyć ten "Account Maker"?
mrtepes
Na maszynie wirtualnej mam ubuntu i na nim serwer pewnej gry mmo. Aby w nią grać to trzeba mieć konto. Konto tworzy się wprowadzając dane do bazy mysql te co podałem wyżej. Teraz tylko ja mogę tworzyć konta ręcznie wpisując dane do tabeli. Chciałbym żeby ludzie mogli sobie sami je tworzyć przez stronę internetową.
Mam już w pełni skonfigurowany serwer gry, zrobionego klienta i stoję w miejscu bo nie umiem zrobić tego "account makera"
modern-web
1. Niech zgadnę... Ta gra to nijaka Tibia, tak?
2. Podam Ci przykładowe zapytanie do bazy danych... poczytaj o zapytaniach SELECT, DELETE i INSERT na tej stronie, którą poprzednio Ci wysłałem i zmień kod do swoich potrzeb. Powinieneś sobie poradzić...

  1. $nowy_uzytkownik = mysql_query("INSERT INTO `uzytkownicy` (`id`,`username`, `password`, `email`, `ip`, `date`)
  2. VALUES('','$username','$password','$email','$ip','$date')");


Powyższym skryptem możesz dodać do bazy danych nowego użytkownika... Oczywiście musisz powprowadzać zmienne $username, $password itp... Wszystko to metodą $_GET.
Jeszcze pokombinuj żeby ktoś nie dodał 2 razy takiego samego użytkownika (nie ważne czy hasło jest to samo, czy też nie... nazwa użytkownika nie może się przecież powtarzać, prawda?)

Pozdrawiam.


P.S.
Poczytaj o PHP... Gotowca Ci nie zrobię, a bez jakiejkolwiek wiedzy nie skończysz tego w tydzień...
Normalnie zajęłoby to Tobie 10-20min smile.gif
mrtepes
Nie, nie chodzi o tibię biggrin.gif Zająłem się czymś bardziej ambitnym ;p
nowy_uzytkownik to jest nazwa pliku sql?
uzytkownicy to nazwa tabeli?
id, username, password, email, ip, date to są nazwy kolumn?
$username, $password....to są zmienne które będą trafiać do tabeli?

I jeszcze jedno, istnieje skrypt który będzie hasło podane przez kogoś zamieniać na md5 i w takiej postaci wpisywać do tabeli?

Zauważyłem też ze wystarczy aby do tabeli skrypt wpisywał:
login podany przy rejestracji
hasło podane przy rejestracji ale w md5 czyli 128 bitowy skrót
i nic więcej

A co do tych nazw kont to baza mysql nie pozwala na wprowadzenie takiej samej nazwy użytkownika bo wyskakuje błąd.
modern-web
Połowy z tego co Ci napisałem nie rozumiesz. Przeczytaj proszę choć kilka stron z tego kursu PHP bo nikt nie będzie chciał z Tobą współpracować.

$nowy_użytkownik to nie nazwa pliku tylko zmienna, która jest zapytaniem do bazy danych. Po co? Po to żebyś mógł pózniej wyświetlić wyniki tego zapytania.
Kolejna sprawa. Do bazy wprowadzić można nieskonczona ilośc takich samych danych. Jedyne co nie może się powtarzać to id. Jeżeli pojawiloby się 2 użytkowników o tym samym username skrypt wyświetlania/logowania wywalilby błąd. Po to wykonuje się w pierwszej kolejności przeszukiwanie bazy w poszukiwaniu identycznego username, a dopiero po tym jak nie znajdzie może wykonać kolejne zapytania - INSERT.
mrtepes
  1. <?php
  2. mysql_connect([moje ip [, nazwa uzytkownika [, hasło]]]);
  3. INSERT INTO t_account (name, pwd) VALUES ($name, $pwd);
  4. $_GET['$name'];
  5. $_GET['$pwd'];
  6. mysql_close($sql_conn);
  7. ?>


To takie coś ma być?
CuteOne
nie... lepiej poczytaj parę artykułów jak pisać skrypt rejestracji
modern-web
Cytat(mrtepes @ 25.10.2010, 15:57:40 ) *
  1. <?php
  2. mysql_connect([moje ip [, nazwa uzytkownika [, hasło]]]);
  3. INSERT INTO t_account (name, pwd) VALUES ($name, $pwd);
  4. $_GET['$name'];
  5. $_GET['$pwd'];
  6. mysql_close($sql_conn);
  7. ?>


To takie coś ma być?


Słuchaj... my Ci tego nie napiszemy.
Powyżej kolega już Ci napisał, że skrypt jest zły.
Teraz otwórz jakikolwiek kurs php / manuala / książkę i zacznij szukać błędu.

Teraz kilka uwag;
1. zmień tok rozumowania;
2. wczoraj wieczorem napisałem Ci "pseudokod"... Jest to tylko fragment ale na jego podstawie możesz ogarnąć resztę tego tematu;
3. naucz się podstaw albo odmówię dalszej pomocy (bez urazy ale pracuje się z Tobą jak z kretynem, który nie potrafi racjonalnie myśleć).

Pozdrawiam.



Edit:
Uznałem, że dam Ci jeszcze jedną szansę i podpowiem.
Poniżej masz kilka fragmentów kodu...
Błagam Cię; Pomyśl tym razem zanim zapytasz o cokolwiek.


  1. <form method="post">
  2.  
  3. <? echo ''.$komunikaty.'';?>
  4.  
  5. nazwa użytkownika:
  6. <input name="user" type="text" id="username" size="30" />
  7.  
  8. preferowane haslo:
  9. <input name="pass" type="password" id="password" value="" size="30" />
  10.  
  11. adres e-mail:
  12. <input name="email" type="text" id="email" size="30" />
  13.  
  14. <input type="submit" id="rejestruj" value="zarejestruj sie" name="rejestruj" />
  15.  
  16. </form>



  1. <?php
  2. include_once"konfiguracja_polaczenia_z_baza.php";
  3. if(isset($_POST['rejestruj'])){
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6. $email = $_POST['email'];
  7.  
  8. ...
  9.  
  10. ?>



Pierwszy kod to formularz HTML... Drugi to fragment skryptu (ten akurat odbiera dane z formularza i tworzy z nich zmienne).
mrtepes
Zrobiłem takie coś pod sql ten co na górze jest. Nie mam dostępu do ubuntu więc nie wiem czy to będzie działać. Możecie mi pomóc znaleźć błędy albo coś pozmieniać jeśli jest źle?

Siadłem dzisiaj i znalazłem błędy. Teraz to wszystko wygląda tak. Mam tylko jedno pytanie. Ip mam podać te gdzie jest baza ale nie do końca jestem pewny czy dobrze zrozumiałem który login i hasło podać. Na linuxie baze danych odpalam przez navicat. Jest tam takie coś jak "User"Mogę tam dodawać nowych userów, zmieniać im co mogą robić a co nie. Ja mam login i hasło wpisać właśnie tego usera z navicata czy to coś innego jest?
Drugie pytanie: po co się podaje adres ip skoro baza i skrypt php są na tym samym komputerze?

[sql][/sql]

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Rejestracja</title>
  5. </head>
  6.  
  7. <table width="100%" border="1">
  8. <tr>
  9. <td colspan="2">Rejestracja</td>
  10. </tr>
  11. <tr>
  12. <td>Login</td>
  13. <td>
  14. <form><input type="text" id="name" name="name" /> </td>
  15. </tr>
  16. <tr>
  17. <td>Hasło</td>
  18. <td><input type="password" id="pwd" name="pwd" /></td>
  19. </tr>
  20. <tr>
  21. <td>Powtórz Hasło</td>
  22. <td><input type="password" id="repeadpwd" name="repeadpwd" /></td>
  23. </tr>
  24. <tr>
  25. <td colspan="2">
  26. <input type="submit" name="Submit" id="registerButton" value="Zarejestruj" /></form>
  27. </td>
  28. </tr>
  29. </body>
  30. </html>


  1. <?php
  2. function lacz_bd()
  3. {
  4. $db = new mysqli('ip', 'login', 'haslo', 'db_account');
  5. if (! $db)
  6. return false;
  7. $db->autocommit(TRUE);
  8. return $db;
  9. }
  10.  
  11. if(!empty($_GET['activ'])){
  12. $name = addslashes($_GET['activ']);
  13. $db = lacz_bd();
  14. $zapytanie = "update t_account set act='1' where name='$name'";
  15. $wynik = $db->query($zapytanie);
  16. echo 'OK';
  17. }
  18.  
  19. $name = addslashes($_POST['name']);
  20. $pwd = addslashes($_POST['pwd']);
  21.  
  22. if(!empty($name)&&!empty($pwd)){
  23. $db = lacz_bd();
  24.  
  25. $zapytanie = "select name from t_account WHERE name='$name'";
  26. $wynik = $db->query($zapytanie);
  27. $ile_znalezionych = $wynik->num_rows;
  28. if($ile_znalezionych>0){ echo '2';
  29. exit();
  30. }
  31. $zapytanie = "insert t_account (accountid,name,pwd,) values ('', '$name', md5('$pwd'),)";
  32. $wynik = $db->query($zapytanie);
  33. if($wynik){
  34. $stopka = '<br /><br />-----------------------------------------------<br /><br />';
  35. $topic = 'Aktywacja konta';
  36. $tresc = 'Dane do logowania:Login: '.$name.' Haslo: '.$pwd.';
  37.  
  38. }else{ echo 'error';}
  39. }
  40.  
  41. ?>
Alson
Odnośnie IP przy podłączeniu do bazy to nie musisz podawać swojego IP widzianego w sieci jeśli skrypt jest wykonywany na tym samym komputerze/serwerze, wtedy wystarczy wpisać
Kod
localhost
albo
Kod
127.0.0.1
. Kodu komentować nie będę bo nie lubię oceniać czyjejś pracy biggrin.gif
mrtepes
Czyli, że formularz i skrypt php nie muszą być razem z bazą? Mogę sobie Je wysłać na jakiś hosting a bazę zostawić na komputerze u mnie?
W linii 39 wywala błąd
Parse error: syntax error, unexpected T_STRING in /var/www/virtual/toserver.cba.pl/index.php on line 39
modern-web
Pliki mogą znajdować się na hostingu, a baza MySQL u Ciebie... lub na odwrót. Mogą też być na jednej stacji...
Tylko pamiętaj, że wyłączony komputer = wyłączona baza MySQL.
Strona nie będzie poprawnie funkcjonować jeśli zabraknie bazy (o ile podstrona wymaga połączenia z MySQL).

Jednak ja sugeruję umieszczenie wszystkiego na jednym serwerze. Skróci to czas wykonywania zapytań, a dane przesyłane między serwerem a bazą danych (na tym samym serwerze) będą bezpieczniejsze.
mrtepes
Akurat na tym mi zależało żeby baza była u mnie bo gra do prawidłowego działania potrzebuje tej bazy u siebie. Jedyny problem to taki, że ten skrypt nie działa jak go wrzuciłem na serwer winksmiley.jpg Ogólnie to mi się już chyba odechciało stawiać ten serwer gry przez ten skrypt php smile.gif Wcześniej jak wywalało błąd to przynajmniej wiedziałem, że coś jest nie tak z tym skryptem ale teraz przestało wywalać błąd a nic nie zmieniałem ;d Po prostu nic się nie dzieje po naciśnięciu przycisku rejestruj ;d
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.