Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Błąd ElseIf
Dominator
post
Post #1





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


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





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


no to chyba oczywiste, else if musi być po if'ie. W twoim przypadku jest po else
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


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





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To wywal wnętrza i używaj wcięć... Co Ci zostaje?
  1. if() {
  2. if() {
  3. } elseif() {
  4. } else{ // <- a to co takiego?(IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
Dominator
post
Post #6





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


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?(IMG:style_emoticons/default/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 :/
Go to the top of the page
+Quote Post
peter13135
post
Post #7





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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 ?

Ten post edytował peter13135 24.06.2011, 16:10:05
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Dominator
post
Post #9





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

Ostrzeżenie: (20%)
X----


@up

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

@up2

thx
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 11:18