Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Logowanie na sesjach
Forum PHP.pl > Forum > Przedszkole
phonnix
Witam.

Od kilku dni robię swoją stronę (grę rpg) mam już zrobioną rejestrację, logowanie, i kilka innych rzeczy. Chcę zrobić coś takiego, że jak się logujesz, wpiszesz poprawnie Login i hasło to cię przenosi do strony na którą można weść jak się jest zalogowanym, jeśli nie jesteś zalogowany to przenosi cię do logowanie. I to jest moje pytanie ja to można zrobic głowiłem się nad tym sporo czasu, pomyślałem, żeby tutaj użyc sesji ($_SESSION['zalogowany']=1;
$_SESSION['user']=$l; ) czy jakoś tak. Proszę o pomoc

Oto mój kod logowania :

CODE
ob_start();
require_once('./config.php'); // załaczamy plik config.php

session_start();

function usun($data){

GLOBAL $dbc;
if (ini_get('magic_quotes_gpc')){
$data = stripslashes($data);
}
return mysql_real_escape_string($data, $dbc);
}
if (isset($_POST['submit'])){

if (empty($_POST['login'])){
$message .= 'Nie podałeś loginu
';
$l = FALSE;
}else{
$l = usun($_POST['login']);
}

if (empty($_POST['haslo'])){
$message .= 'Nie podałeś hasła
';
$h = FALSE;
}else{
$h = usun($_POST['haslo']);
}
if ( $l && $h ){

$query = "SELECT username, access FROM user WHERE username='$l' AND haslo=password('$h')";
$result = mysql_query($query);
$row = mysql_fetch_array ($result, MYSQL_ASSOC);
if($row){
session_start();
$_SESSION['username'] = $row['username'];
$_SESSION['access'] = $row['access'];
$_GET['cmd'] = 'ok';
header ("Location: start.php"); // przekierowuje nas na jaka strone chcemy
}else{
$message .= 'Błędne hasło lub login
';
}
mysql_close();
}else{
$message .= 'Spróbuj jeszcze raz';

}
{
$_SESSION['zalogowany']=1;
$_SESSION['user']=$l;
}
}
ob_end_flush();
?>
chemik1982
  1. <?php
  2. ini_get('magic_quotes_gpc');
  3. ?>

Jesli juz ci to jest potrzebne to wrzuc to do configa i starczy.
Zmiennych globalnych staraj sie unikac.
  1. <?php
  2. if (login()){
  3. $_SESSION['zalogowany']=1;
  4. header('Location: dalej');
  5. }else{
  6.  header('Location: do logowania');
  7. }
  8. ?>


sprawdzanie czy zalogowany:

  1. <?php
  2. if($_SESSION['zalogowany']){
  3.  //tutaj co tam chcesz
  4. }else{
  5. header('Location: do logowania');
  6. }
  7. ?>


A swoja droga o logowaniu w oparcie o sesje to jest tutaj TONA.
phonnix
Błąd ;/
Fatal error: Call to undefined function: login() in ******************/start.php on line 3

Mi o to chodzi, że jak nie jesteś zalogowany a wpiszesz np www.strona.pl/start.php(strona do której przenosi po zalogowaniu) to ciebie przenosi do error.php i pisze "nie jesteś zalogowany". I jeszcze, żeby później kiedy przemieszczasz się po stronach na które trzeba się zalogować to samo się działo worriedsmiley.gif


webasek
robisz na stronie start.php sprawdzenie :

  1. <?php
  2. if ($_SESSION['zalogowany']!=1)
  3. {
  4.  header("error.php");
  5. }
  6. else
  7. {
  8. //kod jesli jestes zalogowany
  9. }
  10.  
  11. ?>


lub jeśli plik jest includowany do indexu tow indexie robisz sprawdzenie (dla których stron musi być zalogowany) jeśli nie to załączasz error.php i gotowe

Możesz też w .htaccess dorzucić blokade bezpośredniego wchodzenia na daną stronę i już
phonnix
Nie działa sadsmiley02.gif , a mam pytanie:
CODE
($_SESSION['zalogowany']!=1)


czyli "1" oznacza, że jestem zalogowany, ale skąd może to wiedzieć skrypt?
Nigdzie nie pisałem, że tak ma być worriedsmiley.gif

Czegoś tu brakuje
webasek
zamiast $_SESSION!=1 bo myślałem z poprzedniego posta że to oznacza że jest zalogowany to można użyć isset(nazwa_zmiennej)

czyli

  1. <?php
  2. if (isset($_SESSION['username']))
  3. {
  4.  header("error.php");
  5. }
  6. else
  7. {
  8. //kod jesli jestes zalogowany
  9. }
  10. ?>


Po za tym istotna uwaga nie używaj zmiennych typu $l $h tylko porządnie je nazywaj bo za parę miesięcy nie będziesz wiedział co i jak.
phonnix
Nie wiem co jest nadal nie działa sadsmiley02.gif
Próbuje wszystkich kombinacji i tak nic.
Po zalogowani przenosi mnie na stronę, ale po wylogowaniu nadal mogę wejść jak gdy by nigdy nic worriedsmiley.gif

Może jest jakiś inny sposób? Jak jest to jaki, i jak to zrobić?
chemik1982
Cytat
czyli "1" oznacza, że jestem zalogowany, ale skąd może to wiedzieć skrypt?
Nigdzie nie pisałem, że tak ma być


Wiem ze nie pisales. Natomiast wartosc tej zmiennej jest ustawiana podczas logowania.
Napisalem ci warunek:

  1. <?php
  2. if (login()){
  3. $_SESSION['zalogowany']=1;
  4. header('Location: dalej');
  5. }else{
  6.  header('Location: do logowania');
  7. }
  8. ?>


Musisz dopisac sobie funkcje login(), ktora sprawdzi tobie czy dane podane przez uzytkownika zgadzaja sie z danymi w bazie. Jesli tak funkcja musi zwrocic ci true w innym wypadku false. Mozesz do tej funkcji przekazac parametry login i haslo.

Pobierz i/lub ustaw ścieżkę zapisu bieżącej sesji.

Polecam przetestowanie. W tym katalogu zapisze ci sie plik sesji. Otworz go sobie i zobacz co sie zapisalo. Podpowiem ze, jest to forma zserializowana, taki sam efekt uzyskalbys stosujac funkcje serialize() na jakiejs zwyklej zmiennej.
Na co niektorych serwerach, szczegolnie darmowych, warto a nawet trzeba to stosowac, kwestia bezpieczenstwa, doczytaj sobie w necie.
phonnix
Teraz to już nie wiem co robić :/

Macie może jakiś tutorial czy coś?

Mogli byście dać jakiś podstawowy skrypt logowanie do strony, i żeby na ta stronę niezalogowani nie mogli wejść?
chemik1982
Sesje w PHP
Autor twierdzie ze proste

Doczytaj o sesjach.

Pogodz sie z googlami. Znalazbys 100 razy szybciej niz poprosiles na forum.
phonnix
1.Czytam, czytam i nic to mi nie daje
2.Widziałem ten tutorial, ale ja mam logowanie operte o bazę danych
3.Na google szukałem i znalazłem ten forum
4.No to po co ten forum?
chemik1982
Dobra inaczej, napisz czego nie rozumiesz.
phonnix
Ok już sobie sam poradziłem -.-
I po co ludziom forum na którym odpowiedź na posta to "google.pl"?
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.