Jak zrealizować proces logowania użytkownika w PHP?

0

Mam zrobione logowanie na stronie. Niby działa po wpisaniu loginu i hasła widać treść tylko dla zalogowanych ale gdy kliknie się jakąś podstronę tak jakby automatycznie wylogowuje. Nie wiem co jest źle. Wylogowanie jeszcze nie robiłem w ogóle.
login.php:

<?PHPsession_start();?>
<?PHP
$link = mysql_connect("localhost", "login", "haslo") or die ("Nie można połączyć się z bazą");
mysql_select_db("login") or die('Nie można wybrać bazy danych: ' . mysql_error());
if($link) echo "Połączono z bazą";
?>

<?PHP
if(isset($_POST['zaloguj'])) {


   if(mysql_num_rows(mysql_query("SELECT login, haslo
   FROM konta WHERE login = '".$_POST['login']."' 
   && haslo = '".$_POST['haslo']."' ")) > 0) {


       if(mysql_num_rows(mysql_query("SELECT id_k FROM konta
       WHERE login = '".$_POST['login']."' 
       && haslo = '".$_POST['haslo']."' ")) > 0 ) {


           $_SESSION['zalogowany'] = true;
           $_SESSION['login'] = $_POST['login'];
           $_SESSION['haslo'] = $_POST['haslo'];
           echo "Jesteś zalogowany.";


       } else { 

   echo "Złe hasło, proszę spróbować ponownie";
}
} else { 
   echo "Nie ma takiego użytkownika";
}
}
?>
<h2>Logowanie</h2>

<form action="http://localhost/www/index.php?menu=7" method="POST">
<table>
<tr>
   <td width="150">Login: </td>
   <td width="150"><input type="text" name="login" value="<?php if(isset($_POST['login'])) echo $_POST['login'];?> "/></td>
   <td width="300"><?PHP echo $info_txt_nick;?></td>
</tr>
<tr>
   <td width="150">Hasło: </td>
   <td width="150"><input type="password" name="haslo"/></td>
   <td width="300"><?PHP echo $info_txt_haslo;?> </td>
</tr>
<tr>
   <td></td>
   <td><input type="submit" name="zaloguj" value="zaloguj" /></td>
</tr>
</table>
</form>

w index.php tak mam zrobione sprawdzanie czy ktos jest zalogowany:

<?php
 if (isset($_SESSION['zalogowany']))
  { 
   echo "tresc dla zalogowanych";
  }
   else
  {
   echo "buahaha jesteś niezarejestrowany";
  }
?>
0

Upewnij sie ze masz w pasku adresu localhost a nie np. 127.0.0.1. Dla sesji to nie to samo. Musisz caly czas przekierowywac albo nal ocalhost albo na 127....

0

cały czas jest localhost

0

Hmm... zależy od wersji php.
Sprawdź:

session_start()
0

Dawno nie pisałem w PHP, ale ja zacząłbym sprawdzanie od pierwszej linijki, bo nie wiem czy nierobienie przerwy po symbolu <?PHP nie jest przypadkiem błędem.

0

Z przerwą też nie działa dobrze.

0

Spróbuj dać session_start(); też w index.php

0

Pamietam jak napisalem pierwszy raz autoryzacje w PHP. Myslalem wtedy ze zwojowalem caly internet :D Nic wtedy jeszcze nie wiedzialem o wzorcach projektowych, frameworkach webowych, orm'ach do baz danych i calej masie podobnego stuff'u ktorego sie uzywa w powaznych projektach..

1 użytkowników online, w tym zalogowanych: 0, gości: 1