Chciałbym zrobić takie cudo, że przycisk "wyloguj" pojawi się dopiero wtedy gdy się zalogujemy. Kod obecny wklejam poniżej:
<?php if(http://www.php.net/unset($_SESSION['zalogowany'])) { http://www.php.net/echo http://www.php.net/file_get_contents('API/dot.php'); } ?>
Jeśli już, to takie coś
<?php if(http://www.php.net/unset($_SESSION['zalogowany'])) { include 'API/dot.php'; } ?>
Zrobiłem i nie działa ://///////////
A dlaczego miało by działać?
No tak, fakt. unset() usuwa zmienną/indeks, dlatego if() nie działa - nie zauważyłem. Spróbuj tak:
<?php if(http://www.php.net/isset($_SESSION['zalogowany'])) { include 'API/dot.php'; } ?>
Zrobiłem jak mówiłeś, nic...
<?php if(!http://www.php.net/isset($_SESSION['zalogowany'])) { include 'API/dot.php'; ?>
<http://december.com/html/4/element/form.html method="POST" action="wylog.php"> <http://december.com/html/4/element/input.html class="pz" type="submit" value="wyloguj" name="wyloguj"> </http://december.com/html/4/element/form.html>
A gdzie niby w tym kodzie jest session_start? Php to nie wróżka.
Session start jest powyżej, razem z session register...
<?php http://www.php.net/echo http://www.php.net/file_get_contents('config.php'); http://www.php.net/session_start(); http://www.php.net/session_register("zalogowany"); ?>
Aha. I błędy też są ale je ukrywasz. Start sesji ma być umieszczony przed treścią wysłaną do przeglądarki.
Są błędy, ale je ukrywam? Nie widzę sensu, jak jest błąd to wolę go naprawić niż ukryć, dziwne masz podejście kolego...
Po prostu ja ich nie widzę, a nikt w internetach, w sprawdzonych zródłach o tym nie mówi, a sesja działa, jestem na każdej podstronie zalogowany - sprawdzone dzięki skryptowi wylogowania...
Skoro jesteś taki pewny to założysz się o 1000 cebulionów że nie ma żadnego warninga w kodzie
<?php http://www.php.net/echo 'x'; http://www.php.net/session_start();
Podaje Ci przykład jak można to zrobić.
<?php http://www.php.net/session_start(); $Log = 'asd'; // dane do zalogowania login $Pwd = 'pwd'; // dane do zalogowania Hasło if(!function_exists('LogIn')) { function LogIn($ArgObj1) { $ArgObj1 = "<form method=\"POST\" action=" . $_SERVER['SCRIPT_NAME'] . "?step=1>"; $ArgObj1 .= "login: <input type=\"text\" name=\"LoginName\">"; $ArgObj1 .= "Hasło: <input type=\"text\" name=\"PasswordName\">"; $ArgObj1 .= "<input type=\"submit\" value=\"Loguj sie\" name=\"input\">"; $ArgObj1 .= "</form>"; return $ArgObj1; } } if(!function_exists('ShowLogOutLinkAndDetails')) { function ShowLogOutLinkAndDetails($Arg2, $sess) { $Arg2 = "Witaj: " . $_SESSION['login']; $Arg2 .= "<br>"; $Arg2 .= "<a href=" . $_SERVER['SCRIPT_NAME'] . "?step=2>Wyloguj</a>"; return $Arg2; } } @$step = $_GET['step']; (!http://www.php.net/isset($step)) ? $step = 0 : $step = $step; switch($step): case('0'): if(http://www.php.net/isset($_SESSION['reg'])) { http://www.php.net/print ShowLogOutLinkAndDetails($Arg2 = true, $_SESSION['login']); } else { http://www.php.net/echo LogIn($ArgObj1 = true); } break; case('1'): $submit = $_POST['input']; $LoginName = $_POST['LoginName']; $PasswordName = $_POST['PasswordName']; if(http://www.php.net/isset($_SESSION['reg'])) { http://www.php.net/print ShowLogOutLinkAndDetails($Arg2 = true, $_SESSION['login']); } else { if($submit) { if(($LoginName == $Log) && ($PasswordName == $Pwd)) { if ($_SERVER['REQUEST_METHOD'] === 'POST') { if(session_status() == PHP_SESSION_ACTIVE) { $_SESSION['login'] = $LoginName; $_SESSION['pass'] = $PasswordName; $_SESSION['reg'] = 'ok'; http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; } } } else { http://www.php.net/exit("Dane są nieprawidłowe <a href=". $_SERVER['SCRIPT_NAME'] .">WSTECZ</a>"); // nigdy nie podawaj przyczyny bledu chyba ze to bedzie blad loginu czy hasla } } else { http://www.php.net/exit("error 001"); // nigdy nie podawaj przyczyny bledu ; error 001 jest jak nie zostaje wyslany formularz. Tu albo to albo od razu header bez cackania sie } } break; case('2'): http://www.php.net/unset($LoginName); http://www.php.net/unset($PasswordName); http://www.php.net/unset($reg); $_SESSION = http://www.php.net/array(); http://www.php.net/session_destroy(); http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; break; default: http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; endswitch; ?>
<?php http://www.php.net/echo 'x'; http://www.php.net/session_start();
Jakiś warning może będzie, ale chciałbym zauważyć, że jest to plik dołączany do każdej pod strony - także tej, która jest widoczna tylko dla osób zalogowanych i tam to śmiga. Więc jeżeli macie jakiekolwiek inny pomysł jak ukryć przycisk wylogowania, to chętnie przygarnę pomysł.
No to ja ci mówię jeszcze raz że nie ma prawa działać sesja z tym błędem. Pewnie masz zły kod który sprawdza czy dupa Maryny jest równa true albo przypisanie zamiast porównania i dlatego się jakiś if wykonuje.
Miałeś rację, co do sesji, ale to nie wyjaśnia, dlaczego nie mogę dać inputa i formularza jako echo.
Skąd wiem, że miałeś rację? Bo to działa:
http://www.php.net/session_start(); $kom = ""; if(!http://www.php.net/isset($_SESSION['zalogowany'])){ $_SESSION['komunikat'] = "Nie jesteś zalogowany!"; http://www.php.net/echo $_SESSION['komunikat'], "<br>"; http://www.php.net/echo "<br>","Aby widzieć tę stronę musisz być zalogowany", "</font>", "</b>", "<br>", "</div>"; http://www.php.net/echo http://www.php.net/file_get_contents('sklad/footer.php'); http://www.php.net/exit(); }
Teraz nie wiem o czym mówisz. Kod możesz wstawić dowolny o ile będzie za nagłówkami.
To mi coś nie styka, kod np. taki:
if(!http://www.php.net/isset($_SESSION['zalogowany'])){ $_SESSION['komunikat'] = "Nie jesteś zalogowany!"; http://www.php.net/echo "<form method="POST" action="wylog.php"> <input class="pz" type="submit" value="wyloguj" name="wyloguj"> </form>"; }
Wstawiasz \" albo odpowiednio odwrotnie '. Sugeruje czytanie dokumentacji.
Dobra, zrobiłem takie cudo:
<?php http://www.php.net/session_start(); if(!http://www.php.net/isset($_SESSION['zalogowany'])){ http://www.php.net/echo '<form method="POST" action="wylog.php"> <input class="pz" type="submit" value="wyloguj" name="wyloguj"> </form>' } ?>
'; exit(); } ?>
W tym kodzie wyżej po echo jest błąd skladniowy. Brakuje srednika. Zwracaj uwagi na błędy w końcu.
http://www.php.net/session_start(); $kom = ""; if(!http://www.php.net/isset($_SESSION['zalogowany'])){ $_SESSION['komunikat'] = "Nie jesteś zalogowany!"; http://www.php.net/echo $_SESSION['komunikat'], "<br>"; http://www.php.net/echo "<br>","Aby widzieć tę stronę musisz być zalogowany", "</font>", "</b>", "<br>", "</div>"; http://www.php.net/echo http://www.php.net/file_get_contents('sklad/footer.php'); http://www.php.net/exit(); }
<?php http://www.php.net/session_start(); $Log = 'asd'; // dane do zalogowania login $Pwd = 'pwd'; // dane do zalogowania Hasło if(!function_exists('LogIn')) { function LogIn($ArgObj1) { $ArgObj1 = "<form method=\"POST\" action=" . $_SERVER['SCRIPT_NAME'] . "?step=1>"; $ArgObj1 .= "login: <input type=\"text\" name=\"LoginName\">"; $ArgObj1 .= "Hasło: <input type=\"password\" name=\"PasswordName\">"; $ArgObj1 .= "<input type=\"submit\" value=\"Loguj sie\" name=\"input\">"; $ArgObj1 .= "</form>"; return $ArgObj1; } } if(!function_exists('ShowLogOutLinkAndDetails')) { function ShowLogOutLinkAndDetails($sess) { return "Witaj: " . $sess . "<br><a href=" . $_SERVER['SCRIPT_NAME'] . "?step=2>Wyloguj</a>"; } } @$step = $_GET['step']; (!http://www.php.net/isset($step)) ? $step = 0 : $step = $step; switch($step): case('0'): if(http://www.php.net/isset($_SESSION['user']['login'])) { http://www.php.net/print ShowLogOutLinkAndDetails($_SESSION['user']['login']); } else { http://www.php.net/echo LogIn($ArgObj1 = true); } break; case('1'): $submit = $_POST['input']; $LoginName = $_POST['LoginName']; $PasswordName = $_POST['PasswordName']; if(http://www.php.net/isset($_SESSION['user']['login'])) { http://www.php.net/print ShowLogOutLinkAndDetails($_SESSION['user']['login']); } else { if($submit) { if(($LoginName == $Log) && ($PasswordName == $Pwd)) { if ($_SERVER['REQUEST_METHOD'] === 'POST') { if(session_status() == PHP_SESSION_ACTIVE) { http://www.php.net/session_regenerate_id(); $_SESSION['user']['login'] = $LoginName; $_SESSION['user']['password'] = $PasswordName; http://www.php.net/session_regenerate_id(); http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; } } } else { http://www.php.net/exit("Dane są nieprawidłowe <a href=". $_SERVER['SCRIPT_NAME'] .">WSTECZ</a>"); // nigdy nie podawaj przyczyny bledu chyba ze to bedzie blad loginu czy hasla } } else { http://www.php.net/exit("error 001"); // nigdy nie podawaj przyczyny bledu ; error 001 jest jak nie zostaje wyslany formularz } } break; case('2'): http://www.php.net/unset($_SESSION['user']['login']); http://www.php.net/unset($_SESSION['user']['password']); $_SESSION = http://www.php.net/array(); if (http://www.php.net/ini_get("session.use_cookies")) { $params = http://www.php.net/session_get_cookie_params(); http://www.php.net/setcookie(http://www.php.net/session_name(), '', http://www.php.net/time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]); } http://www.php.net/session_destroy(); http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; break; default: http://www.php.net/header('location:' . $_SERVER['SCRIPT_NAME']); http://www.php.net/exit; endswitch; ?>
Akurat kod z echo jest ok
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)