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

Nie ma takiej możliwości, ponieważ:

a) To trzy inne aliasy, jeżeli je zablokujesz - nie będzie mógł się nikt zarejestrować kto posiada email na którymś z tych aliasów.

b) Jeżeli ktoś napisze skrypt, do automatycznego blokowania loginu emaila, to problem znajdzie się osobach które mają takie same nicki w innych skrzynkach.

Myślę że jedynym rozwiązaniem było by zablokowanie dwóch domen np: @go2.pl oraz @tlen.pl a przy rejestracji dodać informacje iż te domeny zostały poblokowane.

// KliczeK

In, and Out.

  • Manager
Opublikowano

Tak, propozycja Kliczka wydaje się najrozsądniejsza.

Można by się pokusić o dopisanie kodu, ale wtedy trzeba by na sztywno decydować co jest tym samym adresem, a co innym.

Bo pomyślcie, wczujcie się na chwilę w maszynę ( przypominam - działa jak została zaprogramowana, ni mniej ni więcej, nie ma rozumu, wiedzy ) i powiedzcie co zrobicie jak zobaczycie takie maile:

[email protected]
[email protected]
[email protected]

Różne? Owszem, ale równie dobrze mogły by być aliasami.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

To ja może napisze jak bym to widział

Powołam się na przykład który podałem czyli

[email protected]

[email protected]

[email protected]

wyodrębniam sobie pewne dane i zapisuje je w poszczególnych zmiennych w "mail" mam nazwę konta czyli x a w zmiennej "host" mam nazwę domeny o2.pl, go2.pl czy tlen.pl.

oczywiście to jest w pętli która czyta z bazy po kolei każdy rekord zawierający e-mail

wyodrębniam sobie z aktualnie sprawdzanego rekordu tak jak wyżej nazwę konta która zapisuje do zmiennej "maill" oraz nazwe hosta który jest przypisywany zmiennej "hostt"

i teraz jeżeli "mail"="maill" to sprawdzam czy ip("host")=ip("hostt") jeżeli tak to wiem że to co podał to alias i zmieniam flagę i przerywam działanie pętli.

PS.Z tego co się orientuje ip hosta można sprawdzić instrukcją gethostbyname a z wyodrębnieniem danych też nie powinno być problemu

Edytowane przez jojo
  • Manager
Opublikowano

Nakićkałeś trochę. Co w przypadki zmiany IP itd.

Jednym słowem - jak mówię - można by się pokusić o napisanie kodu do tego, ale z wpisanymi ręcznie warunkami i domenami dla o2, onetu i co tam jeszcze.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)
Nakićkałeś trochę. Co w przypadki zmiany IP itd.

Jednym słowem - jak mówię - można by się pokusić o napisanie kodu do tego, ale z wpisanymi ręcznie warunkami i domenami dla o2, onetu i co tam jeszcze.

No przecież nie przypisujemy ip danemu hostowi na stałe tylko jest ono pobierane dopiero gdy warunek "mail"="maill" jest prawdziwy więc w czym problem ?

PS.Wyodrębnienie nazwy konta i hosta z całego e-maila widzę też nie jest za trudne:

list($mail, $host) = explode('@', '[email protected]');

Edytowane przez jojo
Opublikowano
Oczywiście, nie pisałeś, że posiadasz wiedzę w zakresie programowania w .php. Zatem ... w czym problem? Śmiało pisz :)

DawPi jakbym posiadał to bym tu nie dyskutował tylko dawno to zrobił, nie znam się na tym przedstawiłem tylko własną koncepcje a te kilka funkcji to na szybko znalazłem, poza tym też trzeba znać strukturę forum i wiedzieć co w jakich plikach się znajduje.

Jeżeli wskażesz mi plik oraz miejsce w którym zaczyna się ta pętla sprawdzająca adres to może coś wykombinuje :(

  • Manager
Opublikowano

Plik: sources/action_public/register.php

Miejsce: myślę, że tu: ( ~ 1807 linia )

		//-----------------------------------------
	// More unicode..
	//-----------------------------------------

Wpisany mail w formularzu ( zmienna ):

$this->ipsclass->input['EmailAddress']

:)

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano

		//-----------------------------------------
	// Is this email addy taken? CONVERGE THIS??
	//-----------------------------------------

	if ( $this->ipsclass->converge->converge_check_for_member_by_email( $in_email ) == TRUE )
	{
		$form_errors['email'][$this->ipsclass->lang['reg_error_email_taken']] = $this->ipsclass->lang['reg_error_email_taken'];
	}

O ile się nie mylę to "converge_check_for_member_by_email( $in_email )" sprawdza czy taki mail jest już w bazie tak ?

Jeśli tak to gdzie znajdę kod tej funkcji ?

  • Manager
Opublikowano

Plik: ips_kernel/class_converge.php

Kod: ( ~ 90 linia )

	function converge_check_for_member_by_email( $email )
{
//...
}

Jednak tej funkcji bym nie ruszał, a skupił się na tym, co ona zwraca: wartości logiczne TRUE lub FALSE. Jeśli TRUE to e-mail jest już w bazie, jeśli FALSE jest 'wolny'.

Cały email, a nie xxxx@ :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

Otwórz ips_kernel/class_converge.php

Znajdź

	/*-------------------------------------------------------------------------*/
// Test for converge row
/*-------------------------------------------------------------------------*/

/**
* Checks for a DB row that matches $email
*
* @param	string Email address
* @return	boolean
*/

function converge_check_for_member_by_email( $email )
{
	$test = $this->converge_db->simple_exec_query( array( 'select' => 'converge_id', 'from' => 'members_converge', 'where' => "converge_email='$email'" ) );

	if ( $test['converge_id'] )
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

Zamień na

	/*-------------------------------------------------------------------------*/
// Test for converge row
/*-------------------------------------------------------------------------*/

/**
* Checks for a DB row that matches $email
*
* @param	string Email address
* @return	boolean
*/

function converge_check_for_member_by_email( $email )
{
	$this->converge_db->simple_exec_query( array( 'select' => 'converge_email', 'from' => 'members_converge') );

	list($nazwaform, $hostform) = explode('@', $email);
	while ($mail = $this->converge_db->fetch_row())
	{
		list($nazwabaza, $hostbaza) = explode('@',$mail['converge_email']);


		if($nazwabaza == $nazwaform && gethostbyname($hostbaza) == gethostbyname($hostform) )
		{
			$test2 = 1;
		}
	}

	$test = $this->converge_db->simple_exec_query( array( 'select' => 'converge_id', 'from' => 'members_converge', 'where' => "converge_email='$email'" ) );

	if ( $test['converge_id'] || $test2 )
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}

Sprawdzałem na mailu z o2 i działało, niemniej jednak proszę o testy.

Edytowane przez jojo
  • Manager
Opublikowano

Witaj,

tak, jak już wczoraj pisałem - kod jest OK i można go z powodzeniem stosować :)

Jednak muszę go dopracować, bo w obecnej formie pobiera wszystkie maile z bazy, a chciałbym to zmienić by pobierało tylko te 'znaczące'.

Nie mniej gratuluję wykonanej pracy. Można? Można :(

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

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