Witam!
To mój pierwszy post na tym forum ale nie pierwsza wizyta:) Zawsze znalazłem tu odp na moje problemy ale nie tym razem:( Siedzę już nad tym trzeci dzień...
Do rzeczy:
1. Loguję się na stronie poprzez formularz
<?php
require_once('biblioteki.php');
naglowek('logowanie');
?>
<div id="log">
<fieldset>
<legend>
<h3>Moduł egzaminator</h3>
</legend>
<form action="log_index.php" method="post">
<p><label>Imię: <input name="imie"/></label></p>
<p><label>Nazwisko: <input name="nazwisko"/></label></p>
<p><label>Nr indeks: <input type="password" name="indeks"/></label></p>
<input type="submit" value="zaloguj"/>
</form>
</fieldset>
</div>
<?php
stopka();
?>
2. Po zatwierdzeniu przenosi mnie do strony gdzie następuje sprawdzenie wpisanych danych i ustawienie sesji
<?php
require_once('biblioteki.php');
naglowek('log_index');
if (($_POST['imie']) && ($_POST['nazwisko']) && ($_POST['indeks']))
{
//proba logowania
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$indeks = $_POST['indeks'];
if (loguj_admin($imie, $nazwisko, $indeks))
{
//$uzytkownik = $indeks;
//jezeli dana konbinacja jest w bazie to zgloszenie identyfikatora uzytkownika
$_SESSION['uzyt_admin'] = $indeks;
sprawdz_uzyt_admin();
echo "<h3>Administracja - strona główna</h3><br/><br/>"; echo "<p>Co chcesz teraz zrobić?</p>"; menu_glowne_admin();
}
else if (loguj_user($imie, $nazwisko, $indeks))
{
$uzytkownik = $indeks;
//jezeli dana konbinacja jest w bazie to zgloszenie identyfikatora uzytkownika
$_SESSION['prawid_uzyt'] = $uzytkownik;
sprawdz_prawid_uzyt();
echo "Jako użytkownik możesz rozpocząć test.<br/>"; tworz_HTML_URL('log_test_form.php', 'Rozpocznij test');
}
else
{
echo "Problem z zalogowaniem!"; }
}
else
{
sprawdz_uzyt_admin();
//naglowek('log_index');
echo "<h3>Administracja - strona główna</h3><br/><br/>"; echo "<p>Co chcesz teraz zrobić?</p>"; menu_glowne_admin();
}
stopka();
?>
Teraz funkcje sprawdzające:
<?php
function loguj_admin($imie, $nazwisko, $indeks)
{
$lacz = lacz_bd();
$zapytanie = "select * from administrator
where imie = '".$imie."' and nazwisko = '".$nazwisko."' and indeks = '".$indeks."'";
$wynik = $lacz->query($zapytanie);
if (!$wynik)
{
echo "Logowanie nie powiodło się! Jesteś w bazie?"; }
if ($wynik->num_rows > 0)
{
return true;
}
else
{
echo "Nie można zalogować jako admin<br/>"; return false;
}
}
function sprawdz_uzyt_admin()
{
// sprawdzenie zalogowanie i powiadomienie, jeżeli nie
if (isset($_SESSION['uzyt_admin'])) {
$indeks = $_SESSION['uzyt_admin'];
$lacz = lacz_bd();
$zapytanie = "select imie, nazwisko from administrator
where indeks = '".$indeks."'";
$wynik = $lacz->query($zapytanie);
$wynik = wynik_bd_do_tablicy($wynik);
foreach ($wynik as $rzad)
{
$imie = $rzad['imie'];
$nazwisko = $rzad['nazwisko'];
}
//echo "Zalogowano jako ".$_SESSION['uzyt_admin']." ";
echo "<br/>Zmienna sesji zawiera ". $_SESSION['uzyt_admin']."<br/>"; echo "<img class=\"ikon16\" src=\"images/ikony/16/user.png\"/>Zalogowano jako $imie $nazwisko "; tworz_HTML_URL('wylog.php', 'wyloguj');
//return true;
}
else
{
echo 'Brak zalogowania jako admin.<br />'; echo "Zmienna sesji zawiera". $_SESSION['uzyt_admin']."<br/>"; tworz_HTML_URL('logowanie.php', 'Logowanie');
stopka();
// return false;
}
}
3. Kiedy wybieram już kolejną stronę sesja znika:(
-Wszystkie strony poza tą w pkt1 rozpoczynają się od session_start() - i nie ma przed tym innych znaków.
-Na localhost działa ok.
-I najciekawsze -> stronka jest na serwerze 4 dzień. Kiedy wrzuciłem ją wszystko chodziło, sesje działały. Po dwóch dniach sesja działa tylko na stronie z pkt2 a na pozostałych nie. Nie mam już siły do tego.
Ktoś podpowie?