Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błąd ElseIf
Forum PHP.pl > Forum > Przedszkole
Dominator
Dlaczego mi występuje ten błąd Parse error: syntax error, unexpected T_ELSEIF tratata on line 46

  1. <?php
  2. if(@$_POST['form']==true){
  3. if(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==1)
  4. {
  5. $_SESSION['zalogowany']=1;
  6. $_SESSION['login']=$login;
  7. header("Location: index.php");
  8. }
  9. elseif(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==0)
  10. {
  11. echo "Twoje konto nie zostało jeszcze aktywowane";
  12. }
  13. else{
  14. echo "Podałeś błędny login lub hasło";
  15. }
  16. elseif(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==1 && $logi['ban']==1) //tutaj
  17. {
  18. echo "Przepraszam, jestes zbanowany";
  19. }
  20. }
  21. ?>


Pomóżcie
peter13135
no to chyba oczywiste, else if musi być po if'ie. W twoim przypadku jest po else
thek
Bo masz pośrodku else gołe :/
W takim warunku może być tylko JEDNO else... na samym końcu, a nie gdzieś pośrodku. Źle pozamykane klamry masz i nie widzisz przez to.
Dominator
Cytat(thek @ 24.06.2011, 16:19:44 ) *
Bo masz pośrodku else gołe :/
W takim warunku może być tylko JEDNO else... na samym końcu, a nie gdzieś pośrodku. Źle pozamykane klamry masz i nie widzisz przez to.



Jak to gołe ?
thek
To wywal wnętrza i używaj wcięć... Co Ci zostaje?
  1. if() {
  2. if() {
  3. } elseif() {
  4. } else{ // <- a to co takiego?questionmark.gif?
  5. } elseif() {
  6. }
  7. }

Pamiętaj, że ELSE albo nie występuje w warunku, albo jest OSTATNIĄ jego instrukcją, czyli prawidłowe jest:
  1. if() {
  2. }
  3.  
  4. if() {
  5. } else {
  6. }
  7.  
  8. if() {
  9. } elseif() {
  10. }
  11.  
  12. if() {
  13. } elseif() {
  14. } else {
  15. }

Ale nieprawidłowe już jest walnięcie ELSE przed ELSEIF, bo else oznacza wszystko co nie pasuje do tego co powyżej. Jak więc ELSEIF po nim miało by nawet zostać wykonane, skoro ELSE zawsze się dopasuje i nie dopuści do tego co za nim?

Trochę kłania się logika do Twojego problemu i znajomość składni języka...
Dominator
Cytat(thek @ 24.06.2011, 16:58:41 ) *
To wywal wnętrza i używaj wcięć... Co Ci zostaje?
  1. if() {
  2. if() {
  3. } elseif() {
  4. } else{ // <- a to co takiego?questionmark.gif?
  5. } elseif() {
  6. }
  7. }


Pamiętaj, że ELSE albo nie występuje w warunku, albo jest OSTATNIĄ jego instrukcją, czyli prawidłowe jest:
  1. if() {
  2. }
  3.  
  4. if() {
  5. } else {
  6. }
  7.  
  8. if() {
  9. } elseif() {
  10. }
  11.  
  12. if() {
  13. } elseif() {
  14. } else {
  15. }

Ale nieprawidłowe już jest walnięcie ELSE przed ELSEIF, bo else oznacza wszystko co nie pasuje do tego co powyżej. Jak więc elseif po nim miało by nawet zostać wykonane, skoro ELSE zawsze się dopasuje i nie dopuści do tego co za nim?


No to dałem

  1. if(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==1 && $logi['ban']==1)


I jak by skrypt nie patrzy czy jest zbanowany tylko po prostu loguje :/
peter13135
Nie wiem co tu jest do rozumienia.
Masz tu gotowca.
  1. <?php
  2.  
  3. if (@$_POST['form'] == true)
  4. {
  5. if ($logi['ban'] == 1)
  6. {
  7. echo "Przepraszam, jestes zbanowany";
  8. }
  9. else //niezbanowany
  10.  
  11. {
  12. if (@$login == @$logi['login'] && @$pass == @$logi['password'])
  13. {
  14. if ($logi['potwierdzenie'] == 1)
  15. {
  16. $_SESSION['zalogowany'] = 1;
  17. $_SESSION['login'] = $login;
  18. header("Location: index.php");
  19. }
  20. else
  21. {
  22. echo "Twoje konto nie zostało jeszcze aktywowane";
  23. }
  24. }
  25. }
  26. }
  27.  
  28. ?>



PS. Po co ci te mały przed porównywaniem dwóch wartości ?
thek
Mam pytanie... Czy Ty myślisz i widzisz co w kodzie Ci pokazałem strzałką?
Zobacz że za ELSE masz kolejny ELSEIF, który nigdy i tak by sie nie wykonał. Dlatego nie pisz, że to jest IF, skoro wyraźnie w pierwszym poście jak byk widać, że to co teraz zapisałeś, jest w kodzie jako ELSEIF !
  1. else{ //<-- to jest ostatnie co powinno być
  2. echo "Podałeś błędny login lub hasło";
  3. }
  4. elseif(@$login==@$logi['login'] && @$pass==@$logi['password'] && $logi['potwierdzenie']==1 && $logi['ban']==1) // a tu z sufitu jeszcze elseif bierzesz ZA else
  5. {
  6. echo "Przepraszam, jestes zbanowany";
  7. }
Ja już nawet nie mówię o jakości kodu bo @$login i mu podobne po prostu zabijają co wrażliwszych na poprawność webmasterów wink.gif
Dominator
@up

aaa... już skojarzyłem, dzięki

@up2

thx
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.