Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]niedziałający if
Forum PHP.pl > Forum > Przedszkole
GoOx
Cześć,

Mam pewien skrypt rejestracji co prawda on działa ale próbowałem zabezpieczyć to przed takimi samymi nickami oraz przed pustymi polami ale ani jedno ani drugie nie działa ;/

Mój kod:

  1. <?
  2. include('polaczenie.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  5. "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <title>Untitled Document</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. </head>
  11. <body>
  12. Rejstracja:
  13. <form action="rejestracja.php?rejestruje" method="post">
  14. Login:<input type="text" name="login"></br>
  15. Haslo:<input type="password" name="haslo"></br>
  16. <input type="submit" name="rejestruj" value="Rejestruj">
  17. </form>
  18. <?
  19. $loginr = $_POST['login'];
  20. $haslor = $_POST['haslo'];
  21. $bylo = "SELECT nick FROM uzytkownicy WHERE nick = '$loginr' ";
  22. $resn = mysql_query($bylo);
  23. $bylologin = mysql_fetch_row($resn);
  24.  
  25. $dodaj = "INSERT INTO uzytkownicy (nick, haslo) values('$loginr' , md5('$haslor'))";
  26. if((isset($_POST['login']) >0) && (isset($_POST['haslo']) >0) && ($bylologin[0] == $loginr))
  27. {
  28. $result = mysql_query($dodaj, $db_lnk)or die(mysql_error());
  29. if(!$result)
  30. {
  31. echo('Wystapil blad. Konto nie zostalo utworzone<br>');
  32. }
  33. else
  34. {
  35. echo('Konto zostalo pomyslnie utworzone<br>
  36. <a href=logowanie.php >Zaloguj sie!</a>');
  37. }
  38. }
  39. ?>
  40. </body>
  41. </html>


Proszę o pomoc.
jg44
Osobiście zrobiłbym to trochę inaczej:
  1. if(isset($_POST['login']) && isset($_POST['haslo'))
  2. {
  3. $bylo = mysql_num_rows(mysql_query("SELECT nick FROM uzytkownicy WHERE nick = '$loginr' "));
  4. if($bylo == 1)
  5. {
  6. echo "konto nie zostalo utworzone";
  7. }
  8. else
  9. {
  10. $result = mysql_query($dodaj, $db_lnk)or die(mysql_error());
  11. echo('Konto zostalo pomyslnie utworzone<br><a href=logowanie.php >Zaloguj sie!</a>');
  12. }
  13. }

Powinieneś jeszcze dodać funkcje filtrujące pola formularza (czyli addslashes, mysql_real_escape_string(), itd. ...)

A w ogóle to teraz dostrzegłem jeszcze jeden poważny błąd: gdzie sprawdzasz, czy został kliknięty przycisk "rejestruj"? Twój skrypt będzie chciał się wykonać ZAWSZE po załadowaniu strony, więc on nie ma prawa działać. Powinieneś jeszcze dodać:
  1. if(isset($_POST['rejestruj']))
  2. {
  3. // cały Twój kod php
  4. }
GoOx
w tym if'ie coś jest źle.

w tym:

  1. if(isset($_POST['login']) && isset($_POST['haslo'))
jg44
To spróbuj tak:
  1. if(!empty($_POST['login']) && !empty($_POST['haslo'))
GoOx
Dzięki bardzo działa smile.gif

oj coś jest nie tak

jak chcę zarejestrować nowe konto to mam coś takiego:


Query was empty

próbowałem z isset ten sam napis jest.
jg44
No bo zapomnieliśmy o zapytaniu dodającym. wink.gif
Całość:
  1. if(isset($_POST['login']) && isset($_POST['haslo'))
  2. {
  3. $bylo = mysql_num_rows(mysql_query("SELECT nick FROM uzytkownicy WHERE nick = '$loginr' "));
  4. if($bylo == 1)
  5. {
  6. echo "konto nie zostalo utworzone";
  7. }
  8. else
  9. {
  10. $dodaj = "INSERT INTO uzytkownicy (nick, haslo) values('$loginr' , md5('$haslor'))";
  11. $result = mysql_query($dodaj, $db_lnk)or die(mysql_error());
  12. echo('Konto zostalo pomyslnie utworzone<br><a href=logowanie.php >Zaloguj sie!</a>');
  13. }
  14. }

Teraz już chyba będzie działać wink.gif
GoOx
Teraz wogóle rejestracja nie działa dodaje puste wyniki do bazy danych.

a gdy konto istnieje to pokazuje że pomyślnie utworzone.
jg44
Reorganizacja skryptu, sprawdź takie coś:
  1. <?
  2. include('polaczenie.php');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  5. "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <title>Untitled Document</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  10. </head>
  11. <body>
  12. Rejstracja:
  13. <form action="rejestracja.php?rejestruje" method="post">
  14. Login:<input type="text" name="login"></br>
  15. Haslo:<input type="password" name="haslo"></br>
  16. <input type="submit" name="rejestruj" value="Rejestruj">
  17. </form>
  18. <?
  19. if(isset($_POST['rejestruj']))
  20. {
  21. $blad = 0;
  22. $loginr = mysql_real_escape_string($_POST['login']);
  23. $haslor = mysql_real_escape_string($_POST['haslo']);
  24.  
  25. if(empty($loginr) or empty($haslor))
  26. {
  27. $blad++;
  28. echo "Proszę wypełnić oba pola!<br />";
  29. }
  30.  
  31. $bylo = mysql_query("SELECT nick FROM uzytkownicy WHERE nick = '$loginr' ");
  32. if(mysql_num_rows($bylo) == 1)
  33. {
  34. $blad++;
  35. echo "Podany login jest zajęty!<br />";
  36. }
  37.  
  38. if($blad == 0)
  39. {
  40. $dodaj = "INSERT INTO uzytkownicy (nick, haslo) values('$loginr' , md5('$haslor'))";
  41. echo('Konto zostalo pomyslnie utworzone<br>
  42. <a href=logowanie.php >Zaloguj sie!</a>');
  43. }
  44. }
  45. ?>
  46. </body>
  47. </html>
  48.  
GoOx
Super dzięki!!!!!!!!

tylko zabrakło jednej linijki ale to szczegół wink.gif

  1. $result = mysql_query($dodaj, $db_lnk)or die(mysql_error());


a gdzie powinieneś już wiedzieć 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.