Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przykład z książki
Forum PHP.pl > Forum > PHP
dekoder
W książce PHP i MySQL Vadamecum Profesionalisty w przykładzie KOSZYKA INTERNETOWEGO KSIĄŻKORAMA (rozdział 27) nie działa mi logowanie admina czy ktoś miał podobny problem jeśli tak proszę o skonsultowanie.

Problem dokładnie tkwi w tym że przy wpisywaniu lginu i hasła wyświetla komunikat że : Zalogowanie niemożliwe.Należy być zalogowanym, aby przeglšdać tę stronę. a funkcje_bazy mam wypisane tak jak powinno być czy jeszcze gdzieś trzeba ustawić hasła, dane mysql ? W bazie danych mam wpisane poprawnie w admin login i hasło.
skowron-line
no to moze pokaz kod nie kazdemu sie chce siegac do ksiazki i sprawdzac, a tez ludzie moga jej wogole nie miec
nospor
forumowa wrózka mowi czarodziej.gif :
......uuuu.... W ksiązce uzywają register_globals.... uuuuu..... a u ciebie jest ono wylączone....uuuuu.... i dlatego tobie nie dziala......uuuuuuuuu.....
Nalezy do zmiennych z forma odwolywac sie tak: $_POST['zmienna'] .....uuuu..... a nie $zmienna .....uuuu....


To jedna z przyczyn nie dzialania. Moze są inne, ale wrózce kula sie zamglila i nic juz nie widzi smile.gif
dekoder
Hej.

Korzystam z krasnal serv, a register globals mam domyślnie ustawione, czyli na ON.

<?php

// dołączenie plików funkcji tej aplikacji
require_once('funkcje_ksiazka_kz.php');
session_start();


if ($HTTP_POST_VARS['nazwa_uz'] && $HTTP_POST_VARS['haslo'])
// właśnie nastąpiła próba logowania
{

$nazwa_uz = $HTTP_POST_VARS['nazwa_uz'];
$haslo = $HTTP_POST_VARS['haslo'];

if (loguj($nazwa_uz, $haslo))
{
// jeżeli w bazie danych, zgłoszenie identyfikatora użytkownika
$HTTP_SESSION_VARS['uzyt_admin'] = $nazwa_uz;
}
else
{
// niepomyślne logowanie
tworz_naglowek_html('Problem:');
echo 'Zalogowanie niemożliwe.Należy być zalogowanym, aby przeglądać tę stronę.<br />';
tworz_html_url('logowanie.php', 'Logowanie');
tworz_stopke_html();
exit;
}
}

tworz_naglowek_html('Administracja');
if (sprawdz_uzyt_admin())
wyswietl_menu_admin();
else
echo 'Brak autoryzacji do wejścia na obszar administracyjny.';

tworz_stopke_html();

?>

to kod logowania, jak go przerobic ?

a mój plik funkcje_bazy :

<?php

function lacz_bd()
{
$wynik = @mysql_pconnect('localhost', 'root', 'krasnal');
if (!$wynik)
return false;
if (!@mysql_select_db('ksiazka_kz'))
return false;
return $wynik;
}

function wynik_bd_do_tablicy($wynik)
{
$tablica_wyn = array();

for ($licznik=0; $rzad = @mysql_fetch_array($wynik); $licznik++)
$tablica_wyn[$licznik] = $rzad;

return $tablica_wyn;
}

?>
skowron-line
po 1 primo uzywac odpowiedniego bbcode po 2 primo robisz cos takiego
  1. <?phpf (loguj($nazwa_uz, $haslo)){// jeżeli w bazie danych, zgłoszenie identyfikatora użytkownika$HTTP_SESSION_VARS['uzyt_admin'] = $nazwa_uz;}else{// niepomyślne logowanietworz_naglowek_html('Problem:');echo 'Zalogowanie niemożliwe.Należy być zalogowanym, aby przeglądać tę stronę.<br />';tworz_html_url('logowanie.php', 'Logowanie');tworz_stopke_html();exit;}?>
i odwolujesz sie do jakiejs funkcji loguj() ale nie zauwazylem zebys ja pokazal na forumpo 1 primo uzywac odpowiedniego bbcode po 2 primo robisz cos takiego
  1. <?phpf (loguj($nazwa_uz, $haslo)){// jeżeli w bazie danych, zgłoszenie identyfikatora użytkownika$HTTP_SESSION_VARS['uzyt_admin'] = $nazwa_uz;}else{// niepomyślne logowanietworz_naglowek_html('Problem:');echo 'Zalogowanie niemożliwe.Należy być zalogowanym, aby przeglądać tę stronę.<br />';tworz_html_url('logowanie.php', 'Logowanie');tworz_stopke_html();exit;}?>
i odwolujesz sie do jakiejs funkcji loguj() ale nie zauwazylem zebys ja pokazal na forum
dekoder
Oto funkcja loguj i inna odpowiedzialna za logowanie:
Kod
<?phprequire_once('funkcje_bazy.php');function loguj($nazwa_uz, $haslo)// sprawdzenie nazwy użytkownika i hasła w bazie danych// jeżeli tak, zwraca true// w przeciwnym wypadku false{  // łączenie z bazą danych  $lacz = lacz_bd();  if (!$lacz)    return 0;  // sprawdzenie unikatowości nazwy użytkownika  $wynik = mysql_query("select * from admin                          where nazwa_uz='$nazwa_uz'                         and haslo = password('$haslo')");  if (!$wynik)     return 0;    if (mysql_num_rows($wynik)>0)     return 1;  else      return 0;}function sprawdz_uzyt_admin()// sprawdzenie zalogowanie i powiadomienie, jeżeli nie{  global $HTTP_SESSION_VARS;  if (isset($HTTP_SESSION_VARS['uzyt_admin']))    return true;  else    return false;}function zmien_haslo($nazwa_uz, $stare_haslo, $nowe_haslo)// zmiana hasła użytkownika// zwraca true lub false{  // jeżeli stare hasło prawidłowe  // zmiana hasła na nowe_haslo i zwraca true  // w przeciwnym wypadku false  if (loguj($nazwa_uz, $stare_haslo))  {    if (!($lacz = lacz_bd()))      return false;    $wynik = mysql_query( "update admin                             set haslo = password('$nowe_haslo')                            where nazwa_uz = '$nazwa_uz'");    if (!$wynik)      return false;  // brak zmian    else      return true;  // zmiana pomyślna  }  else    return false; // nieprawidłowe stare hasło}?>
może to wina configa ?
Kod
// sprawdzenie unikatowości nazwy użytkownika  $wynik = mysql_query("select * from admin                          where nazwa_uz='$nazwa_uz'                         and haslo = '$haslo'"
thx
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.