Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z rejestracją...
Forum PHP.pl > Forum > Przedszkole
Mefggt
Napisałem sobie rejestrację do panelu logowania i mam problem. Niby sprawdza czy istnieje użytkownik już taki podczas rejestracji i czy hasła się zgadzają no i czy mail już taki jest w bazie ale jak zmienię e-mail i hasła się zgadzają to rejestruje mimo że użytkownik już istnieje w bazie. Co jest nie tak? Kod:

  1. <?php
  2.  
  3. mysql_connect ('localhost','root','some');
  4.  
  5. $nick= $_POST['user'];
  6. $password= $_POST['password'];
  7. $email= $_POST['email'];
  8. $repassword= $_POST['repassword'];
  9. $user= $nick;
  10. $mail= $email;
  11.  
  12. $use= mysql_query ("SELECT user FROM base WHERE user='".$_POST['user']."' AND email='".$_POST['email']."'");
  13.  
  14. while ($check= mysql_fetch_assoc($use)) {
  15.  
  16. $chuser= $check['user'];
  17. $chmail= $check['email'];
  18.  
  19. }
  20.  
  21. if (!empty($nick) && !empty($password) && !empty($email) && !empty($repassword)) {  // => Type all information
  22.  
  23. if ($user!= $chuser && $repassword== $password && $mail!= $chmail) {
  24.  
  25. $records= "INSERT INTO `base` (`user`, password, email) VALUES ('$nick','$password','$email');";
  26. mysql_query ($records);
  27.  
  28. echo 'You have been registered :)';
  29.  
  30. }
  31.  
  32. else {
  33.  
  34. echo 'This user already exists/ Typed password are not the same/E-mail is registered';
  35.  
  36. }
  37.  
  38. } //end empty
  39.  
  40. else {
  41.  
  42. echo 'Type all information';
  43.  
  44. }
  45.  
  46. ?>


  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <meta http-equiv="Content-type" content="application/xhtml+xml; charset=iso-8859-2" />
  6. <meta name="Description" content="Something" />
  7. <meta name="Keywords" content="Something" />
  8. <meta name="Author" content="Author " />
  9. <link rel="Stylesheet" href="style.css" type="text/css" />
  10. <title>Title</title>
  11. </head>
  12.  
  13. <form action="register.php" method="post">
  14. <div id="form">
  15. <label>Nick: <input type="text" name="user" /></label><br />
  16. <br /><label>Password: <input type="password" name="password" /></label><br />
  17. <br /><label>Retype Password: <input type="password" name="repassword" /></label><br />
  18. <br /><label>E-mail: <input type="text" name="email" /></label><br />
  19. <br /><input type="submit" value="Send" /><br />
  20. </div>
  21. </form>
  22.  
  23. </body>
  24. </html>
no_face
zmien

  1. <?php
  2. $use= mysql_query ("SELECT user FROM base WHERE user='".$_POST['user']."' AND email='".$_POST['email']."'");
  3.  
  4. while ($check= mysql_fetch_assoc($use)) {
  5.  
  6. $chuser= $check['user'];
  7. $chmail= $check['email'];
  8.  
  9. }
  10. ?>


na

  1. <?php
  2. $use= mysql_query ("SELECT user, email FROM base WHERE user='".$_POST['user']."' AND email='".$_POST['email']."'");
  3.  
  4. $check= mysql_fetch_assoc($use))
  5.  
  6. $chuser= $check['user'];
  7. $chmail= $check['email'];
  8. ?>


Na szybko, ale powinno pomoc ;P
Mefggt
Dalej to samo. Już nie wiem co jest nie tak tongue.gif. Niby pokazuje że jak nie pasują hasła to nie rejestruje ale jak jest ten sam użytkownik a inny e-mail to mimo to rejestruje. Są jakieś inne lepsze sposoby na sprawdzenie użytkownika i maila ?
no_face
No dobrze.

W przypadku jak chcesz sprawdzic i nicka i mejla musisz wykonac 2 osobne zapytania w poszukiwaniu tych informacji, gdyz oczywistym jest fakt, ze email moze wystapic przy innym nicku i na odwrot.

1. Sprawdzasz czy istnieje podany nick
2. Sprawdzasz czy istnieje podany email
3. Jezeli oba warunki sie nie spelniaja mozesz dokonac rejestracji.
Mefggt
Czyli zrobić tak: Napisać ifa z mailem , drugiego ifa z userem ale jak to objąć jako jedną całość żeby dopiero po spełnieniu tych warunków rejestrowało?
Czy to zrobić wszystko w jednym ifie i połączyć dwie rzeczy tym && ?
piotrooo89
pierw sprawdź maila i nicka jak to przejdzie poprawnie to resztę rób... w przeciwnym razie wyświetl że wpisy już sie znajdują w bazie...
no_face
Skorzystaj z funkcji mysql_num_rows($result), ktora zwroci Ci ilosc wynikow jakie zapytanie zwrocilo, w taki sposob dowiesz sie czy np nick istnieje w bazie, jezeli zwroci 0 oznacza to brak niku.
Mefggt
OK spróbuję z mysql_num_rows($result) . Zaraz zobaczymy czy coś da. smile.gif
Mefggt
Zrobiłem coś takiego, ale dalej nic. Jak to w ogóle wykorzystać mysql_num_rows() ?

  1. <?php
  2.  
  3. mysql_connect ('localhost','root','mentormiszcz1e');
  4.  
  5. $nick= $_POST['user'];
  6. $password= $_POST['password'];
  7. $email= $_POST['email'];
  8. $repassword= $_POST['repassword'];
  9. $user= $nick;
  10. $mail= $email;
  11.  
  12. $use= mysql_query ("SELECT user FROM base WHERE user='".$_POST['user']."' AND email='".$_POST['email']."'");
  13.  
  14. $check= mysql_fetch_assoc($use);
  15. $chec= mysql_num_rows($use);
  16. $chuser= $check['user'];
  17. $chmail= $check['email'];
  18.  
  19. if (!empty($nick) && !empty($password) && !empty($email) && !empty($repassword)) {  // => Type all information
  20.  
  21.  
  22.  
  23. if ($user!= $chuser && $mail!= $chmail) {
  24.  
  25. $records= "INSERT INTO `base` (`user`, password, email) VALUES ('$nick','$password','$email');";
  26. mysql_query ($records);
  27.  
  28. echo 'You have been registered :)';
  29.  
  30. }
  31.  
  32. else {
  33.  
  34. echo 'This user already exists/ Typed password are not the same/E-mail is registered';
  35.  
  36. }
  37.  
  38.  
  39. } //end empty
  40.  
  41. else {
  42.  
  43. echo 'Type all information';
  44.  
  45. }
  46.  
  47. ?>
no_face
  1. <?php
  2. $use= mysql_query ("SELECT user FROM base WHERE user='".trim($_POST['user']));
  3. $czy_user = mysql_fetch_assoc($use);
  4. $use= mysql_query ("SELECT user FROM base WHERE email='".trim($_POST['email']));
  5. $czy_email = mysql_fetch_assoc($use);
  6.  
  7. if ($czy_user < 1 && $czy_email < 1)
  8. {
  9.  nie ma takiego mejla i nicka w bazie, mozna rejestrowac
  10. }
  11. ?>


Funkcja trim usunie Ci zbedne puste znaki z konca i poczatku lini.
Mefggt
Nie no śmiga jak nic biggrin.gif . Dzięki za pomoc smile.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.