Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularze, logowanie i PHP
Forum PHP.pl > Forum > PHP
marcingl
Witam Panstwa,
Mam problem, ktorego od dluzszego czasu nie potrafie rozwiazac.
Chodzi o logowanie do bazy danych postgresql z poziomu przegladarki.
Gdy wysle pole login i haslo metoda get i porownam je z danymi z bazy danych tak napisany skrypt jest niewrazliwy na wylogowywanie, bo jezeli nawet zniszcze sesje w ktorej przechowywalem haslo i login, to po powroceniu do strony logowania i nacisnieciu przycisku refresh login i haslo sa znow wpisywane do sesji z formularza.
Jak zrobic, zeby tylko raz pobrac login i haslo? Chcialbym takze, zeby mozna bylo przewracac kartki w przegladarce przyciskiem back i odczytywac informacje tak dlugo jak dlugo jestem zalogowany.
Dziekuje za podpowiedzi,

Marcin Glogowski
Fo
a moglbys umiescic jakis kod ? tylko prosze nie zapomnij o znacznikach php przy umieszczaniu kodu :!: aaevil.gif
napisz na poczatku kodu:
Kod


[php]

tutaj kod php

[/php]
ulatwi to nam prace - no chyba ze znajdzie sie ktos kto powie ci o co chodzi bez patrzenia na kod skryptu - ja bym wolal zobaczyc...
marcingl
Dobrze, oto kod strony glownej:
[php:1:87f1147501]
session_start();
include('naglowek.inc.php');

echo "<form action='projekt.php' method='get'>
<br>
<table>
<tr>
<td>
Użytkownik
</td>
<td>
<input name='login' type='text'>
</td>
</tr>

<tr>
<td>
Hasło
</td>
<td>
<input name='haslo' type='password'>
<input type='submit' value='Loguj'>
</td>
</tr>
</table>
</form>";

include('stopka.inc.php');
[/php:1:87f1147501]

no i kod strony, na ktora wchodze po nacisnieciu przycisku

[php:1:87f1147501]
session_start();
error_reporting(D_ALL);
include('naglowek.inc.php');
$zalogowany = $_SESSION['zalogowany'];

if ($zalogowany == 1)
{
$login=$_SESSION['login'];
$haslo=$_SESSION['haslo'];
}else
if (!isset($zalogowany))
{
$login=$_GET['login'];
$haslo=$_GET['haslo'];

$_SESSION['login'] = $login;
$_SESSION['haslo'] = $haslo;

$baza = pg_connect("dbname=sklad user='$login' password='$haslo'");
if ($baza)
{
$zalogowany = $_SESSION['zalogowany'] = 1;
pg_close();
}
}
[/php:1:87f1147501]

Tak jak juz wspomnialem, jezeli bylo nieprawidlowe logowanie, to sesja zostaje zniszczona poprzez session_destroy(); ale po powrocie na strone projekt.php i odswierzeniu znow mozna wejsc do bazy danych, no login i haslo jest pobierane poprzez get z formularza.

Pozdrawiam
Project
A moze by tak ustawic ciasteczko po przetworzeniu danych z forumlarz...
(?)
W ten sposob dwa razy nie da sie uzyc tych samych zmiennych z formularza. Nie wiem czy dobrze kojarze ale jezeli (chyba) nie ustali sie limitu zywotnosci ciahca to po zamknieciu przegladarki zostanie ono usuniete - wiec nie bylo by problemu z powtornym logowaniem!
Drugim sposobem jaki przychodzi mi na mysl to podczas sprawdzania danych z formularza najpierw sprawdzic czy nie ma juz zainicjowanych zmiennych w sesji a zamiast uzywac session_destroy() poprostu zmienic wartosci login i hasla na jakies nieuzyteczne...
Moze ktorys pomysl Ci sie spodoba i wykorzystasz go...

PS nie zapomnij na pisac na forum jak rozwiazales swoj problem
smile.gif

Pozdrawiam
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.