Skocz do zawartości

Utrzymanie sesji logowania


graftec

Rekomendowane odpowiedzi

Witam serdecznie.

Ze względu na różne porządki panujące na forach proszę o informację czy mozna wklejać linki do stron których dotyczy problem...

Mój akurat dotyczy kwesti logowania userów, niegdyś strona chodziła bez zarzutów jednak nie wiadomo czemu pojawily się jakieś problemy.

Hosting na nazwa po wpisaniu loginu i hasla user się loguje i jak jest zalogowany jakiekolwiek wciśnięcie czegokolwiek czy to pozycji menu czy tez w panel uzytkownika wylogowuje user, a że część strony jest dla tylko zarejestrowanych to jest ona nie użyteczna.

Nadmienie również, że w dziwny spsób co mniej określony czas udaje się zalogować co w ogóle wywraca moje podejzenia i nie wiem nawet gdzie szukac błędu.... Różne przegladarki, różne miejsca, cashe usuwane, cisteczka też, nawet poblokowane i nic to nie zmieniło.

Za sugestie lub pociągniecie tematu z góry dzieki....

Odnośnik do komentarza
Udostępnij na innych stronach

Przede wszystkim zależy to od:

- implementacji obsługi sesji;

- implementacji rozpoznawania usera w ramach danej sesji ;

- przejścia na subdomeny w ramach domeny która wystawiła cookie sesji;

- używania proxy przez userów;

i wiele innych czynników....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Proxy i subdomeny odpadaja, w skrypcie sa jakies funkcje odpowiadajace za token captcha, do tego jest class odpowiadajaca za logowanie:

public function userLogin($user, $pass) //logowanie uzytkownika.

{

if (!empty($user) && !empty($pass)) {

$this->connectDBI();

$user = $this->secDBI($user);

$pass = $this->secDBI($pass);

$pass = md5($pass);

$sql = mysql_query("SELECT `id`, `email`, `login`, `pass` FROM user WHERE `login`='$user' AND `pass`='$pass'")or die(mysql_error());

$show = mysql_fetch_array($sql);

if (!empty($show)) {

$_SESSION['user'] = $show['id'];

$_SESSION['login'] = $show['login'];

$_SESSION['mail'] = $show['email'];

}

}

}

public function checkSession() //sprawdzamy poprawnosc sesji. Jezeli 1 to prawda. 0 falsz.

{

if (!empty($_SESSION['user'])) {

RETURN 1;

}

else

RETURN 0;

}

Może gdzieś tutaj siedzi jakiś bug a ja nie potrafię go odnaleźć..

Odnośnik do komentarza
Udostępnij na innych stronach

Daj na końcu pliku:

print_r($_SESSION);

i napisz co zwraca po zalogowaniu, a co w momencie, kiedy "gubi" sesję.

Pokaż też jak wygląda kod wywołujący funkcję checkSession() w logice/kontrolerze skryptu i ew. co jeszcze - z dotyczących sesji i logowania rzeczy - jest wykonywane (zwłaszcza wszystkie funkcje session_*).

Na emeryturze po SEO zajmuję się R&D.

Odnośnik do komentarza
Udostępnij na innych stronach

Ogólnie widze już ze jestem noga w tym wszystkim i dzieki za cierpliwosc.

w idexie jest teraz tak:

function __autoload($class)

{

$class = strtolower($class);

if(is_file('class/'.$class.'.class.php')) {

include_once ('class/'.$class.'.class.php');

}

}

session_start();

if($_SESSION['captcha']==$_POST['token']) {

session_destroy();

session_start();

}

if ($_GET['logout'] == '1') {

session_destroy();

session_start();

}

$content = new Content();

$config = new Config();

$advertisement = new Advertisement();

$payments = new Payment();

$user = new User();

$tlumacz = new Translator();

if (!empty($_GET['user']) && !empty($_GET['token'])) {

$user->acceptActive($_GET['user'], $_GET['token']);

}

if (!empty($_POST['login']) && !empty($_POST['password']) && empty($_SESSION['login'])) {

$user->loginUser($_POST['login'], $_POST['password']);

print_r($_SESSION);}

i to wyświetla po zalogowaniu taki komunikat:

Array ( [id] => 2 [login] => graftec => lsowinski@graftec.eu )

Po wcisnieciu dalej jakiegos przycisku wszystko ginie i nawet się Array nie wyswietla..

jeszcze w pliku user.class.php znalazlem taka funkcje:

public function loginUser($user, $pass) //funkcja logujaca uzytkownika!;

{

if (!empty($user) && !empty($pass)) {

$this->connectDBI();

$user = $this->secDBI($user);

$pass = $this->secDBI($pass);

$pass = md5($pass);

//$pQuery = "SELECT `user_active`.`active`, `user`.`id` AS `id`, `user`.`login` AS `login`, `user`.`pass` AS `pass`, `user_data`.`email` AS `email` WHERE `user`.`login`='$user' AND `user`.`pass`='$pass' AND `user_active`.`active`='y' AND `user_active`.`id`=`user`.`id` AND `user`.`id`=`user_data`.`id`";

$pQuery = "SELECT user_active.active, user.id AS id, user.login AS login, user.pass AS pass FROM user_active, user WHERE (user.login='$user') AND (user.pass='$pass') AND (user_active.active='y') AND (user_active.id=user.id);";

$sql = mysql_query($pQuery) or die(mysql_error());

$show = mysql_fetch_array($sql);

if (!empty($show)) {

$_SESSION['id'] = $show['id'];

$_SESSION['login'] = $show['login'];

$_SESSION['email'] = $show['email'];

//$_SESSION['email'] = 'pusty';

$pQuery = "SELECT user_data.email AS email FROM user_data WHERE user_data.id=".$show['id'].";";

$sql = mysql_query($pQuery) or die(mysql_error());

$show = mysql_fetch_array($sql);

if (!empty($show)) {

$_SESSION['email'] = $show['email'];

} else $_SESSION['email'] = 'pusty';

RETURN 1;

}

else

RETURN 0;

}

else

RETURN 0;

}

