Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sesje
Forum PHP.pl > Forum > PHP
sebastiankozub
witam

mam problem z sesja... po kliknieciu zaloguj uzytkownik zostaje zalogowany, jednal po przejsciu do innej podstrony juz zostaje wylogowany.
gdy jednak po zalogowaniu wcisne F5 na tej stronie na ktorej sie zalogowalem wszystko jest ok - jest nadal zalogowany
dodam ze napewno na kazdej stronie mam sesion_start(); poniewaz korzystam z napisanej biblioteki i dodaczam ten sam naglowek zawsze

login = 123 haslo = 123 strona Test IQ

Logowanie:
  1.  
  2. function loadHtmlHead($description, $keywords, $author, $title)
  3. {
  4.  
  5. $serwer_bazy = "sql.infoportale.nazwa.pl";
  6. $nazwa_bazy = "";
  7. $uzytkownik_bazy = "";
  8. $haslo_uzytkownika_bazy = "";
  9.  
  10. if(isset($_POST['login']) && isset($_POST['haslo']))
  11. {
  12. $database = new mysqli($serwer_bazy, $uzytkownik_bazy, $haslo_uzytkownika_bazy, $nazwa_bazy);
  13.  
  14. //if(!($database->connect_errno))
  15. //{
  16.  
  17. if($_POST['login']=="123" && $_POST['haslo']=="123")
  18. {
  19.  
  20. //$zapytanie = "select * from program where mail = '".$_POST['login']."' and haslo = '".md5($_POST['haslo'])."';";
  21. //$result = $database->query($zapytanie);
  22. //if($result->num_rows > 0)
  23. //{
  24. $_SESSION['prawid_uzyt'] = $_POST['login'];
  25. //}
  26. }
  27. }
  28.  
  29. echo ("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n");
  30. echo ("<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"pl\" xml:lang=\"pl\">\n");
  31. echo ("<head>\n");
  32. echo (" <meta http-equiv=\"Content-type\" content=\"text/html; charset=ISO-8859-2\" />\n");
  33. echo (" <meta name=\"Description\" content=\"$description\" />\n");
  34. echo (" <meta name=\"Keywords\" content=\"$keywords\" />\n");
  35. echo (" <meta name=\"Author\" content=\"$author\" />\n");
  36. echo (" <meta name=\"robots\" content=\"index,follow\"/>\n");
  37. echo (" <title>$title</title>\n");
  38. echo (" <link rel=\"stylesheet\" href=\"default.css\" type=\"text/css\" />\n");
  39. }



Sprawdzanie
  1. function loadPageLogo($test=0)
  2. {
  3.  
  4. ?>
  5. <body <?php if($test==1 && ktore_pytanie($_POST['q_c'])<=30){echo "onload=\"window.scrollTo(0,224); doTimer();\""; } ?> >
  6. <div id="wrapper">
  7. <div id="header-wrapper">
  8. <div id="header">
  9. <div id="logo">
  10. <div id="logowanie">
  11. <?php
  12.  
  13. if(isset($_SESSION['prawid_uzyt']))
  14. {
  15. echo "<p> Witaj ".$_SESSION['prawid_uzyt']."</p>";
  16. echo "<a href=\"wyloguj.php\">Wyloguj</a>";
  17. }
  18. else
  19. {
  20. if(isset($_POST['login'])) // nastąpiła próba logowania nieprawidłowymi danymi
  21. {
  22. echo "<p> Nazwa użytkownika lub hasło nieprawidłowa.</p>";
  23. }
  24.  
  25. $plik = $_SERVER["PHP_SELF"];
  26. str_replace("/","",$plik);
  27. ?>
  28. <form action="<?php echo $plik; ?>" method="POST">
  29. e-mail:
  30. <input type="text" name="login" id="login" /><br />
  31. hasło:
  32. <input type="text" name="haslo" id="haslo" /><br />
  33. <input type="submit" name="submit" id="submit" value="Zaloguj" />
  34. </form>
  35. <?php
  36. }
  37. ?>
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. <?php
  43. }
akaz
Pamiętaj:
jeżeli nie korzystasz z cookies, session_start() musi być zawsze wywołane zanim cokolwiek dasz na wyjście do przeglądarki,
czyli najlepiej mieć zawsze session_start() na samym początku skryptu.
Nie mamy wglądu do podstron więc nie wiemy, czy poprawnie wykorzystujesz session_start().
sebastiankozub
  1. <?php
  2. include_once("function_library.inc");
  3. loadHtmlHead("test na inteligencje test iq","test na inteligencje test iq","Sebastian Kozub","Test IQ");
  4. loadPageLogo();
  5. loadPageMenu(4);
  6. loadSidebox();
  7. ?>


tak to wyglada na wszystkich podstronach czyli laduje bilblioteke w ktorej jest funkcja loadHtmlHead(); po czym wywołuję tą funkcję....
w tej funkcji zaraz na początku jest session_strat();

A jak to rozwiązać na ciasteczkach?

ok rozwiązałem problem...
wygląda na to ze nawet nie moge wczesniej definicji funkcji wrzucac....
nie wiedzialem, dzieki
korey
Po

Kod
if($_POST['login']=="123" && $_POST['haslo']=="123")
{
dałbym

$_SESSION['login'] = $log;
$_SESSION['haslo'] = $pass;
}

zamiast
Kod
  $_SESSION['prawid_uzyt'] = $_POST['login'];

i na samej górze po <?php
dajesz to:

$log = $_POST['login'];
$pass = $_POST['haslo'];

----------------------------------------

SPRAWDZENIE

po
Kod
<?php
dajesz to:
session_start();
$log = $_SESSION['login'];
$pass = $_SESSION['haslo'];



a potem:
Kod
if ((isset($log) && isset($pass) && $log != ""  && $pass != "")){

// CO BEDZIE WIDOCZNE PO ZALOGOWANIU

}
else {
// TO CO GDY NIE JESTEŚMY ZALOGOWANI.
(ja np mam tu formularz logowania) :)
}


--------------------------------------------

WYLOGOWANIE
link wylogowywujący:
Kod
    echo '<a href="log_of.php">Wyloguj</a>';


plik log_of.php:
Kod
<?php
    session_unset();
    echo 'Zostałeś pomyślnie wylogowany.';
?>



ja zrobił bym to jakoś tak tylko esion_start(); to ja trzymam w layaucie w headerze.php biggrin.gif
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.