Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nie dzialajacy system logowania www
Forum PHP.pl > Forum > PHP
maniek2410
nagle przestal mi dzialac napisany przeze mnie system logowania na strone www, sadze ze moze miec to wplyw ze hosting wprowadzil mi nowa wersje php(php 5.2.5) co w tym kodzie jest niezgodne ze standartem?

CODE
<?php

$url = 'l*';
$identyfikator = '*';
$haslo = '*';
$baza_danych="*";
$tabela="*";

if (session_is_registered("wylogowany"))
{unset($_SERVER['PHP_AUTH_USER']);
$wynik=session_unregister("wylogowany");}
if (! session_is_registered("prawid_uzyt")) //jeśli uzytkownik nie jest zalogowany oraz jest to pierwsza proba wpisania nazwy uzytkownika
{

if (!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Tajne miejsce"');
header('HTTP/1.0 401 Unauthorized');
echo 'Brak dostępu';
echo'<meta http-equiv="refresh" content="1; url=../index.php">' ;
exit;

}
else if (isset($_SERVER['PHP_AUTH_USER'])) //uzytkownik podal swój nickname
{
$bd_lacz=mysql_connect($url, $identyfikator, $haslo);
mysql_select_db($baza_danych);
$pom1 = $_SERVER['PHP_AUTH_USER'];
$pom2 = $_SERVER['PHP_AUTH_PW'];
$zapytanie="select * from $tabela where user='$_SERVER['PHP_AUTH_USER']' and password='$_SERVER['PHP_AUTH_PW']'";
$wynik=mysql_query($zapytanie);
if(mysql_num_rows($wynik)>0) // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
{
$prawid_uzyt=$_SERVER['PHP_AUTH_USER'];
session_register("prawid_uzyt");

}
else
{
header('WWW-Authenticate: Basic realm="Tajne miejsce"');
header('HTTP/1.0 401 Unauthorized');
echo 'Brak dostępu';
echo'<meta http-equiv="refresh" content="1; url=../index.php">' ;

exit;
}
}
}

if (session_is_registered("prawid_uzyt"))
{
echo'<meta http-equiv="refresh" content="0; url=baza_danych.php">' ;
}


ob_end_flush();//koniec buforowania danych
?>
pyro
nie ma to jak domyslanie sie co ci nie dziala...
maniek2410
chodzi o to ze pomimo wprowadzenia poprawnego uzytkownika i hasla(sprawdzalem w bazie danych) nie moge sie zalogowac
hateman
takie rozwiązanie sesji stosowało się w PHP 4
session_is_registered()

Powinieneś pozamieniać to sobie na zmienne sesyjne:
$_SESSION[ ]
Tworzysz sobie zmienną przy logowaniu np.
Kod
$_SESSION['zalogowany'] = 'OK';

A później sprawdzasz czy taka zmienna sesyjna istnieje
Kod
if($_SESSION['zalogowany'] == 'OK')

Jak tak to znaczy, że zalogowany smile.gif
maniek2410
zmodernizowalem kod, ale efekt jest ten sam, mozesz zobaczyc czy nie ma w nim bledow?
CODE

<?php
ob_start(); //funkcja uruchamiajaca buforowanie, pozwala na ponowne wysłanie nagłowka(Header)
session_start(); //początek sesji
$url = '*';
$identyfikator = '*';
$haslo = '*';
$baza_danych="*";
$tabela="*";

if($_SESSION['wylogowany'] == 'OK')
{
unset($_SERVER['PHP_AUTH_USER']);
$_SESSION['wylogowany'] = 'FALSE';
}
if($_SESSION['prawid_uzyt'] != 'OK') //jeśli uzytkownik nie jest zalogowany oraz jest to pierwsza proba wpisania nazwy uzytkownika
{

if (!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Tajne miejsce"');
header('HTTP/1.0 401 Unauthorized');
echo 'Brak dostępu';
echo'<meta http-equiv="refresh" content="1; url=../index.php">' ;
exit;

}
else if (isset($_SERVER['PHP_AUTH_USER'])) //uzytkownik podal swój nickname
{
$bd_lacz=mysql_connect($url, $identyfikator, $haslo);
mysql_select_db($baza_danych);
$pom1 = $_SERVER['PHP_AUTH_USER'];
$pom2 = $_SERVER['PHP_AUTH_PW'];
$zapytanie="select * from $tabela where user='$pom1' and password='$pom2'"; //sprawdzenie czy uzytkownik podal poprawne dane
$wynik=mysql_query($zapytanie);
if(mysql_num_rows($wynik)>0) // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
{
$prawid_uzyt=$_SERVER['PHP_AUTH_USER'];
$_SESSION['prawid_uzyt'] = 'OK';

}
else
{
header('WWW-Authenticate: Basic realm="Tajne miejsce"');
header('HTTP/1.0 401 Unauthorized');
echo 'Brak dostępu';
echo'<meta http-equiv="refresh" content="1; url=../index.php">' ;

exit;
}
}
}

if($_SESSION['prawid_uzyt'] == 'OK')
{
echo'<meta http-equiv="refresh" content="0; url=baza_danych.php">' ;
}


ob_end_flush();//koniec buforowania danych
?>
elmozaur
Cytat(maniek2410 @ 19.09.2008, 23:07:15 ) *
$zapytanie="select * from $tabela where user='$pom1' and password='$pom2'"; //sprawdzenie czy uzytkownik podal poprawne dane


Po pierwsze $tabela powinna byc w apostrofach ;-)
Po drugie: kosmicznie zagmatwane to wszystko ;-)

  1. <?php
  2. $log=slownik($imie);
  3. $pass=slownik($nazwisko);
  4.  
  5.    $uchwyt_polaczenia = mysql_connect($baza_host, $baza_user, $baza_pass);
  6.    @mysql_select_db($baza_baza, $uchwyt_polaczenia);    
  7.    $zapytanie = "SELECT * FROM ludzie WHERE log='$log' AND pass='$pass'";
  8.    $rezultat = mysql_query($zapytanie, $uchwyt_polaczenia);
  9.    $wiersz = mysql_fetch_array($rezultat);
  10.    
  11. if ($wiersz[0]!="")
  12. {
  13.    session_start();
  14.    $id=$wiersz['id'];
  15.    $_SESSION['u_i']=$wiersz['id']; // numer uzytkownik
  16.    $_SESSION['u_p']=$wiersz['prawa']; // prawa uzytkownika
  17.  
  18.    $adres= $strona_adres.'/tresc/';
  19.    Header('HTTP/1.1 301 Moved Permanently');
  20.    Header('Locatio: '.$adres);
  21. } else {
  22. echo 'niezalogowany';
  23. }
  24. ?>



to tylko kawalek kodu mojego logowania ale jest o niebo latwiejszy i dziala na php4 i php5
pozdro
Grzechu
maniek2410
tylko ze Ty masz logowanie przez formularz a nie ten system wbudowany w przegladarke tak?
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.