Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nie zapisuje danych z formularza do bazy
Forum PHP.pl > Forum > Przedszkole
em-ba
Witam, posiadam kod formularza, który wygląda najstępująco:
Kod
     <h2> Wprowadz dane </h2>

     <form action="form_rej.php" method="POST">
           <table border="0">
                  <tr><td>imię</td><td> <input type="text" name="imie" maxlenght="30" size="30"></td></tr>
                  <tr><td>nazwisko</td><td> <input type="text" name="nazwisko" maxlenght="30" size="30"></td></tr>
                  <tr><td>login</td><td> <input type="text" name="login" maxlenght="30" size="30"></td></tr>
                  <tr><td>hasło</td><td> <input type="password" name="haslo" maxlenght="30" size="30"></td></tr>
                  <tr><td>powtórz hasło</td><td> <input type="password" name="haslo2" maxlenght="30" size="30"></td></tr>
                  <tr><td colspan="2"><input type="submit" value="dodaj" name="send">
           </table>
     </form>

<?php
      if ($_POST['send'])
      {
         if(!$_POST['imie'] || !$_POST['nazwisko'] || !$_POST['login'] || !$_POST['haslo'] || !$_POST['haslo2'])
         {
                 echo "<h2>wypełnij wszystkie pola</h2>";
         }
         else
         {
                 $imie=addslashes($_POST['imie']);
                 $nazwisko=addslashes($_POST['nazwisko']);
                 $login=addslashes($_POST['login']);
                 $haslo=addslashes($_POST['haslo']);
                 $haslo2=addslashes($_POST['haslo2']);
                 $polaczenie = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
                 mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");

                 if ($haslo == $haslo2)
                 {
                     $query = "INSERT INTO uzytkownicy VALUES ('$id', '$imie', '$nazwisko', '$login', '$haslo', '$haslo2')";
                     $wykonaj = mysql_query ($query) or die(mysql_error());
                     echo"<h2>Zostałeś zarejestrowany jako: ".$imie."</h2>";
                 }
                 else if ($haslo != $haslo2)
                 {
                     echo "hasla nie sa takie same";
                 }
         }
      }
?>


Chciałbym zrobić w nim zabezpieczenie hasla (tzn zeby haslo i powtórzenie bylo identyczne), więc napisałem taki skrypt:

Kod
if ($haslo != $haslo2){
    
           echo"<h2>blędne powtórzenie hasła</h2>";


toretycznie niby działa, bo wszystkie informacje o bledach czy informacjach są dobrze wyswietlane tylko ..nie dodaje wpisu do bazy danych (przed dodaniem powyższego skryptu było ok)

Podejzewam, ze wstawiam skrypt w złym miejscu albo żle go zdefiniowałem
P.S.
Z samym skryptem mam również taki problem, że wcześniej podczas dodawania pozycji do bazy danych [MySQL] wygląda ona tak:

1
2
3
4
5

itd
.
.
11
10
9

a nie ustawiałem w niej zadnego Sortowania wg klucza
Nie wiem o co chodzi bo czasem dodaje prawidłowo, a czasem tak "miesza"..
potreb
  1. <?php
  2.  
  3. if ($_POST['haslo'] == $_POST['haslo2'])
  4. {
  5. $imie=addslashes($_POST['imie']);
  6. $nazwisko=addslashes($_POST['nazwisko']);
  7. $login=addslashes($_POST['login']);
  8. $haslo=addslashes($_POST['haslo']);
  9. $haslo2=addslashes($_POST['haslo2']);
  10. $polaczenie = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  11. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  12. $query = "INSERT INTO uzytkownicy VALUES ('$id', '$imie', '$nazwisko', '$login', '$haslo', '$haslo2')";
  13. $wykonaj = mysql_query ($query) or die(mysql_error());
  14. echo"<h2>Zostałeś zarejestrowany jako: ".$imie."</h2>";
  15. }
  16. else 
  17. {
  18. echo "hasla nie sa takie same";
  19. }
  20. ?>


możesz jeszcze dodąć funkcje która sprawdzi czy hasło lub login zawieraja jedynie liczby i litery:

  1. <?php
  2. function alpha_numeric($str)
  3. {
  4. return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
  5. }
  6.  
  7. if ($_POST['haslo']=='' || alpha_numeric($_POST['haslo'])==FALSE)
  8. {
  9. echo 'Hasło może zawierać jedynie liczby i litery';
  10. }
  11. ?>


Dodatkowo sprawdz czy dany uzytkownik lub email istnieje
  1. <?php
  2. $login2 = md5(strtolower($_POST["login"]));
  3. $check = mysql_query("SELECT * FROM uzytkownicy WHERE `login`= '$login2' ") or die(mysql_error());
  4. $exist = mysql_fetch_array($check);
  5. if ($exist["id"]) {
  6. echo 'Taki sam login istnieje już w bazie';
  7. }
  8. ?>


Możesz wywalić funkcję szyfrującą md5 i strtolower zamieniającą login na małe litery
em-ba
dzieki, działa :-) ..tzn dodaje wpis tylko, dodaje se gdzie chce

