Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]niedziałający if
GoOx
post
Post #1





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


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.
Go to the top of the page
+Quote Post
jg44
post
Post #2





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


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. }
Go to the top of the page
+Quote Post
GoOx
post
Post #3





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


w tym if'ie coś jest źle.

w tym:

  1. if(isset($_POST['login']) && isset($_POST['haslo'))


Ten post edytował GoOx 7.01.2012, 10:35:36
Go to the top of the page
+Quote Post
jg44
post
Post #4





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


To spróbuj tak:
  1. if(!empty($_POST['login']) && !empty($_POST['haslo'))
Go to the top of the page
+Quote Post
GoOx
post
Post #5





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


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.

Ten post edytował GoOx 7.01.2012, 10:48:05
Go to the top of the page
+Quote Post
jg44
post
Post #6





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


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
Go to the top of the page
+Quote Post
GoOx
post
Post #7





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


Teraz wogóle rejestracja nie działa dodaje puste wyniki do bazy danych.

a gdy konto istnieje to pokazuje że pomyślnie utworzone.

Ten post edytował GoOx 7.01.2012, 11:46:17
Go to the top of the page
+Quote Post
jg44
post
Post #8





Grupa: Zarejestrowani
Postów: 122
Pomógł: 14
Dołączył: 14.07.2011
Skąd: Gliwice / Wrocław

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


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.  


Ten post edytował jg44 7.01.2012, 13:55:33
Go to the top of the page
+Quote Post
GoOx
post
Post #9





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:58