Mam problem z logowaniem do panelu administracyjnego. Otóż po przenosinach na inny serwer, nie mogę się zalogować. wcześniej było mysql, zdaję się, że poniżej wersji 4.2 a teraz jest wersja 5.037 i hasze są zapisywane na początku z gwiazdką. Próbowałem już wszystkiego, chodzi mi o ten kawałek kodu:


  1. if(!isset($theme))
  2. require("theme.php");
  3.  
  4. if((isset($aid)) && (isset($pwd)) && ($op == "login"))
  5. {
  6. if($aid!="" AND $pwd!="")
  7. {
  8. $result=sql_query("select password('$pwd')", $dbi);
  9. list($pwd)=sql_fetch_row($result, $dbi);
  10.  
  11. $result=sql_query("select pwd from ".$prefix."_admin where aid='$aid'", $dbi);
  12. list($pass)=sql_fetch_row($result, $dbi);
  13. if($pass == $pwd)
  14. {
  15. $admin = base64_encode("$aid:$pwd");

setcookie("admin","$admin",time()+28800[/PHP]); //8 godz.
unset($op);
}
}
}[/PHP]

To kawałek kodu, który tak rozumiem $aid i $pwd to login i hasło, które wpiszę w formularzu, a więc jeżeli nie jest puste to jest haszowane za pomocą funkcji password z mysql. Dalej skrypt pobiera hasz z bazy danych i jeśli hasze są takie same to:

  1. $admin = base64_encode("$aid:$pwd");
  2. setcookie("admin","$admin",time()+28800); //8 godz.
  3. unset($op);


No właśnie ten kawałek kodu to problem, nie za bardzow wiem o co chodzi. Funkcja base64_encodeprzekształca te dwa hasze i ustawia jako wartość ciasteczka.

Potrzebowałbym jakiś debbuger, abym mógł sprawdzić jakie wartości przyjmuje $pwd i $pass. i Prośba o łoptaologiczne wytłumaczenie kodu:
$admin = base64_encode("$aid:$pwd");
setcookie("admin","$admin",time()+28800); //8 godz.
unset($op);