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ść. Napisałem sobie ostatnio kod na rejestrację IPS na innej stronie. Ustawiłem że konto jest nie aktywne i musi osoba potwierdzić je klikając w link na e-mailu. Zrobiłem funkcję, która generuje kod aktywacyjny:

	function _Validating($member) {
		\IPS\Db::i()->delete('core_validating', ['member_id=? and new_reg=1', $member->member_id]);

		\IPS\Db::i()->insert('core_validating', [
			'vid' => md5($member->members_pass_hash . \IPS\Login::generateRandomString()),
			'member_id' => $member->member_id,
			'entry_date' => time(),
			'new_reg' => 1,
			'ip_address' => $member->ip_address,
			'user_verified' => false,
			'spam_flag' => false,
			'email_sent' => time(),
			'do_not_delete' => false
		]);
	}

Wszystko działa jak należy, tylko że podczas pierwszego logowania wyskakuje żebym potwierdził konto ale na poczcie nic nie przychodzi. Muszę klikać przycisk "Wyślij ponownie link aktywacyjny". Chciałbym żeby od razu wysłało ten link aktywacyjny.

 

Kod od rejestracji:

$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();

_Validating($member);

Z góry dziękuję za pomoc.

  • Manager
Opublikowano

Z tego co widzę w tym kodzie to nie masz nic od wysyłania tego e-maila, więc siłą rzeczy nic się nie wysyła. :)

Za to odpowiada kod z system/Member/Member.php:

	/**
	 * Call after completed registration to send email for validation if required or flag for admin validation
	 *
	 * @param	bool		$noEmailValidationRequired	If the user's email is implicitly trusted (for example, provided by a third party), set this to TRUE to bypass email validation
	 * @param	bool		$doNotDelete				If TRUE, the account will not be deleted in the normal cleanup of unvalidated accounts. Used for accounts created in Commerce checkout.
	 * @param	array|NULL	$postBeforeRegister			The row from core_post_before_registering if applicable
	 * @return	void
	 */
	public function postRegistration( $noEmailValidationRequired = FALSE, $doNotDelete = FALSE, $postBeforeRegister = NULL )
	{
		/* Work out validation type */
		$validationType = \IPS\Settings::i()->reg_auth_type;
		if ( $noEmailValidationRequired )
		{
			switch ( $validationType )
			{
				case 'user':
					$validationType = 'none';
					break;
				case 'admin_user':
					$validationType = 'admin';
					break;
			}
		}
		
		/* Validation */
		if ( $validationType != 'none' )
		{
			/* Set the flag */
			$this->members_bitoptions['validating'] = TRUE;
			$this->save();
			
			/* Prevent duplicates from double clicking, etc */
			\IPS\Db::i()->delete( 'core_validating', array( 'member_id=? and new_reg=1', $this->member_id ) );
			
			/* Insert a record */
			$vid = md5( $this->members_pass_hash . \IPS\Login::generateRandomString() );
			\IPS\Db::i()->insert( 'core_validating', array(
				'vid'		   	=> $vid,
				'member_id'	 	=> $this->member_id,
				'entry_date'	=> time(),
				'new_reg'	   	=> 1,
				'ip_address'	=> $this->ip_address,
				'spam_flag'	 	=> ( $this->members_bitoptions['bw_is_spammer'] ) ?: FALSE,
				'user_verified' => ( $validationType == 'admin' ) ?: FALSE,
				'email_sent'	=> ( $validationType != 'admin' ) ? time() : NULL,
				'do_not_delete'	=> $doNotDelete
			) );
			
			/* Send email for validation */
			if ( $validationType != 'admin' )
			{
				\IPS\Email::buildFromTemplate( 'core', 'registration_validate', array( $this, $vid ), \IPS\Email::TYPE_TRANSACTIONAL )->send( $this );
			}
			
			/* Update core_post_before_registering */
			if ( $postBeforeRegister )
			{
				\IPS\Db::i()->update( 'core_post_before_registering', array( 'member' => $this->member_id ), array( 'secret=?', $postBeforeRegister['secret'] ) );
			}
		}
		
		/* If no email-related validation is required, send admin notification */
		if ( $validationType == 'admin' )
		{
			\IPS\core\AdminNotification::send( 'core', 'NewRegValidate', NULL, TRUE, $this );
		}
		elseif ( $validationType == 'none' )
		{
			\IPS\core\AdminNotification::send( 'core', 'NewRegComplete', NULL, TRUE, $this );
		}

		/* Send a welcome email if validation is disabled */
	   if( $validationType == 'none' )
	   {
		   $this->_processPostBeforeRegistering( $postBeforeRegister['secret'] );
		   $this->_sendWelcomeEmail();
	   }
   }

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

  • Manager
Opublikowano

Nie.

			/* Send email for validation */
			if ( $validationType != 'admin' )
			{
				\IPS\Email::buildFromTemplate( 'core', 'registration_validate', array( $this, $vid ), \IPS\Email::TYPE_TRANSACTIONAL )->send( $this );
			}

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • 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ę.