Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja na kod, łączenie z baza
Damiian
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Witam ponownie:)

Nie wiem jak to opisać, może przejdę odrazu do rzeczy jak to ma wyglądać (IMG:style_emoticons/default/smile.gif)
1. Ja dodaje unikalny kod do bazy danych:
  1. mysql_query("INSERT INTO `test` (`id`, `imie`, `haslo` `kod`) VALUES (null, '','', '$kod')") or die(mysql_error());


2. Użytkownik wpisuje nick, hasło, oraz kod w formularzu ( mam )
3. Przekierowuje go na skrypt sprawdzający:
  1. <form action="check.php" method="post">

4. Skrypt sprawdzał by czy kod podany przez usera znajduje sie w bazie,
jeśli tak to zeby potem sprawdzał czy koło kodu są dwa pola wolne w bazie (nick i hasło)
Jesli sa wolne to zeby skrypt dopisal do nich Nick i hasło
a jesli sa zajete to ma mu sie pokazać błąd ze dany kod juz jest uzywany przez inna osobe.

Chodzi mi o takie unikalne kody, które można użyć raz, i na jednego użytkownika.

Wiecie jak takie cos wykonać?
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 24)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




http://pl2.php.net/manual/en/function.uniqid.php
Go to the top of the page
+Quote Post
Damiian
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dodawac moge sam, bo to bedzie tylko pare kodów.

Głównie chodzi mi o:

Kod
4. Skrypt sprawdzał by czy kod podany przez usera znajduje sie w bazie,
jeśli tak to zeby potem sprawdzał czy koło kodu są dwa pola wolne w bazie (nick i hasło)
Jesli sa wolne to zeby skrypt dopisal do nich Nick i hasło
a jesli sa zajete to ma mu sie pokazać błąd ze dany kod juz jest uzywany przez inna osobe.




Ten post edytował Damiian 2.06.2010, 12:33:23
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No ale konkretnie w czym problem? Z bazy rekordy nie potrafisz pobrac? Poprostu nie rozumiem gdzie masz problem.

