Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Nick/Hasło < 6 znaków - funkcja strlen
Forum PHP.pl > Forum > Przedszkole
Kerth
Cześć,
mam taki problem z funkcją strlen w php.
Otóż. Próbuję wykonać własny system rejestracji kicha(jak na razie)
Do rzeczy. Nie wiem czy dobrze skonstruowałem instrukcję if...elseif...else, bo nawet jeśli gracz wpisze nick mniejszy niż 6 znaków lub poprawnie to i tak rejestruje go wysyłając komunikat o błędzie("Nick nie może być, krótszy niż 6 znaków!")

  1. if ( !empty($nick) || !empty($email) || !empty($haslo) ) {
  2.  
  3. // dodajemy rekord do bazy
  4.  
  5. $sql = "INSERT INTO `GRACZE` (`nick`, `email`, `haslo`) VALUES('".$nick."', '".$email."', '".$haslo."')";
  6. if ( !($result = mysql_query($sql)) )
  7. {
  8. die('error in sql<br>'.mysql_error());
  9. }
  10. else if(!strlen($_POST["nick"])<6)
  11. {
  12. echo "<br><b><font color = red>Nick nie może być, krótszy niż 6 znaków!</font></b></br>";
  13. }
  14. else if(!strlen($_POST["haslo"])<6)
  15. {
  16. echo "<br><b><font color = red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  17. }
  18. else
  19. {
  20. echo "<b><font color = green>Zostałeś pomyślnie zarejestrowany.</color></b>";
  21. }
  22. mysql_close($connection);
  23. }



Wie ktoś co jest nie tak? Proszę o jakieś rady.
Michael2318
ehh.
Spójrz na to co podałeś... Najpierw wrzucasz zapytanie do bazy, a później zaczynasz dopiero sprawdzać czy nick/hasło itd. nie są za krótkie. Logiczne to jest według Ciebie? Według mnie najpierw należałoby sprwadzac dlugość, potem dodawać wpis do bazy.

  1. if ( !empty($nick) || !empty($email) || !empty($haslo) ) {
  2. if(!strlen($_POST["nick"])<6)
  3. {
  4. echo "<br><b><font color = red>Nick nie może być, krótszy niż 6 znaków!</font></b></br>";
  5. }
  6. else if(!strlen($_POST["haslo"])<6)
  7. {
  8. echo "<br><b><font color = red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  9. }
  10. else
  11. {
  12. echo "<b><font color = green>Zostałeś pomyślnie zarejestrowany.</color></b>";
  13. }
  14.  
  15. // dodajemy rekord do bazy
  16.  
  17. $sql = "INSERT INTO `GRACZE` (`nick`, `email`, `haslo`) VALUES('".$nick."', '".$email."', '".$haslo."')";
  18. if ( !($result = mysql_query($sql)) )
  19. {
  20. die('error in sql<br>'.mysql_error());
  21. }
  22. else
  23. {
  24. echo 'Zarejestrowano poprawnie!';
  25. }
  26. mysql_close($connection);
  27. }
Kerth
Ale teraz cały czas pojawia się komunikat: Nick nie może być, krótszy niż 6 znaków! nawet jeśli wszystko poprawnie wpiszę. I dodatkowo powinien pojawić się drugi komunikat Hasło nie może być, krótsze niż 6 znaków! a nic się nie pojawia. Co może być problemem?
Michael2318
  1. if ( !empty($nick) || !empty($email) || !empty($haslo) ) {
  2. $message = '';
  3. if(!strlen($_POST["nick"])<6)
  4. {
  5. $message = "<br><b><font color = red>Nick nie może być, krótszy niż 6 znaków!</font></b></br>";
  6. }
  7. else if(!strlen($_POST["haslo"])<6)
  8. {
  9. $message .= "<br><b><font color = red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  10. }
  11. if ( $message != '' )
  12. {
  13. die($message);
  14. }
  15.  
  16. // dodajemy rekord do bazy
  17.  
  18. $sql = "INSERT INTO `GRACZE` (`nick`, `email`, `haslo`) VALUES('".$nick."', '".$email."', '".$haslo."')";
  19. if ( !($result = mysql_query($sql)) )
  20. {
  21. die('error in sql<br>'.mysql_error());
  22. }
  23. else
  24. {
  25. echo 'Zarejestrowano poprawnie!';
  26. }
  27. mysql_close($connection);
  28. }
Kerth
Dalej to samo się dzieje. Może da się jakoś inaczej?
!*!
Zdecyduj się do czego się odwołujesz. Do zmiennych czy do POST ?
edycja:

Poza tym instrukcja if jest bez sensu u Ciebie, dlaczego ona jest niby połączona i zależna od zmiennej nick? Jedno nie powinno wykluczać drugiego.

http://pl.wikibooks.org/wiki/PHP/Instrukcja_if

I zainteresuj się też isset, empty to za mało.
Kerth
Ok.

Tylko teraz mam taki kod:



  1. <html>
  2. <head>
  3. <title>Proces rejestracji konta</title>
  4. </head>
  5. <body>
  6. <form action="register.php" method="post">
  7. Nick:<br />
  8. <input type="text" name="nick" /><br />
  9. Hasło:<br />
  10. <input type="password" name="haslo" /><br />
  11. E-mail:<br />
  12. <input type="text" name="email" /><br />
  13.  
  14. <input type="submit" value="Zarejestruj" />
  15. </form>
  16.  
  17. </body>
  18. </html>
  19.  
  20. <?php
  21. ini_set('display_errors', 1);
  22. // łączenie z bazą danych
  23. include 'inc/sql.php';
  24.  
  25. // odbieramy dane z formularza
  26. $nick = mysql_real_escape_string(stripslashes($_POST["nick"]));
  27. $email = mysql_real_escape_string(stripslashes($_POST["haslo"]));
  28. $haslo = mysql_real_escape_string(stripslashes($_POST["email"]));
  29.  
  30. if (!empty($nick) && !empty($email) && !empty($haslo) )
  31. {
  32. if(strlen($nick)>6){
  33. if(strlen($haslo)>6){
  34. if(preg_match("[a-zA-Z0-9_\\.]+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z]{2,4}" , $email))
  35. {
  36. mysql_query("INSERT INTO `GRACZE` (`nick`, `email`, `haslo`) VALUES('$nick', '$email', '$haslo')") or die(mysql_error());
  37.  
  38. echo "<b><font color= green>Zostałeś pomyślnie zarejestrowany.</color></b>";
  39. mail("$email", "Witamy na pokładzie!", "Witaj $nick! Poprawnie założyłeś swoje konto. Możesz teraz się zalogować i zacząć swoją przygodę. Pozdrawiamy.);
  40. }
  41. else
  42. {
  43. echo "<br><b><font color= red >Niepoprawny email!</font></b></br>";
  44. }
  45. else
  46. {
  47. echo "<br><b><font color= red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  48. }
  49. else
  50. {
  51. echo "<br><b><font color= red\">Nick nie może być, krótszy niż 6 znaków!</font></b><br>";
  52. }
  53. }
  54.  
  55. ?>


I nie wiem dlaczego dostaję taki błąd:

  1. Parse error: syntax error, unexpected '>' in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 43


Jest to odniesienie do linijki 43 czyli:

  1. echo "<br><b><font color= red >Niepoprawny email!</font></b></br>";


Jak to naprawić?
Michael2318
Linia 40, funkcja mail(). Nawet kolor skladni Ci to podpowiada...
Kerth
Ale chyba nie ma to znaczenia, bo funkcja jest (chyba) dobra, ale nic. Po wyrzuceniu jej błąd pojawia się w linijce 46 czyli pierwszym "else"
Michael2318
  1. mail("$email", "Witamy na pokładzie!", "Witaj $nick! Poprawnie założyłeś swoje konto. Możesz teraz się zalogować i zacząć swoją przygodę. Pozdrawiamy.);


Pomyśl logicznie - czego tu brakuje? Podpowiem Ci, że chodzi o koniec ciągu.
Kerth
No wiem brakuje " ale nie o to chodzi. Tą funkcję wyrzuciłem i mam błąd jak w poście wyżej. Odnosi się do pierwszego else:



  1. <html>
  2. <head>
  3. <title>Proces rejestracji konta</title>
  4. </head>
  5. <body>
  6. <form action="register.php" method="post">
  7. Nick:<br />
  8. <input type="text" name="nick" /><br />
  9. Hasło:<br />
  10. <input type="password" name="haslo" /><br />
  11. E-mail:<br />
  12. <input type="text" name="email" /><br />
  13.  
  14. <input type="submit" value="Zarejestruj" />
  15. </form>
  16.  
  17. </body>
  18. </html>
  19.  
  20. <?php
  21. ini_set('display_errors', 1);
  22. // łączenie z bazą danych
  23. include 'inc/sql.php';
  24.  
  25. // odbieramy dane z formularza
  26. $nick = mysql_real_escape_string(stripslashes($_POST["nick"]));
  27. $email = mysql_real_escape_string(stripslashes($_POST["haslo"]));
  28. $haslo = mysql_real_escape_string(stripslashes($_POST["email"]));
  29.  
  30. if (!empty($nick) && !empty($email) && !empty($haslo) )
  31. {
  32. if(strlen($nick)>6){
  33. if(strlen($haslo)>6){
  34. if(preg_match("[a-zA-Z0-9_\\.]+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z]{2,4}" , $email))
  35. {
  36. mysql_query("INSERT INTO `GRACZE` (`nick`, `email`, `haslo`) VALUES('$nick', '$email', '$haslo')") or die(mysql_error());
  37.  
  38. echo "<b><font color= green>Zostałeś pomyślnie zarejestrowany.</color></b>";
  39. //mail("$email", "Witamy na pokładzie!", "Witaj $nick! Poprawnie założyłeś swoje konto. Możesz teraz się zalogować i zacząć swoją przygodę. Pozdrawiamy.");
  40. }
  41. else
  42. {
  43. echo "<br><b><font color= red >Niepoprawny email!</font></b></br>";
  44. }
  45. else
  46. {
  47. echo "<br><b><font color= red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  48. }
  49. else
  50. {
  51. echo "<br><b><font color= red>Nick nie może być, krótszy niż 6 znaków!</font></b><br>";
  52. }
  53.  
  54. }
  55.  
  56. ?>
_Borys_
} po 45 i po 49 brakuje
Kerth
Ok. Pokombinowałem trochę i wyskrobałem coś takiego:

  1. <html> 
  2. <head> 
  3. <title>Proces rejestracji konta</title> 
  4. </head> 
  5. <body> 
  6.       <form action="register.php" method="post"> 
  7.            Wpisz Nick:<br /> 
  8.       <input type="text" name="nick" /><br /> 
  9.            Wpisz hasło:<br /> 
  10.       <input type="password" name="haslo" /><br /> 
  11.            Wpisz ponownie hasło:<br /> 
  12.       <input type="password" name="haslo2" /><br /> 
  13.            Wpisz E-mail:<br /> 
  14.       <input type="text" name="email" /><br /> 
  15.           
  16.       <input type="submit" value="Zarejestruj" /> 
  17.      </form>
  18.  
  19. </body> 
  20. </html>
  21.  
  22. <?php 
  23. ini_set('display_errors', 1);
  24. // łączenie z bazą danych
  25. include 'inc/sql.php';
  26.  
  27. // odbieramy dane z formularza 
  28. $nick = @mysql_real_escape_string(stripslashes($_POST["nick"]));
  29. $email = @mysql_real_escape_string(stripslashes($_POST["email"]));
  30. $haslo = @mysql_real_escape_string(stripslashes($_POST["haslo"]));
  31. $haslo2 = @mysql_real_escape_string(stripslashes($_POST["haslo2"]));
  32.  
  33.  
  34. if (!empty($nick) && !empty($email) && !empty($haslo) && !empty($haslo2) ) 
  35. { 
  36.      if(strlen($nick)<6){
  37.      if(strlen($haslo)<6){
  38.      if($haslo != $haslo2){
  39.  
  40.      {
  41.      mysql_query("INSERT INTO `GRACZE` (`nick`, `email`, `haslo`, `haslo2`) VALUES('$nick', '$email', '$haslo', '$haslo2')") or die(mysql_error());
  42.  
  43.      echo "<b><font color= green>Zostałeś pomyślnie zarejestrowany.</color></b>"; 
  44.      mail("$email", "Witamy na pokładzie!", "Witaj $nick! Poprawnie założyłeś swoje konto. Możesz teraz się zalogować i 
    zacząć swoją przygodę. Pozdrawiamy."
    ); 
  45.      }
  46.      }
  47.      else  
  48.      {
  49.          echo "<br><b><font color= red>Hasło nie może być krótsze niż 6 znaków!</font></b></br>";
  50.      }
  51.      }
  52.      else 
  53.      {
  54.          echo "<br><b><font color= red>Nick nie może być, krótszy niż 6 znaków!</font></b><br>";
  55.      }
  56.      }
  57.      else 
  58.      {
  59.          echo "<br><b><font color= red>Hasła nie są takie same!</font></b><br>";
  60.      }
  61.      
  62. }
  63. else 
  64. {
  65.     echo "<br><b><font color= red>Musisz wypełnić wszystkie pola!</font></b><br>";
  66. }
  67. ?>


W tym skrypcie jest pewien błąd, którego nie potrafię naprawić. Objawia się to w ten sposób, że po wpisaniu poprawnych(przykładowych danych):

LOGIN: dawid4157
HASŁO: dawid1996
POWTÓRZONE: dawid1996
E-MAIL: abcd@vp.pl

I pojawia się komunikat: "Hasła nie są takie same!"

Czasem też pojawia się komunikat o "Hasło nie może być krótsze niż 6 znaków!" lub inne. Nie wiem czemu to tak dziwnie jest. Może mi ktoś jakoś rzetelnie wytłumaczyć co ja źle zrobiłem? Czasem jest tak a czasem tak.
Michael2318
  1. $nick = @mysql_real_escape_string(stripslashes($_POST["nick"]));
  2. $email = @mysql_real_escape_string(stripslashes($_POST["email"]));
  3. $haslo = @mysql_real_escape_string(stripslashes($_POST["haslo"]));
  4. $haslo2 = @mysql_real_escape_string(stripslashes($_POST["haslo2"]));


Po co tyle tego tam? Jedna funkcja wystarczy...
Po drugie:
- do filtracji emaila używamy takiego warunku:
  1. if ( !filter_var($email, FILTER_VALIDATE_EMAIL) )
  2. {
  3. die('email jest niepoprawny!');
  4. }

- do nicku nie używaj żadnych funkcji typu addslashes itd. tylko zwykłe wyrazenia regularne, czyli preg_match i sprawdzasz sobie czy np. nick sklada się tylko z liter i cyfr, jeśli tak to nick jest ok.
- hasła koduj jakimiś funkcjami i w ogole ich wtedy nie filtrujesz bo nie ma takiej potrzeby, dobrze jest jeśli w haśle sa jakieś fikuśne znaki, typu apostrofy i inne znaki specjalne. Hash i tak zamieni to na jakiś ciąg znaków złożonych tylko z liter i cyfr.
!*!
1. po co łączysz się z bazą gdy nie przechodzisz walidacji?
2. taki kod
  1. $nick = @mysql_real_escape_string(stripslashes($_POST["nick"]));

Jest zły. Nie używaj @ i mysql_real_escape_string powinno być po walidacji
3. zastanów się co robisz. Teraz, gdy hasło jest inne niż hasło dodajesz do bazy dane.
4. formatuj kod poprawnie, za chwilę będziesz pisał ciurkiem.

Cytat(Michael2318)
- do filtracji emaila używamy takiego warunku:

To ciut za mało wink.gif ale też nie zaszkodzi.
Kerth
A czy jak zaszyfruję hasła to jest możliwość zrobienia "Przypomnienia hasła"? Bo nie chcę, żeby zwracało hasło typu: vgvvCXVBxcwer233FSDvxcxcvxRfsd.

Z e-mailem jet na razie dobrze, tylko nie wiem czemu gdy wpisuję wszystkie dane poprawnie pojawia się komunikat o tym, że hasła nie pasują.
!*!
Przypomnienie hasła, to wygenerowanie nowego.
Cytat
tylko nie wiem czemu gdy wpisuję wszystkie dane poprawnie pojawia się komunikat o tym, że hasła nie pasują.

Czytaj ze zrozumieniem.
Kerth
Cytat(!*! @ 17.03.2013, 13:57:32 ) *
1. po co łączysz się z bazą gdy nie przechodzisz walidacji?
2. taki kod
  1. $nick = @mysql_real_escape_string(stripslashes($_POST["nick"]));

Jest zły. Nie używaj @ i mysql_real_escape_string powinno być po walidacji
3. zastanów się co robisz. Teraz, gdy hasło jest inne niż hasło dodajesz do bazy dane.
4. formatuj kod poprawnie, za chwilę będziesz pisał ciurkiem.


To ciut za mało ;) ale też nie zaszkodzi.


1. A kiedy mam się łączyć? Wydawało mi się, że najlepiej podłączyć include z osobnym plikiem(i tak zrobiłem)
2. Czemu zły? Jeśli usunę @ to pojawią się błędy:

  1. Notice: Undefined index: nick in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 29
  2.  
  3. Notice: Undefined index: email in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 30
  4.  
  5. Notice: Undefined index: haslo in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 31
  6.  
  7. Notice: Undefined index: haslo2 in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 32


3. Warunek jest taki tylko, że dodałem to w else.

  1. if($haslo != $haslo2)
  2. echo "<br><b><font color= red>Hasła nie są takie same!</font></b><br>";


To nie wiem co jest nie tak.

PS. Szczerze mówiąc nie bardzo rozumiem o czym mówisz. Uczę się dopiero PHP więc, wiesz...
!*!
Cytat
1. A kiedy mam się łączyć? Wydawało mi się, że najlepiej podłączyć include z osobnym plikiem(i tak zrobiłem)

Łącz się z bazą wtedy kiedy tego potrzebujesz.

Cytat
2. Czemu zły? Jeśli usunę @ to pojawią się błędy:

Błędy się naprawia a nie wycisza.

Cytat
3. Warunek jest taki tylko, że dodałem to w else.
PS. Szczerze mówiąc nie bardzo rozumiem o czym mówisz. Uczę się dopiero PHP więc, wiesz...

Zacznij od kursu w takim razie http://phpkurs.pl/ tam przejdź do działu "Operatory porównania". I przeczytaj jeszcze raz punkt 3 jaki podałem.
Kerth
A co jest źle w tej linijce?

  1. $nick = mysql_real_escape_string(stripslashes($_POST["nick"]));
Michael2318
Jest totalnie bez sensu i tyle. Zostaw mysql_real_escape_string, strislashes wywal.

EDIT:

To jest nick, więc zrób tak jak pisałem - wyrażenia regularne, chyba że chcesz mieć ludzi z nickami, typu: moj\'nick

Kerth
No wyrzuciłem jak mówiłeś:

  1. $nick = mysql_real_escape_string($_POST["nick"]);
  2. $email = mysql_real_escape_string($_POST["email"]);
  3. $haslo = mysql_real_escape_string($_POST["haslo"]);
  4. $haslo2 = mysql_real_escape_string($_POST["haslo2"]);


I mam taki same błędy.


  1. Notice: Undefined index: nick in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 29
  2.  
  3. Notice: Undefined index: email in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 30
  4.  
  5. Notice: Undefined index: haslo in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 31
  6.  
  7. Notice: Undefined index: haslo2 in /virtual/dawid4157.cba.pl/gra.dawid4157.cba.pl/register.php on line 32
kubek3898
Przed wykonaniem zapytania itd. sprawdzaj czy zmienne są ustawione

isset()
Kerth
Nie wiem czy dobrze sformułowałem:

  1. if(isset($_POST['nick'])&& isset($_POST['email'])&& isset($_POST['haslo'])&& isset($_POST['haslo2']))


Teoretycznie brak błędu ale wolę się upewnić czy nie ma jakieś niepotrzebnych rzeczy.
kubek3898
Wystarczy sprawdzić czy pole submit zostało ustawione smile.gif. Czyli:

  1. if(isset($_POST['submit']))


Teraz po kolei:

1. Możesz usunąć potencjalne znaki spacji - trim()
2. Sprawdzasz czy dane są puste - empty() - jeśli tak, wypisujesz informację o tym
3. Sprawdzasz czy dane są odpowiedniej długości - jeśli nie, wypisujesz informację o tym
4. Filtrujesz dane
5. Wykonujesz zapytanie


Wybacz za moje skromne wypowiedzi ale piszę z telefonu.
Kerth
Chyba udało mi się stworzyć rejestrację, bo rejestruje się poprawnie.

Teraz tworzę plik login.php ale znowu coś nie tak. Liczę, że mi coś doradzicie.

Otóż tak. Mam taki kod:

  1. <html>
  2. <head>
  3. <title>Logowanie</title>
  4. </head>
  5. <body>
  6. <b>Logowanie:</b>
  7. <form action="login.php" method="post">
  8. Wpisz Nick:<br/>
  9. <input type="text" name="nick" /><br/>
  10. Wpisz hasło:<br />
  11. <input type="password" name="haslo" /><br/>
  12. <input type="submit" value="Zaloguj"/> <br/>
  13. <b><font color = blue>Jeśli nie masz jeszcze konta, <a href='register.php'>Kliknij Tu!</a></font></b>
  14. </form>
  15.  
  16. </body>
  17. </html>
  18.  
  19. <?php
  20. include('inc/sql.php');
  21. include('zmienne.php');
  22.  
  23.  
  24. session_register("zalogowany");
  25.  
  26. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  27.  
  28. if($_SESSION["zalogowany"]!=1)
  29. {
  30. if(!empty($_POST["nick"]) && !empty($_POST["haslo"]))
  31. {
  32. if(mysql_num_rows(mysql_query("SELECT * FROM `GRACZE` WHERE `nick` = '".htmlspecialchars($_POST["nick"])."' AND `haslo` = '".htmlspecialchars($_POST["haslo"])."'")))
  33. {
  34. echo "<b><font color = green>Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a></font></b>";
  35. $_SESSION["zalogowany"]=1;
  36. }
  37. if($nick !== $nick)
  38. {
  39. echo "<br><b><font color = red>Wpisany nick jest błędny!</font></b><br>";
  40. }
  41. if($haslo !== $haslo2)
  42. {
  43. echo "<br><b><font color = red>Wpisane hasło jest błędne!</font></b><br>";
  44. }
  45. $braknicku = mysql_query("SELECT * FROM `GRACZE` WHERE `nick` = '$nick'");
  46. if (mysql_num_rows($braknicku) == 0)
  47. {
  48. echo "<br><b><font color = red>Podany nick nie istnieje!</font></b></br>";
  49. }
  50. }
  51. }
  52.  
  53.  
  54. ?>
  55. <?php mysql_close(); ?>


Kod include zmienne.php

  1. <?php
  2. $nick = isset($_POST['nick']) ? htmlentities($_POST['nick']) : "";
  3. $email = isset($_POST['email']) ? htmlentities($_POST['email']) : "";
  4. $haslo = isset($_POST['haslo']) ? htmlentities($_POST['haslo']) : "";
  5. $haslo2 = isset($_POST['haslo2']) ? htmlentities($_POST['haslo2']) : "";
  6. ?>



Nie wiem co jest źle, czy kod jest dobry? Oraz jak zrobić logowanie i wylogowywanie?
Kod tworzyłem na podstawie tego: http://webmade.org/porady/sesje-php-system-logowania.php
!*!
Nie ogarniam Twojego sposobu myślenia...

  1. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  2. if($_SESSION["zalogowany"]!=1)


Czyli pusta sesja "zalogowany" jest równa 0, ale gdy sesja "zalogowany" jest inna niż 1 loguje się?
Napisz jeszcze gdzie w tym kodzie wyżej, zastosowałeś się do wskazówek, które padły wcześniej?

I skoro masz zmienne zdeklarowane na poczatku (htmlentities?) to czemu dalej odwołujesz się do POST?
I na co Ci to drugie zapytanie "brak nicku" ?
Kerth
Racja. Myślę, że powinno być tak:
  1. if($_SESSION["zalogowany"]=1)


I z takim kodem loguje.

Odnośnie POST to jak mam się odwoływać? GET? Tylko jak?

PS. To drugie z nickiem to moja pomyłka. Chciałem robić coś jeszcze, skopiowałem i zapomniałem usunąć. Oraz jak to wylogowywanie zrobić?
!*!
Nie przeczytałeś linku o operatorach. Logujesz się, bo przypisałeś zmienną do sesji, zamiast ją sprawdzić.
Nie chodziło o sposób, POST jest dobry, ale po co przypisujesz go do zmiennych, skoro z tego nie korzystasz.
Kerth
To co to jest nie potrzebne?

  1. <?php
  2. $nick = isset($_POST['nick']) ? htmlentities($_POST['nick']) : "";
  3. $email = isset($_POST['email']) ? htmlentities($_POST['email']) : "";
  4. $haslo = isset($_POST['haslo']) ? htmlentities($_POST['haslo']) : "";
  5. $haslo2 = isset($_POST['haslo2']) ? htmlentities($_POST['haslo2']) : "";
  6. ?>


Cytat
Nie przeczytałeś linku o operatorach. Logujesz się, bo przypisałeś zmienną do sesji, zamiast ją sprawdzić.


To jaki operator mam zastosować? Bo ja już nic nie rozumiem. Oczywiście czytałem link o operatorach ale nie wiem jak to zastosować.

PS. Przepraszam za te Ciągłe pytania ale po prostu staram się PHP zrozumieć.
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-2024 Invision Power Services, Inc.