Mysle ze gdzies tutaj jest bug wlasnie

Odnośnik do komentarza
Udostępnij na innych stronach

W index.php jest jeszcze w miejscu formularza dologowania taka funkcja:

<?php

$formLogin = '<div class="login_panel">

<form action="'.$_SERVER['PHP_SELF'].'" method="post">

<table cellpadding="0" cellspacing="0" border="0" class="table_login">

<tr>

<td>

<input type="text" class="input_login" name="login"

value="login"

onfocus="if(this.value == \'login\') this.value = \'\';"

onblur="if(this.value == \'\') this.value = \'login\';"/>

</td>

<td>

<input type="password" class="input_login" name="password"

value="password"

onfocus="if(this.value == \'password\') this.value = \'\';"

onblur="if(this.value == \'\') this.value = \'password\';"/>

</td>

<td class="right">

<input type="submit" name="submit" value="" class="button_submit" alt="Zaloguj"/>

</td>

</tr>

</table>

</form>

</div>';

if ($_SESSION['login'] == 'admin') {

$panel = "/index.php?page=10&admin=1";

}

else

$panel = "/index.php?page=11&user=1";

$trans = $tlumacz->translate('Przejdź do panelu zarządzania', 'pl', $jezyk, $key);

$logged = '<div class="login_panel">

<div class="logged_window">

Witaj <b>'.$_SESSION['login'].'</b><br />

<a href="'.$panel.'" title="Panel zarządzania" class="panel_link">'.$trans.'</a>

</div>

<a href="/logout/1" title="Wyloguj" class="logout_link"></a>

</div>';

if (empty($_SESSION['login'])) {

echo $formLogin;

}

else {

echo $logged;

}

?>

Odnośnik do komentarza
Udostępnij na innych stronach

OK chłopaki po kilku godz dłubania okazuje się ze jesli loguję sie spod jednej zakladki a mianowicie kontakt w moim przypadku uzytkownik moze sie logowac i utrzymuje sesje, polecenie print session wtedy wskazuje na generowanie captcha czego nie ma na innych podstronach jak zmusic reszte podstron zeby korzystalo z pliku token.php ktory generuje captcha...

Odnośnik do komentarza
Udostępnij na innych stronach

Tak to jest jak się ma "SYF" w kodzie i pomieszaną logikę aplikacji z widokami....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wiem ten token słuzył jako blokada przed rozsylaniem spamu, sam scrypt zakupilem za jakies 150 zł wlozylem w nego juz 2000 zł za przeróbki, programiscie urodzilo sie 3 dziecko juz ni ma czasu w to zerknac, kazdy nowy jak widzi ten rozpiżdzaj nie chce sie podjąć każe pisać od nowa wszystko....

Dzieki temu tokenowi działa to spod zakladki kontakt z tego chyba wniosek ze trzebabyloby to jakos zaincludowac w indexie i powinno tymczasowo pomóc....

Ale sam juz nie wiem....

Odnośnik do komentarza
Udostępnij na innych stronach

Sam token nie powinien mieć nic wspólnego z sesją chyba, że jest jego obsługa za przeproszeniem jest tak zj****a, że przy generowaniu tokena jest "niszczona sesje" session_destroy() lub session_regenerate();

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

wow kolego jestes wielki.... rzeczywisci obsluga tokena byla zjeban mianowicie przy starcie i logou bylo session_destroy(); po usunieciu ze start session_destroy() ze startu zaczelo smigac na wszystkich stronach... Nie wiem jak ci dziekowac ale spedzilem wczoraj nad tym kilka godz i stwierdzilem ze bez fachowej pomocy nie dam rady....

Jeszcz raz wielkie dzieki....

Ten scrypt jeszcze nie raz da mi popalic ale dzieki ze jest gdzies fachowa pomoc i ludzie chetni jej udzielac...

Odnośnik do komentarza
Udostępnij na innych stronach

Ciesze się, że mogłem pomóc ... innego podziękowania nie potrzeba....

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

A ###### to jednak nie to, w euforii nie zauwazylem ze strona sciagnela cisteczko utrzymujace sesje z podstrony kontakt... Po wyczyszczeniu historii wszystko wraca do normy do czasu wejscia w zakładke kontakt.Czemu tylko kontakt generuje plik cookie, dzieki czemu podtrzymuje on sesje, czy jest to ten token antyspamowy w formularzu kontaktowym....Ten ręczny kod mnie wykonczy....

Odnośnik do komentarza
Udostępnij na innych stronach

W całej tej mojej złości kończę pracę już teraz z sukcesem.... Wracam na forum w podzięce za czas osób które chociaż chwilę zastanawiały się nad problemem...

Total Comander wszystko wysypywał, wszystko było ok ale kodowanie w notepad++ nie było na utf-8 i dodawal BOM-y..... Chyba dobrze to zinterpretowałem.... Mam ochote sie poprostu powalić spać.....:)

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności