Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] if zawarty w if - nie działa
Forum PHP.pl > Forum > PHP
zx
  1. <? 
  2. if($_SESSION['uzytkownik_login']==null or $_SESSION['uzytkownik_haslo']==null { 
  3. if($akcja!=&#092;"zapisz_sesje\") { 
  4. if($akcja!=&#092;"null\") { 
  5. echo(&#092;"nie jesteś zalogowany, lub twoja sesja wygasła\"); 
  6. } 
  7. echo(&#092;" 
  8. <form action=&#092;"admin.php?akcja=zaloguj\" method=\"post\"> 
  9. login: <input type=&#092;"text\" name=\"uzytkownik_login\" /> 
  10. hasło: <input type=&#092;"password\" name=\"uzytkownik_haslo\" /> 
  11. <input type=&#092;"submit\" value=\"zaloguj\" /> 
  12. </form> 
  13. &#092;"); 
  14. } 
  15.  
  16. ## zapisywanie 
  17. if($akcja==&#092;"zapisz_sesje\") { 
  18. session_register(uzytkownik_login); 
  19. session_register(uzytkownik_haslo); 
  20. echo(&#092;"jesteś zalogowany jako \".$_SESSION['login'].\"\"); 
  21. } 
  22. } 
  23. else { 
  24. switch($akcja){ 
  25. case przyklad: 
  26. echo(&#092;"przykładkowy tekst\"); 
  27. break; 
  28. } 
  29. }
  30. ?>


1. Wpisuje dane w formularzu
2. Przechodzę do akcja = zaloguj, gdzie dane z formularza są zapisywane do sesji. Wyświetlam komunikat w którym sprawdzam, czy faktycznie coś się zapisało.
3. I tu pojawia się problem. Jeśli w $akcja (którą teraz zamierzam poddać funkcji switch) znajduje się coś innego niż 'zaloguj' (lub kiedy jest pusta) wyświetla mi się spowotem formularz logowania, a z tego co mi się wydaje przy $akcja = przyklad powinien wyświetlić się komunikat 'przykładowy tekst'.

Wydaje mi się, że coś namieszałem z ifami, jednak siedzę nad tym drugi dzień i nie mogę rozszyfrować. Wiem, że tak patrząc na skrypt z nikąd ciężko jest coś wywnioskować, ale może ktoś jednak wpadnie na to gdzie robie błąd.

Jeśli będą potrzebne jakieś dodatkowe informacje chętnie podam, bo w tej chwili już sam nie wiem co byłoby potrzebne. Ahh ta zabawa z sesjami... winksmiley.jpg
crash
Gdybyś pisał wyraźnie to byś widział swoje błędy. W pierwszej linii już nie masz zamkniętego if'a...
Jim
skrypty pisze sie tak zeby byly czytelne cool.gif

  1. <? 
  2. if($_SESSION['uzytkownik_login']==null or $_SESSION['uzytkownik_haslo']==null) { //jak juz powiedzial crash tutaj brakowalo )
  3. if($akcja!=&#092;"zapisz_sesje\") { 
  4. if($akcja!=&#092;"null\") { 
  5. echo(&#092;"nie jesteś zalogowany, lub twoja sesja wygasła\"); 
  6. } 
  7. echo(&#092;" 
  8. <form action=&#092;"admin.php?akcja=zaloguj\" method=\"post\"> 
  9. login: <input type=&#092;"text\" name=\"uzytkownik_login\" /> 
  10. hasło: <input type=&#092;"password\" name=\"uzytkownik_haslo\" /> 
  11. <input type=&#092;"submit\" value=\"zaloguj\" /> 
  12. </form>&#092;"); 
  13. } 
  14.  
  15. ## zapisywanie 
  16. if($akcja==&#092;"zapisz_sesje\") { 
  17. session_register(uzytkownik_login); 
  18. session_register(uzytkownik_haslo); 
  19. echo(&#092;"jesteś zalogowany jako \".$_SESSION['login'].\"\"); 
  20. } 
  21. } else { 
  22. switch($akcja){ 
  23. case &#092;"przyklad\": echo(\"przykładkowy tekst\");  //wartosci stringow podajemy z dzyndzlami \" \"
  24. break; 
  25. } 
  26. }
  27. ?>


nie bardzo rozumiem punkt 3. rozwin mysl smile.gif
crash
Ad. 3. Jak już to case 'przyklad': i:
  1. <?php
  2. $akcja = $_GET[ 'akcja' ];
  3. ?>
Ociu
Formularz:
  1. <?php
  2. echo '
  3. <form action=\"admin.php?akcja=zaloguj\" method=\"post\">
  4. login: <input type=\"text\" name=\"uzytkownik_login\" />
  5. hasło: <input type=\"password\" name=\"uzytkownik_haslo\" />
  6. <input type=\"submit\" value=\"zaloguj\" />
  7. </form>'; 
  8. ?>


Switch
  1. <?php
  2. switch($akcja)
  3. {
  4. case 'zapisz_sesje':
  5. session_register(uzytkownik_login);
  6. session_register(uzytkownik_haslo);
  7. echo(&#092;"jesteś zalogowany jako \".$_SESSION['login'].\"\");
  8. break;
  9. case 'przyklad': echo(&#092;"przykładkowy tekst\"); break;
  10.  
  11. } 
  12. ?>


Krótszy if:
  1. <?php
  2. if(($_SESSION['uzytkownik_login']==null || $_SESSION['uzytkownik_haslo']==null) && ($akcja != &#092;"zapisz_sesje\" && $akcja != \"null\")) {
  3.  
  4. # jeszcze lepiej:
  5. $not = array(&#092;"null\", \"zapisz sesje\", \"costam\");
  6.  
  7. (!in_array($akcja, $not))
  8. ?>
zx
Oczywiście właściwy kod nie miał tych błędów (brak ')' w if czy ' "" ' w case - ten pisałem na szybko, odrobinę odchudzając.

Rozwijam ptk 3. Tak to wygląda w praktyce: Loguje się, pojawia się komunikat 'Logowanie przebiegło pomyślnie. Jesteś teraz zalogowany jako zx.' I tu właśnie zaczyna się problem. Kiedy przechodzę pod url admin.php?akcja=przyklad wyskakuje mi 'nie jesteś zalogowany, lub twoja sesja wygasła' i formularz logowania - czyli wracam do części pierwszej if'a.

crash - tak czy inaczej nie działa. Poza tym register_globals mam włączone.

Ociu - jeśli nie uda się poprawić mojego na pewno skorzystam, ale chciałbym wiedzieć co zrobiłem źle. A idąc dalej - patrząc na twój kod wnioskuję, że muszę przenieść 'zapisz_sesje' poza pierwszy if (if($_SESSION['uzytkownik_login']==null or $_SESSION['uzytkownik_haslo']==null) ) - czy tak?
aleksander
nie kożysta się jednocześnie z session_register() i z $_SESSION
borec
Cytat(zx @ 2005-07-28 22:52:13)
crash - tak czy inaczej nie działa. Poza tym register_globals mam włączone.

to wylacz
Vertical
1. Zamiast tego:
  1. <?php
  2. ## zapisywanie
  3. if($akcja==&#092;"zapisz_sesje\") {
  4. session_register(uzytkownik_login);
  5. session_register(uzytkownik_haslo);
  6. echo(&#092;"jesteś zalogowany jako \".$_SESSION['login'].\"\"); 
  7. ?>

Powinno być to:
  1. <?php
  2. ## zapisywanie
  3. if($_GET['akcja']==&#092;"zaloguj\") {
  4. session_register($_POST['uzytkownik_login']);
  5. session_register($_POST['uzytkownik_haslo']);
  6. echo(&#092;"jesteś zalogowany jako \".$_SESSION['uzytkownik_login'].\"\"); 
  7. ?>


2. W formularzu lepiej byłoby, jakbyś napisał:
  1. <?php
  2. echo(&#092;"
  3. <form action='admin.php?akcja=zaloguj' method='post'>
  4. login: <input type='text' name='uzytkownik_login' />
  5. hasło: <input type='password' name='uzytkownik_haslo' />
  6. <input type='submit' value='zaloguj' />
  7. </form>
  8. &#092;"); 
  9. ?>
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.