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

Cześć. Mam pewien problem. Otóż chciałem sprawdzić działanie funkcji, która dodaje konto na IPS 4.1. Oczywiście wszystko jest dobrze oprócz hasła, bo podczas logowania wyświetla się informacja że hasło jest nieprawidłowe.

 

$member = new \IPS\Member;
$member->name = $username;
$member->email = $email;
$member->members_pass_hash = password_hash($password, PASSWORD_BCRYPT);
//$member->members_bitoptions['validating'] = true;
$member->save();

 

Wszystko zwraca prawidłowo, nazwę użytkownika, adres e-mail, hasło. Lecz z tego co zauważyłem IPS 4.1 posiada inne kodowanie. Przeszukałem wiele for na ten temat i nic nie znalazłem.

 

Drugi problem. Po zalogowaniu mam grupę Gościa zamiast Użytkownika. Muszę po rejestracji zmieniać grupę manualnie czy zmieni się ona automatycznie? Dodam że chcę aby konto było od razu aktywne bez potwierdzenia na e-mail.

Opublikowano
31 minut temu, DawPi napisał:

Dopiero co o tym pisałem:

 

 

Ciężko mi zrozumieć z tego tematu działanie kodu. Możesz mi wskazać co w moim kodzie robię nie tak?

  • Manager
Opublikowano

Tak spróbuj:

$existingEmail = \IPS\Member::load( $_POST['CUST_EMAIL'], 'email' );

if ( !$existingEmail->member_id )
{
	$member = new \IPS\Member;
	$member->name				= $_POST['CUST_NAME'];
	$member->email				= $_POST['CUST_EMAIL'];
	$password = \IPS\Login::generateRandomString( 8 );
	$member->setLocalPassword( $password );
	$member->joined = time();
	$member->member_group_id	= $group;
	$member->save();
}

Kod oczywiście do edycji (!).

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)
14 minut temu, DawPi napisał:

Tak spróbuj:


$existingEmail = \IPS\Member::load( $_POST['CUST_EMAIL'], 'email' );

if ( !$existingEmail->member_id )
{
	$member = new \IPS\Member;
	$member->name				= $_POST['CUST_NAME'];
	$member->email				= $_POST['CUST_EMAIL'];
	$password = \IPS\Login::generateRandomString( 8 );
	$member->setLocalPassword( $password );
	$member->joined = time();
	$member->member_group_id	= $group;
	$member->save();
}

Kod oczywiście do edycji (!).

 

Mój kod

$member = new \IPS\Member;
$member->name = $username;
$member->email = $email;
$member->setLocalPassword($password);
$member->members_bitoptions['validating'] = false;
$member->save();

 

Nie działa. Przedtem działało tylko było złe hasło a po dodaniu tej zmiennej nie tworzy w ogóle konta.

Edytowane przez maxerxxl
Opublikowano
1 godzinę temu, DawPi napisał:

Dostałem. Kod jest "prawidłowy". Teraz trzeba go zdebugować i sprawdzić który fragment powoduje problemy.

W logach w ACP nic nie ma?

 

Właśnie pusto. Sprawdziłem też przez var_dump i jest ok.

  • Manager
Opublikowano

To szukaj przyczyn po tamtym skrypcie. Zobacz, że działa. Czysty plik test.php w głównym folderze forum:

<?php

    require_once 'init.php';
	$member = new \IPS\Member;
	$member->name = 'super_mega_nick';
	$member->email = '[email protected]';
	$member->members_pass_hash = password_hash('gxfby756eyeyhte5w435vhdytrybt', PASSWORD_DEFAULT);
    $member->joined = time();
	$member->member_group_id = 3;
	$member->save();

Efekt:

image.png

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano
<?php

    require_once 'init.php';
    $member = new \IPS\Member;
    $member->name = 'super_mega_nick';
    $member->email = '[email protected]';
    $member->members_pass_hash = password_hash('gxfby756eyeyhte5w435vhdytrybt', PASSWORD_DEFAULT);
    $member->joined = time();
    $member->member_group_id = 3;
    $member->save();

Wkleiłem dodało ale zalogować dalej nie mogę.

Opublikowano (edytowane)

Do głównego folderu z forum, i wchodzę na link z nim.

INSERT INTO `MTA_core_members` ( `member_group_id`, `mgroup_others`, `joined`, `ip_address`, `timezone`, `allow_admin_mails`, `pp_photo_type`, `member_posts`, `pp_main_photo`, `pp_thumb_photo`, `failed_logins`, `mfa_details`, `pp_reputation_points`, `signature`, `auto_track`, `name`, `members_seo_name`, `email`, `password` ) VALUES ( 3, '', 1567543878, '77.253.121.47', 'UTC', 1, '', 0, NULL, NULL, NULL, NULL, 0, '', '{"content":0,"comments":0,"method":"immediate"}', 'super_mega_nick', 'super_mega_nick', '[email protected]', 'y$TgOk6hkAJlsq7RnjRAkFReOVBiXn/qSxVZ6GeD4/nfyM24mYYAlDq' )
IPS\Db\Exception: Unknown column 'password' in 'field list' (1054)
#0 /home/so716/domains/maxlife-rpg.pl/public_html/forum/system/Db/Db.php(808): IPS\_Db->preparedQuery('/*IPS\\_Member::...', Array)
#1 /home/so716/domains/maxlife-rpg.pl/public_html/forum/system/Patterns/ActiveRecord.php(460): IPS\_Db->insert('core_members', Array)
#2 /home/so716/domains/maxlife-rpg.pl/public_html/forum/system/Member/Member.php(320): IPS\Patterns\_ActiveRecord->save()
#3 /home/so716/domains/maxlife-rpg.pl/public_html/forum/Cn2QNFSVnGVv9eGa.php(10): IPS\_Member->save()
#4 {main}

 

Edytowane przez YoutuberAidis
Opublikowano (edytowane)
1 minutę temu, DawPi napisał:

I co to za błąd? On jest po wywołaniu tego czystego kodu?

Oczywiście wersje forum masz najnowszą?

Po wywołaniu kodu go mam.

Wersja 4.1.19

 

A przy setlocalpassword

Error: Call to undefined method IPS\Member::setLocalPassword() (0)
#0 {main}

 

Edytowane przez YoutuberAidis

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ę.