tzn na liście zamiast po kolei to jest
1
2
3
117
83
itp
potreb
Wklej takie zapytanie:
<?php
$query = "INSERT INTO uzytkownicy VALUES ('', '$imie', '$nazwisko', '$login', '$haslo', '$haslo2')";
?>

Na id się nie patrz, wyczyść tabele i id będzie przypisywało ci po kolei. Id jest przypisywane automatycznie, jeżeli skasujesz użytkownika o jakimś id to już nie utworzy wiersza o tym samym id co skasowało.

W bazie id musi miec wartość int(11) auto_increment oraz klucz PRIMARY KEY (id)
em-ba
teraz jak przechodze do formularza to defaultowo mam pod nim wyświetlone:
zostaleś zalogowany jako:
a jeszcze niżej
Hasło może zawierać jedynie liczby i litery


baze wyczyscilem i jest ok
potreb
  1. <h2> Wprowadz dane </h2>
  2.  
  3.  <form action="form_rej.php" method="POST">
  4.  <table border="0">
  5. <tr><td>imię</td><td> <input type="text" name="imie" maxlenght="30" size="30"></td></tr>
  6. <tr><td>nazwisko</td><td> <input type="text" name="nazwisko" maxlenght="30" size="30"></td></tr>
  7. <tr><td>login</td><td> <input type="text" name="login" maxlenght="30" size="30"></td></tr>
  8. <tr><td>hasło</td><td> <input type="password" name="haslo" maxlenght="30" size="30"></td></tr>
  9. <tr><td>powtórz hasło</td><td> <input type="password" name="haslo2" maxlenght="30" size="30"></td></tr>
  10. <tr><td>email</td><td> <input type="text" name="email" maxlenght="30" size="30"></td></tr>
  11. <tr><td colspan="2"><input type="submit" value="dodaj" name="send">
  12.  </table>
  13.  </form>
  14.  
  15. <?php
  16. $polaczenie = @mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  17. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  18.  
  19. function alpha_numeric($str)
  20. {
  21. return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
  22. }
  23.  
  24. function valid_email($str)
  25. {
  26. return ( ! preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  27. }
  28.  
  29. if ($_POST['send'])
  30. {
  31. if ($_POST['imie']=='' || strlen($_POST['imie'])<3)
  32. {
  33. $errors[] = 'Musisz wypełnić pole nick - min znaków 3';
  34. }
  35. if ($_POST['nazwisko']=='' || strlen($_POST['nazwisko'])<3)
  36. {
  37. $errors[] = 'Musisz wypełnić pole nazwisko - min znaków 3';
  38. }
  39. if ($_POST['login']=='' || alpha_numeric($_POST['login'])==FALSE)
  40. {
  41. $errors[] = 'Login może zawierać jedynie liczby i litery';
  42. }
  43. if ($_POST['haslo']=='' || alpha_numeric($_POST['haslo'])==FALSE)
  44. {
  45. $errors[] = 'Hasło może zawierać jedynie liczby i litery';
  46. }
  47. if ($_POST['haslo']!=$_POST['haslo2'])
  48. {
  49. $errors[] = 'Hasła nie pasują do siebie';
  50. }
  51.  
  52. if (valid_email($_POST['email'])==FALSE)
  53. {
  54. $errors[] = 'Wprowadź poprawny adres email';
  55. }
  56.  
  57. $login = $_POST["login"];
  58. $check = mysql_query("SELECT * FROM uzytkownicy WHERE `login`= '$login' ") or die(mysql_error());
  59. $exist = mysql_fetch_array($check);
  60. if ($exist["id"]) {
  61. $errors[] = 'Taki sam login istnieje już w bazie';
  62. }
  63. $email = $_POST["email"];
  64. $check2 = mysql_query("SELECT * FROM uzytkownicy WHERE `email`= '$email' ") or die(mysql_error());
  65. $exist2 = mysql_fetch_array($check2);
  66. if ($exist2["id"])
  67. {
  68. $errors[] = 'Taki sam email istnieje już w bazie';
  69. }
  70. if(is_array($errors))
  71. {
  72. echo '<p class="error"><b>Formularz napotkał błędy</b></p>';
  73. while (list($key,$value) = each($errors))
  74. {
  75.  
  76. echo '<span class="error">'.$value.'</span><br />';
  77. }
  78. }
  79. else {
  80. $imie = htmlspecialchars($_POST["imie"], ENT_QUOTES);
  81. $nazwisko = htmlspecialchars($_POST["nazwisko"], ENT_QUOTES);
  82. $haslo = htmlspecialchars($_POST["haslo"], ENT_QUOTES);
  83. $login = htmlspecialchars($_POST["login"], ENT_QUOTES);
  84. $email = htmlspecialchars($_POST["email"], ENT_QUOTES);
  85.  
  86. $query = "INSERT into uzytkownicy values('', '$login', md5('$haslo'), '$imie', '$nazwisko', '$email')";
  87. $wykonaj = mysql_query ($query) or die(mysql_error());
  88. echo '<div style="margin: 2px; border:1px solid #ededed; background-color: #f9f9f9;"><br>
  89. <span style="color: red; font-weight: bold;">Dziękujemy zostałeś zarejestrowany!</span><br><br>
  90. Od tej chwili możesz korzystać z loginu, nie potrzebna jest żadna aktywacja.<br><br></div>';
  91. }
  92.  
  93. }
  94. ?>


i zrzut z bazy:
Kod
CREATE TABLE `uzytkownicy` (
  `id` int(11) NOT NULL auto_increment,
  `login` varchar(20) NOT NULL,
  `haslo` varchar(20) NOT NULL,
  `imie` varchar(20) NOT NULL,
  `nazwisko` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE = MyISAM;


Ma działać bezbłędnie smile.gif
em-ba
Masz rację.. ładnie działa yahoo.gif

A przy okazji, wiesz jak mozna zrobić pole np. z REGONEM. Chodzi mi tu o podzielony ciąg liczbowy. Nie wiem w jaki sposob ma to zapisywać do bazy do jednego pola..
potreb
Regon, znaleziony gdzieś w necie:
  1. <?php
  2. function check_regon($regon)
  3. {
  4. // tworzenie tablicy wag
  5. $steps = array(8, 9, 2, 3, 4, 5, 6, 7);
  6.  
  7. // wycinanie zbędnych znaków
  8. $regon = str_replace('-', '', $regon);
  9. $regon = str_replace(' ', '', $regon);
  10.  
  11. if (strlen($regon) != 9) return 0;
  12.  
  13. // tworzenie sumy iloczynów
  14. for ($x = 0; $x < 8; $x++) $sum_nb += $steps[$x] * $regon[$x];
  15. $sum_m = $sum_nb % 11;
  16.  
  17. if($sum_m == 10) $sum_m = 0;
  18. if ($sum_m == $regon[8]) return 1;
  19. return 0;
  20. }
  21.  
  22.  
  23. if ($_POST['regon']=='' || check_regon($_POST['regon']))
  24. {
  25. } else {
  26. $errors[] = 'Wpisany regon jest nie poprawny lub nie wypełniłeś pola';
  27. }
  28. ?>
em-ba
dzieki, dodałem i ładnie działa
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.