pobierasz rekord z bazy. Jako warunek wyszukiwania dajesz kod.
jesli rekord nie zostanie zwrocony, znaczy ze kodu takiego w bazie nie ma (pomijam sytuacje gdy bedzie jakis blad bazy)
jesli rekord zostanie zwrocony, to patrzysz czy ten rekord ma te imie czy nie i na tej podstawie walisz odpowiedni komunikat.
Go to the top of the page
+Quote Post
Damiian
post
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Chodzi o takie cos:


  1. $result = mysql_query("SELECT kod FROM test WHERE kod = '$Kood'");
  2. $num = @mysql_num_rows($result);
  3. if ($num> 0) {
  4. //( znalazł że kod jest to tabeli)
  5. //- Zobaczył czy obok kodu są dwa pola wolne na nick i hasło
  6. //jeśli są to żeby dopisał tam te dane co podał uzytkownik, a jeśli są już zajete to żeby wyswietlil błąd ze kod jest //zajety przez inna osobę:
  7. //Tak jest na dodawanie, lecz nie wiem jak dopisac do juz istniejącej.
  8. //Chciałem zrobić update ale wtedy potrzebuje id, a to ma sie robic automatycznie do kazdego z kodów.
  9. mysql_query("INSERT INTO `test` (`id`, `imie`, `haslo` `kod`) VALUES (null, '$Nick','$hasło', '')") or die(mysql_error());
  10. //a mi chodzi o dopisanie do danego kodu nicku i hasła, a jesli juz istnieje to wyswietlenie komunikatu o błedzie
  11. }
  12. else
  13. {
  14.  
  15. }
  16. {


Trudno to opisać ;p
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




ale czemu selectem pobierasz tylko KOD? Czemu nie pobierzesz wszystkich danych włącznie z ID, i nazwiskiem?
Wowczas od razu w php mozesz sprawdzic czy jest to imie przy kodzie czy nie. Wowczas mozesz zrobic update bo masz to nieszczęsne ID.

Teraz kombinujesz jak kon pod górkę. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Damiian
post
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Ponieważ dopiero zaczynam z Php i myślę 'prosto' a nie tak jak przetwarzałby to kod ^^

A Ty jak byś to wykonał zeby było najlatwiej i najprosciej? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A Ty jak byś to wykonał zeby było najlatwiej i najprosciej?
No przecież ci napisalem
Cytat
pobierasz rekord z bazy. Jako warunek wyszukiwania dajesz kod.
jesli rekord nie zostanie zwrocony, znaczy ze kodu takiego w bazie nie ma (pomijam sytuacje gdy bedzie jakis blad bazy)
jesli rekord zostanie zwrocony, to patrzysz czy ten rekord ma te imie czy nie i na tej podstawie walisz odpowiedni komunikat.
Go to the top of the page
+Quote Post
Damiian
post
Post #9





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Umiem zrobić tylko coś takiego:
  1. $query = mysql_query("SELECT
  2. *
  3. FROM
  4. `test`
  5. ");
  6. while($row = mysql_fetch_array($query))
  7. {
  8. echo $row['email'];
  9. }
Go to the top of the page
+Quote Post
phpion
post
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zainteresuj się klauzulą WHERE - szczegóły i przykłady w dokumentacji.
Go to the top of the page
+Quote Post
Damiian
post
Post #11





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


A jak mam dodać np do istniejącego już emailu, imię?

Zrobilem testowy skrypt:

  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4.  
  5. $email = $_POST['email'];
  6.  
  7.  
  8. $connection = mysql_connect('mysql.cba.pl', 'xxx', 'xxx')
  9. or die('Brak połączenia z serwerem MySQL');
  10. $db = mysql_select_db('xxxxx', $connection)
  11. or die('Nie mogę połączyć się z bazą danych');
  12.  
  13.  
  14. $nick = mysql_real_escape_string($imie);
  15. $mail = mysql_real_escape_string($email);
  16. $resultn = mysql_query("SELECT imie FROM test WHERE imie IS NULL");
  17. $resultm = mysql_query("SELECT email FROM test WHERE email = '$mail'");
  18.  
  19. $numn = @mysql_num_rows($resultn);
  20. $numm = @mysql_num_rows($resultm);
  21.  
  22. if ($numn== 0 & $numm> 0) {
  23. $zapytanie = "UPDATE `test` SET `imie` = '$nick' WHERE `email`='$mail'";
  24. $idzapytania = mysql_query($zapytanie);
  25. echo 'dodano';
  26.  
  27. }
  28. else
  29. {
  30. echo ' nie udalo sie';
  31. }
  32.  
  33.  
  34. mysql_close($connection);
  35.  
  36. ?>



Teraz jest ok, dodaje sie gdy jest puste pole w nick, lecz jak jest pełne to dalej przekierowuje na dodano.
Tylko teraz nie wiem jak zrobić ze gdy w bazie pod adresem nick znajduje sie jakies imie to żeby wyswielilo komunikat

Pomoże ktoś?

Ten post edytował Damiian 3.06.2010, 10:42:53
Go to the top of the page
+Quote Post
tehaha
post
Post #12





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


lepiej odpal sobie jakiś podstawowy kurs, bo wszystko tu kompletnie mieszasz
1. nie wiem po co te 2 zapytania skoro wygląda na to że dotyczą tego samego rekordu
  1. $resultn = mysql_query("SELECT imie FROM test WHERE imie IS NULL");
  2. $resultm = mysql_query("SELECT email FROM test WHERE email = '$mail'");


możesz przecież zrobić z tego jedno:
2.
  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  2. if(mysql_num_rows($result) > 0)
  3. {
  4. echo "taki rekord już istnieje";
  5. }


wysyłasz zapytanie -> jeżeli lista zwróconych rekordów jest większa od 0, to taki rekord istnieje
3. wszystkie rekordy powinny mieć id (INT11)

4. wywal znak @
5. po mysql_query() zawsze dawaj or die(mysql_error());
6. jeżeli dasz samo echo dodano, to przecież ono zawsze się wyświetli, więc wyświetlaj je tylko wtedy, kiedy mysql_query() zwróci: true
Go to the top of the page
+Quote Post
Damiian
post
Post #13





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dziekuje za odpowiedz, Ps. PM.


Już w nocy próbowałem łączyć lecz to nic nie daje.
Postaram się opisać to najdokładniej jak mogę, co ma wykonywać skrypt:
Osoba wpisuje Nick i Email w formularzu (nick na razie nie ważny)
Klika submit.
Skrypt łączy sie z bazą i ma sprawdzić:
Czy email zgadza sie z tym co podal uzytkownik w polu email,
Czy pole nick jest puste...
Jesli email sie zgadza i pole nick w bazie jest puste to ma dodać dane do bazy
a jesli email lub pole nick jest zajete to zeby wyswietlal stosowny komunikat

  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  2.  
  3. if(mysql_num_rows($result)> 0)
  4.  
  5. {
  6.  
  7. echo "taki rekord już istnieje";
  8.  
  9. }
  10. else
  11. {
  12. echo "dodano";
  13. }
  14.  
  15. mysql_close($connection);
  16.  
  17. ?>


I mam w bazie:

(IMG:http://zapodaj.net/images/b3e8b95e5983.gif)


I twoj skrypt nie waznie czy wpisze:
tester@o2.pl
czy
totest@o2.pl

Zawsze pokazuje dodano. (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
tehaha
post
Post #14





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a zastanowiłeś się co robi ten skrypt, który tu przedstawiłeś?
Go to the top of the page
+Quote Post
Damiian
post
Post #15





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());


Wybierz imie, email w tabeli test gdzie imie jest puste a email to email podany w formularzu...

  1. if(mysql_num_rows($result)> 0)


Kiedy rezulatat bedzie inny to wyswietl:

taki rekord już istnieje

a jesli wszystko bedzie ok, to:

dodano
Go to the top of the page
+Quote Post
tehaha
post
Post #16





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to ja napiszę moją interpretację linijek 3-13:
- jeżeli liczba zwróconych rekordów jest większa niż 0 - wyświetl: "taki rekord już istnieje", jeżeli liczba zwróconych rekordów nie jest większa niż 0 wyświetl: "dodano"

nie widzę w tym sensu, chyba komunikat typu "dodano" będziesz chciał wyświetlić po poprawnym dodaniu rekordu, a nie w momencie kiedy zapytanie nie zwróci żadnego rekordu
Go to the top of the page
+Quote Post
Damiian
post
Post #17





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Zrobiłem to tak:

  1. $nick = mysql_real_escape_string($imie);
  2. $mail = mysql_real_escape_string($email);
  3.  
  4.  
  5. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  6.  
  7. if(!mysql_num_rows($result)> 0)
  8.  
  9. {
  10.  
  11. $zapytanie = "UPDATE `test` SET `imie` = '$nick' WHERE `email`='$mail'";
  12. $idzapytania = mysql_query($zapytanie);
  13. }
  14.  
  15.  
  16.  
  17. mysql_close($connection);


i gdy pole nick jest puste to sie dodaje.
teraz jak zrobic ze gdy pole nick jest zajete to wyswietlic komunikat?
Próbowalem z else i z if(mysql_num_rows($result)> 0)
Go to the top of the page
+Quote Post
gigzorr
post
Post #18





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


sprawdzanie to mozna zrobic tak :
  1. $sprczegostam = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM tabela WHERE user='".$user."' LIMIT 1"));
  2. if ($sprczegostam[0] >= 1)
  3. {
  4. echo "Taki login juz istnieje.";
  5. }


Ten post edytował gigzorr 3.06.2010, 14:56:24
Go to the top of the page
+Quote Post
Damiian
post
Post #19





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Eh, chyba musze porzucic prace nad ta rejestracja...

Nie umiem. ;/
Go to the top of the page
+Quote Post
tehaha
post
Post #20





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


masz problemy ponieważ brakuje Tobie fundamentalnej wiedzy i pomimo dużych chęci, nie bardzo wiesz co robisz, zacznij od przerobienia kursu php,a potem możesz już dowolnie realizować swoje wizje, tu masz dużo kursów - Temat: linkiKursy dla pocztkujcych, no niestety ale żeby cokolwiek zrobić w php trzeba mieć opanowane podstawy i tego etapu nie przeskoczysz
Go to the top of the page
+Quote Post
Damiian
post
Post #21





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dziekuje za Tutoriale.

A pomógłbyś chociaż dokończyć tą rejestracje aby działała?
Kombinuje na setki sposobów
Np, rozpisałem sobie to na każdy osobny element żeby może to jakoś rozpracować i robiłem po kolei:

  1. $nick = mysql_real_escape_string($imie);
  2. $mail = mysql_real_escape_string($email);
  3.  
  4. $result = mysql_query("SELECT imie FROM test WHERE imie IS NULL");
  5. $resultt = mysql_query("SELECT email FROM test WHERE email = '$mail'");
  6. /*
  7.  Wyszukuje sobie gdzie imie jest puste oraz email = email podany w formularzu
  8.  
  9. */
  10. if(mysql_num_rows($result)==0 & mysql_num_rows($resultt)==0)
  11. // Kiedy result czyli imie jest puste oraz resultt czyli email to email podany w formularzu
  12. {
  13.  
  14. $zapytanie = "UPDATE `test` SET `imie` = '$nick' WHERE `email`='$mail'";
  15. $idzapytania = mysql_query($zapytanie);
  16. // To wykonaj update
  17.  
  18. }
  19. else // lub wywolaj błąd
  20. {
  21. echo "zajete";
  22. }
  23.  
  24.  
  25.  
  26. mysql_close($connection);
  27.  
  28. ?>


Proszę, bardzo potrzebuje tego skryptu!

Ten post edytował Damiian 3.06.2010, 17:12:40
Go to the top of the page
+Quote Post
tehaha
post
Post #22





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to napisz co chcesz osiągnąć bo to co robisz jest bez sensu
Go to the top of the page
+Quote Post
Damiian
post
Post #23





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Teraz już będzie najdokładniej jak umiem.(IMG:style_emoticons/default/smile.gif)

Chodzi mi o rejestracje na kod, to znaczy aby sie zarejestrować trzeba podac kod który znajduje sie w bazie.
oczywiście nie chce na tym zarabiać czy coś, chce po prostu dawać kody tym co chce aby się zarejestriowali.

A więc:
Osoba wchodzi na stronę
Podaje swój nick, hasło oraz kod
klika submit
. I tu skrypt ma sprawdzać czy kod który wpisała osoba jest w bazie oraz czy obok tego kodu są dwa miejsca wolne, to znaczy: nick, hasło.
Jeśli kod się zgadza z tym w bazie, oraz pola obok kodu czyli nick i haslo w bazie są wolne, to żeby dopisać do nich
nick i hasło podane w formularzu.
Lecz (wiem nie zaczynami zdania od lecz ^^) jeżeli kod nie zgadza sie z tym w bazie, lub jeżeli do danego kodu już jest przyspisany uzytkownik to zeby wyswietlic odpowiednie komunikaty.
Go to the top of the page
+Quote Post
tehaha
post
Post #24





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


dobra dam Ci ten kod, ale potem naprawdę weź się za te kursy bo to są naprawdę podstawowe rzeczy i to jest ostatni raz kiedy daję Ci gotowca

Po pierwsze robisz 2 tabele:

codes
code_id [INT(11) auto_increment primary_key] | code [VARCHAR(255)] | code_active [TINYINT(1) default 1]

pole code_active posłurzy do sprawdzenia czy kod został już użyty, bo zakładam, że kody są jednorazowe

users
id [INT(11) auto_increment primary_key] | name [VARCHAR(255)]| email[VARCHAR(255)]

zakładam, że formularz rejestacji już masz z polami: name, email, code, które zaraz odbierzemy postem
i oczywiście walidację też już musisz we własnym zakresie

to else die jest tylko żeby sprawdzić czy zapytania są dobre bo z palca na szybko to pisałem, jeśli wszystko działa to to usuń

  1. <?php
  2.  
  3. $code = mysql_real_escape_string(trim($_POST['code']));
  4. $name = mysql_real_escape_string(trim($_POST['name']));
  5. $email = mysql_real_escape_string(trim($_POST['email']));
  6.  
  7. //sprawdzamy czy taki kod jest w bazie i czy jest aktywny
  8. $sql = "SELECT code_id FROM codes WHERE code = $code AND code_active = 1";
  9. if($result = mysql_query($sql))
  10. {
  11. if(mysql_num_rows($result) > 0)
  12. {
  13. //kod istnieje w bazie i jest aktywny -> dodajemy użytkownika
  14.  
  15. //sprawdzamy czy taki użytkownik już istnieje, zakładam, że nazwa użytkownika nie może być użyta więcej niż raz
  16. $sql_check = "SELECT id FROM users WHERE name = '$name'";
  17. if($result_check = mysql_query($sql_check))
  18. {
  19. if(mysql_num_rows($result_check) > 0)
  20. {
  21. echo "taka nazwa użytkownika jest już zajęta.";
  22. } else
  23. {
  24. //ustawiamy kod na nieaktwyny
  25. $sql_code = "UPDATE INTO codes SET code_active = '0' WHERE code = '$code'";
  26. if(!$result_code = mysql_query($sql_code))
  27. {
  28. }
  29. //nazwa nie jest zajęta -> dodajemy usera
  30. $sql_add = "INSERT INTO users(id, name, email) VALUES(NULL, '$name', '$email')";
  31. if($result_add = mysql_query($sql_add))
  32. {
  33. echo "użytkownik dodany.";
  34. } else
  35. {
  36. }
  37. }
  38. } else
  39. {
  40. }
  41.  
  42. } else
  43. {
  44. //kod nie istnieje lub jest nieaktywny
  45. echo "Przykro mi, kod jest nie poprawny.";
  46. }
  47. } else
  48. {
  49. }
  50.  
  51. ?>
Go to the top of the page
+Quote Post
Damiian
post
Post #25





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Super, dziękuje Ci bardzo (IMG:style_emoticons/default/smile.gif)
masz u mnie piwo! (IMG:style_emoticons/default/tongue.gif)

Był tylko jeden błędzik:
  1. $sql_code = "UPDATE INTO codes SET code_active = '0' WHERE code = '$code'";


na
  1. $sql_code = "UPDATE codes SET code_active = '0' WHERE code = '$code'";


Serdecznie Ci dziękuje za pomoc!
Nie wiem jak się odwdzięczyć!

Teraz biore sie do dokładnej analizy kodu.

Pozdrawiam i dziękuje!
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: 23.09.2025 - 15:34