Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam,

 

Posiadam IPS w wersji 4.5.4, forum jest zainstalowane na serwerze w katalogu "forum" i chciałbym na naszej głównej stronie (znajdującej się w głównym katalogu serwera) przeprowadzić logowanie użytkowników.

Jeśli zaloguję się na forum, a na naszej stronie uruchomię poniższy kod, to wyświetla id i nazwę zalogowanego użytkownika:

 

require_once('/forum/init.php');
\IPS\Session\Front::i();

if(\IPS\Member::loggedIn()->member_id)
{
	$uzytkownik_id = \IPS\Member::loggedIn()->member_id;
	$uzytkownik_nick = \IPS\Member::loggedIn()->name;
}

echo $uzytkownik_id." - ".$uzytkownik_nick;

 

Problem mam z zalogowaniem, gdyż niestety wykonanie poniższego kodu skutkuje błędem 500 i nie ma jego opisu, co konkretnie jest źle :(

 

require_once('/forum/init.php');
\IPS\Session\Front::i();

if($_POST['username'] && $_POST['password'])
{
	$IPSLogin = new \IPS\Login\Internal;
	$IPSLogin->init();
		
	$member = $IPSLogin->authenticate(array('auth' => $_POST['username'], 'password' => $_POST['password']));
}


Przejrzałem dokumentację, forum Invision Community oraz szukałem w Internecie, niestety nie umiem sobie z tym poradzić :(

Wydaje mi się, że powinienem skorzystać z tego mechanizmu, ale też nie chce mi działać...

https://invisioncommunity.com/developers/docs/members-authentication/login-methods/creating-a-usernamepassword-handler-r174/

 

Proszę o radę, jak podejść do tematu, czy może trzeba coś ustawić w panelu administracyjnym?

Edytowane przez colin503
Opublikowano

Błąd jest ogólny (jak na załączonym screenie), bez szczegółów. Szukałem w adminie i w folderze forum jakichś logów z błędami, ale nic nie znalazłem.

Co do błędów w pliku .htaccess to może chodzić o mój .htaccess do głównej strony (znajduje się w głównym folderze serwera), czy o plik .htaccess forum (folder /forum)?

Inna sprawa to sposób logowania, który zmienił się wraz z pojawieniem się wersji 4.3 forum. Czy moje skrypty są poprawne?

ips-forum-logowanie-blad.jpg

Opublikowano (edytowane)

core_error_logs jest pusta a w core_logs znalazłem taki wpis:

 

- w polu message

Error: Call to undefined method IPS\Member::encryptedPassword() (0)
#0 /abc/logowanie1.php(10): IPS\Login\_Internal->authenticate(Array)
#1 {main}

 

- w polu backtrace

#0 /forum/init.php(995): IPS\_Log::log('Error: Call to ...', 'uncaught_except...')
#1 [internal function]: IPS\IPS::exceptionHandler(Object(Error))
#2 {main}

 

@DawPi nie wzbraniam się, tylko jestem w 99% pewny, że to wina skryptu logowania. Od wersji 4.3 coś zmienili w tej kwestii, a niestety nie umiem dojść do tego, jak ten kod teraz powinien wyglądać :(

Edytowane przez colin503
  • DawPi zmienił(a) tytuł na Logowanie użytkowników na tym samym serwerze [IPS 4.5]
  • Manager
Opublikowano
3 godziny temu, colin503 napisał:

Error: Call to undefined method IPS\Member::encryptedPassword() (0)

I to błąd powiedzmy z teraz jak próbujesz wywołać ten kod z pierwszego postu?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

  • Manager
Opublikowano

Masz całe, oczywiście zmieniłem POST na GET do testów:

<?php 
require_once('C:/wamp/www/45/init.php');
\IPS\Session\Front::i();

if($_GET['username'] && $_GET['password'])
{
	$login = new \IPS\Login();
			
	foreach ( $login->usernamePasswordMethods() as $method )
	{
		try
		{
			$member = $method->authenticateUsernamePassword( $login, $_GET['username'],  $_GET['password'] );
			\IPS\Login::checkIfAccountIsLocked( $member, TRUE );
            break;
		}
		catch( \Exception $e )
        {
        }
	}
}

if( isset( $member->member_id ) )
{
    echo $member->member_id." - ".$member->name;
}

Działa:

obraz.png

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Dziękuję, identyfikacja działa, lecz nie zapisuje sesji, gdyż po wywołaniu Twojego skryptu:

  • na forum nadal jestem niezalogowany
  • ciasteczko ips4_IPSSessionFront jest nieuaktualnione (posiada datę z mojego ostatniego logowania na forum)
  • poniższa funkcja nie zwraca ID użytkownika (nie posiada żadnej wartości)
\IPS\Member::loggedIn()->member_id

 

Co trzeba dodać, żeby tworzył sesję?

  • Manager
Opublikowano

Dokładnie. ;)

 

<?php 
require_once('C:/wamp/www/45/init.php');
\IPS\Session\Front::i();

if($_GET['username'] && $_GET['password'])
{
	$login = new \IPS\Login();
			
	foreach ( $login->usernamePasswordMethods() as $method )
	{
		try
		{
			$member = $method->authenticateUsernamePassword( $login, $_GET['username'],  $_GET['password'] );
			\IPS\Login::checkIfAccountIsLocked( $member, TRUE );
            \IPS\Session::i()->setMember( $member );
            break;
		}
		catch( \Exception $e )
        {
        }
	}
}

if( isset( $member->member_id ) )
{
    echo $member->member_id." - ".$member->name;
}

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Kolejny krok do przodu. W skrócie:

  • na forum nadal jestem niezalogowany - i tak i nie, jak odżswieżę stronę główną forum to nadal jestem niezalogowany, ale jak wejdę w jakąkolwiek inną podstronę to już jest ok - jestem zalogowany, lecz po przejściu na główną stronę nadal brak zalogowania (żeby nie było, nie cofam się tylko klikam w link, który wczytuje całą stronę na świeżo)
  • ciasteczko ips4_IPSSessionFront jest nieuaktualnione (posiada datę z mojego ostatniego logowania na forum) - pomogło (data jest już aktualna)
  • poniższa funkcja nie zwraca ID użytkownika (nie posiada żadnej wartości) - pomogło

PS. Czy jest gdzieś jakiś dokładny manual z wszystkimi możliwymi poleceniami?

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • 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ę.