Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: CZemu funkcja strlen(); mi nie dziła?
Forum PHP.pl > Forum > PHP
plastus321
Czy mam coś źle przez co może nie chodzić ta funkcja??

Chcę żeby login i hasło miało minimum 6 znaków...

Poniżej zamieszczam kod:

  1. <?php
  2. require('conn.php');
  3.  
  4. echo "<a href='index.php'>Strona główna</a> | ";
  5. echo "<a href='index.php?page=regulamin'>Regulamin</a> | ";
  6. if($_SESSION['login'])
  7. {
  8. echo "<a href='index.php?page=logowanie'>Logowanie</a> | ";
  9. echo "<a href='index.php?page=rejestracja'>Rejestracja</a> | ";
  10. } else {
  11. echo "<a href='index.php?page=profil'>Profil</a> | ";
  12. echo "<a href='index.php?page=wyloguj'>Wyloguj</a><br /><br /><br />";
  13. }
  14.  
  15.  
  16. $page=$_GET['page'];
  17.  
  18. switch($page)
  19. {
  20.  
  21.  
  22. case 'logowanie':
  23. echo "
  24. <form method='post'>
  25. <fieldset>
  26. <legend align='center'>Logowanie</legend>
  27. Login:<br><input name='login' type='text' value='' /><br />
  28. Hasło:<br><input type='password' name='haslo' value='' /><br />
  29. </fieldset>
  30. <center>
  31. <input type='submit' name='loguj' value='Loguj' />
  32. <input type='reset' value='Wyczyść dane' />
  33. </center>
  34. </form>";
  35.  
  36. if(isset($_POST['loguj'])) {
  37.  
  38.  
  39. FROM user WHERE login = '".$_POST['login']."'
  40. && haslo = '".$_POST['haslo']."' ")) > 0) {
  41.  
  42.  
  43. if(mysql_num_rows(mysql_query("SELECT * FROM user
  44. WHERE login = '".$_POST['login']."'
  45. && haslo = '".$_POST['haslo']."' ")) > 0 ) {
  46.  
  47.  
  48. $_SESSION['zalogowany'] = true;
  49. $_SESSION['login'] = $_POST['login'];
  50. $_SESSION['haslo'] = $_POST['haslo'];
  51. header('Location: index.php');
  52.  
  53.  
  54. } else {
  55.  
  56. echo "Złe hasło, proszę spróbować ponownie";
  57. }
  58. } else {
  59. echo "Nie ma takiego użytkownika";
  60. }}
  61. break;
  62.  
  63. case 'rejestracja':
  64.  
  65.  
  66. $ile=mysql_query("SELECT * FROM `user` WHERE login = '".$_POST['login']."'");
  67. $ile=mysql_num_rows($ile);
  68.  
  69. $zapytanie = "CREATE TABLE user (id int NOT NULL AUTO_INCREMENT,
  70. login varchar(50), email varchar(30), haslo varchar(30), miejscowosc varchar(30),
  71. imie varchar(30), nazwisko varchar(30), wiek varchar(30),
  72. PRIMARY KEY(id))
  73. ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_polish_ci;";
  74. $wykonaj=mysql_query($zapytanie);
  75.  
  76.  
  77. if(isset($login) and ($email) and ($haslo) and ($haslo2))
  78. {
  79.  
  80. if($haslo2 == $haslo)
  81. {
  82.  
  83. if(strlen($_POST["login"])<6 and strlen($_POST["haslo"])<6)
  84. {
  85.  
  86. if($regulamin)
  87. {
  88.  
  89. if($ile==0)
  90. {
  91.  
  92. $dodaj_user= ("INSERT INTO user SET login='".$_POST['login']."', email='".$_POST['email']."', haslo='"$_POST['haslo']"'");
  93. $dodawanie_usera=mysql_query($dodaj_user);
  94.  
  95. echo "<center><b><font color='green'>Twoje konto ".$_POST['login']." zostało utworzne!</font></b></center>";
  96.  
  97. }else{echo "<center><b><font color='red'>Taki użytkownik już istnieje. Wybierz inny login.</b></center></font>";}
  98.  
  99. }else{echo "<center><b><font color='red'>Musisz akceptować regulamin.</b></center></font>";}
  100.  
  101. }else{echo "<center><b><font color='red'>Login i hasło muszą zawierać minimum 4 znaki!</b></center></font><br>";}
  102.  
  103. }else{echo "<center><b><font color='red'>Hasła się nie zgadzają.</b></center></font>";}
  104.  
  105. }else{echo "<center><b><font color='red'>Wypełnij wszystkie pola.</b></center></font>";}
  106.  
  107.  
  108. echo "
  109. <form method='post'>
  110. <fieldset>
  111. <legend align='center'>Rejestracja konta</legend>
  112. Login:<br><input name='login' type='text' value='' /><br />
  113. Email:<br><input name='email' type='text' value='' /><br />
  114. Hasło:<br><input type='password' name='haslo' value='' /> <br />
  115. Powtórz hasło:<br><input type='password' name='haslo2' value='' /><br />
  116. <br />
  117. <input type='checkbox' name='regulamin' /> - Akceptuję <a href='index.php?page=regulamin'>regulamin</a>.
  118. </fieldset>
  119. <br /><center>
  120. <input type='submit' value='Rejestruj' />
  121. <input type='reset' value='Wyczyść dane' />
  122. </center>
  123. </form>";
  124. break;
  125.  
  126. case 'profil':
  127. echo "tu profil i z nim zwiazane rzeczy";
  128. break;
  129.  
  130. case 'wyloguj':
  131. echo "a tu wylogowanie";
  132. break;
  133.  
  134. case 'regulamin':
  135. echo "a tu wylogowanie";
  136. break;
  137.  
  138. default:
  139. echo "Strona główna";
  140.  
  141.  
  142.  
  143. }
  144. ?>



Jak coś już próbowałem także z wykrzyknikami (!), ale również bez skutku:


  1. if(!strlen($_POST["login"])<6 and !strlen($_POST["haslo"])<6)
blooregard
Pomijając już fakt masakrycznego kodu, to sprawdzałeś, czy w ogóle dochodzi do sprawdzania tego warunku?

Bo nie ma takiej mozliwości, by funkcja "nie działała".
cycofiasz
Powtórz sobie jak działają instrukcje warunkowe w php oraz podstawy logiki. Masz odwrotnie warunek. I dlaczego przy każdej rejestracji tworzysz tabelę users?
olechafm
jeśli dopuszczasz by login lub hasło zawierało polskie znaki diakrytyczne (ćśńł itd) to nie używaj funkcji strlen tylko mb_strlen, która poprawnie je interpretuje
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.