Witam wszystkich forumowiczów!


Mam mały problem z logowaniem. Pewna stronka działa na takim autorskim i prostym skrypcie CMS, i do tej pory wszystko było dobrze i wszystko działało. Tylko po przenosinach na inny serwer przestało działać dobrze logowanie. Dokładnie można się zalogować, tylko po przejściu na jakąś podstronę, pokazuje że się nie jest zalogowanym (mimo wcześniejszego zalogowania). Domyślam się, że po zmianie serwera jakaś część jest nie kompatybilna z nowym serwerem.

Może jakaś mądra głowa pomoże mi z tym logowaniem, przyznam że próbowałem różnych rzeczy i szukałem już wszędzie informacji.

Poniżej zamieszczam plik odnośnie logowania..
CODE
<?
if ($_GET['page'] == "logout") //przygotowanie do wylogowania
{
$_POST['login'] = "logout";
$_GET['page'] = "login";
}

$perm_list = array( //lista uprawnień
'menuedit' => 'Edycja menu',
'permedit' => 'Edycja zezwoleń',
'statedit' => 'Edycja stron statycznych',
'linki' => 'Zarządzanie linkami',
'galeria' => 'Edycja galerii',
);

//sprawdza, czy aktualnie zalogowany użytkownik ma uprawnienia do funkcji. Jeżeli nie ma
//oraz $autoclose jest ustawione na true, automatycznie kończy wykonywanie strony
function perm($funct_id, $autoclose = false)
{
$login = $GLOBALS['login'];
$login = strtr($login, "\"'_*\\", "!!!!!");
if (check_login())
{
$query = mysql_query('SELECT * FROM page_perms WHERE login="'.$login.'" AND name="'.$funct_id.'"');
if ($rekord = mysql_fetch_array($query)) { return true; }
}
////
if ($autoclose) { die('Brak uprawnień!'); }
return false;
}

//sprawdza, czy login i hasło są poprawne
function check_login()
{
$login = $GLOBALS['login']; $haslo = $GLOBALS['haslo'];
$login = strtr($login, "\"'_*\\", "!!!!!");
if (((strlen($login)) < 1) || ((strlen($haslo)) < 1)) { return false; }
$usrdata = mysql_query('SELECT * FROM page_users WHERE login="'.$login.'"');
if (!(($rekord = mysql_fetch_array($usrdata)) && (mysql_num_rows($usrdata) == 1))) { return false; } //wiecej niz 2 lub 0 loginow
if (md5($haslo) == $rekord['pass'])
{
$GLOBALS['loginid'] = $rekord['id'];
return true;
}
else
{
$GLOBALS['loginid'] = -1;
return false;
}
}

//akcje związane z logowaniem - loguje, wylogowuje oraz zarządza sesjami
function log_in()
{
$sregd = false;
//jeśli nie ma potrzeby, nie otwiera sesji - nie doda się do adresu PHPSESSID
if (($login != "logout") && (($GLOBALS['PHPSESSID'] != "") || ($_GET['PHPSESSID'] != "")))
{ session_start(); $sregd = true; }

$form_login = $_POST['login'];
$form_haslo = $_POST['haslo'];
$sess_login = $_SESSION['login'];
$sess_haslo = $_SESSION['haslo'];

$logined = 1; //0: bez akcji; 1: zalogowalem; 2: zly login/haslo; 3:wylogowalem
$timeout = 600; //10 minut

if (($form_haslo == "") && ($form_login != "logout"))
{
$login = $sess_login;
$haslo = $sess_haslo;
$logined = 0; //dane wczytane z sesji
}
else
{
$login = $form_login;
$haslo = $form_haslo;
}
$GLOBALS['login'] = $login;
$GLOBALS['haslo'] = $haslo;

if (($login != "") && ($login != "logout"))
{
if (!($sregd)) { session_start(); $sregd = true; }
if (check_login())
{
session_register("login");
session_register("haslo");
}
else
{
$haslo = strtr($haslo, '"', '!');
$x = mysql_query("INSERT INTO page_badlogin VALUES (\"".time()."\", \"".$login."\", \"".$haslo."\", \"".$ip."\")");
$login = ""; $haslo = "";
session_destroy();
$logined = 2;
}
}

if ($login == "logout")
{
session_start();
session_destroy();
unset($_POST['PHPSESSID']);
unset($_GET['PHPSESSID']);
unset($GLOBALS['PHPSESSID']);
$logined = 3;
}

return $logined;
}

$login_result = log_in();
?>



EDIT:


Problem uważam za zamknięty. Rozwiązałem go poprzez dodanie do pierwszego pliku inicjującego skrypt cms'a komendę:


CODE
session_start();