• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Cenzura e-maila

Cloud VPS
0 głosów
623 wizyt
pytanie zadane 5 kwietnia 2018 w PHP przez OdsetekGlupoty Pasjonat (15,360 p.)
edycja 5 kwietnia 2018 przez OdsetekGlupoty

Witam,

Mam może z pozoru niewielki problem, ale nie daje mi to spokoju. Jeśli użytkownik wejdzie w jego panel zarządzania kontem może tam zmienić e-mail i hasło. U góry są dane użytkownika - jego nick, data rejestracji oraz cenzurowany z pomocą gwiazdek * email. Wygląda (a właściwie powinno wyglądać) to tak, że pokazuje 3 pierwsze znaki, a reszta zostaje zamieniona na gwiazdki. Potem wyświetla znak @ i nazwę maila też powinien cenzurować. Na koniec tylko ma zostawić końcówkę, czyli .pl .com itd...

Czyli jeśli ktoś ma e-mail bartus120abc@gmail.com to cenzura powinna wyświetlić:

bar*********@*****.com

Robię to dlatego, że w wypadku włamania się na konto danego użytkownika, włamywacz nie dostanie danych na tacy, a sam użytkownik będzie mógł łatwo, pomimo cenzury, przypomnieć sobie swój e-mail.

Jednak mam problem z cenzurą na nazwę maila (to co jest po @). Próbowałem znaleźć jakiś złoty środek, czyli odejmować licznik w pętli for, dzielić, dodawać tak jak robiłem to w pierwszym forze ale to niestety nie działa! Raz wyświetla za dużo gwizadek, a raz za mało. Proszę o pomoc.

Kod:

$emailAtPosition = strpos($email, '@');
$emailDotPosition = strpos($email, '.');
$hidenemail = substr($email, 0, 3);
	
for ($i = 0; $i <= $emailAtPosition-4; $i++)
{
	$hidenemail = $hidenemail.'*';
}
	
$hidenemail = $hidenemail.'@';

for ($i = 0; $i <= $emailDotPosition; $i++)
{
	$hidenemail = $hidenemail.'*';
}
	
$emailname = substr($email, $emailDotPosition);
$hidenemail = $hidenemail.$emailname;

Pokazuję cały kod maskowania. Może winny nie jest sam for.

Z góry dziękuję za wszystkie odpowiedzi!

komentarz 5 kwietnia 2018 przez Tomek Sochacki Ekspert (227,490 p.)
ale chwila, po co ukrywać e-maila??? adres e-mail jest przecież jawny, nie znam nikogo, kto zakładałby oddzielne adresy tylko do pojedynczych rejestracji i nikomu ich nie dawał, zresztą fakt poznania e-maila nic Ci nie da, musisz znać przecież hasło, a tego nigdzie nie wyświetlasz i nawet w bazie masz zaszyfrowane.
komentarz 5 kwietnia 2018 przez OdsetekGlupoty Pasjonat (15,360 p.)
Aby zalogować się do mojego serwisu trzeba podać nazwę użytkownika oraz hasło. E-mail służy tylko do kontaktu administracja-użytkownik. A jeśli ktoś poda dobry login i hasło i będzie miał podany e-mail w panelu zarządzania kontem będzie mógł już zmienić i e-mail i hasło i praktycznie przywłaszczyć sobie czyjeś konto.

A jeżeli jakiś nierozgarnięty użytkownik zapomni swojego maila będzie mógł go łatwo sprawdzić w panelu pomimo cenzury (3 pierwsze znaki powinny wystarczyć).
komentarz 5 kwietnia 2018 przez niezalogowany

A jeśli ktoś poda dobry login i hasło i będzie miał podany e-mail w panelu zarządzania kontem będzie mógł już zmienić i e-mail i hasło i praktycznie przywłaszczyć sobie czyjeś konto.

To wysyłaj na stary adres mailowy potwierdzenie zmiany. 

1 odpowiedź

0 głosów
odpowiedź 5 kwietnia 2018 przez Tnifey Pasjonat (24,190 p.)
wybrane 5 kwietnia 2018 przez OdsetekGlupoty
 
Najlepsza

próbowałeś może str_repeat zamiast tych śmisznych forów?

http://php.net/manual/en/function.str-repeat.php

komentarz 5 kwietnia 2018 przez OdsetekGlupoty Pasjonat (15,360 p.)
Jak mam tego użyć żeby cenzura działała? Utworzyć 2 zmienne, w których będzie siedziała odpowiednia ilość gwiazdek, a potem to odpowiednio podoczepiać do $hidenemail?

Trochę trzeba by było się pomęczyć...
komentarz 5 kwietnia 2018 przez Tnifey Pasjonat (24,190 p.)
no chyba dokładnie tak jak powiedziałeś, tak by wypadało zrobić, nawet jednego fora nie trzeba użyć :P wszystko ładnie prosto :P

nudziło mi się więc coś takiego jako kod poglądowy mogę ci przedstawić :P

https://repl.it/@HubertLesiak/emailCensor
komentarz 5 kwietnia 2018 przez OdsetekGlupoty Pasjonat (15,360 p.)

Dzięki za pomoc! A tak poza tym to nie byłoby prościej zrobić to jakoś tak?

$emailAtPosition = strpos($email, '@');
$emailDotPosition = strpos($email, '.');
$hidenemail = substr($email, 0, 3);
	
$emailCensure1 = str_repeat('*', $emailAtPosition-3);
$emailCensure2 = str_repeat('*', $emailDotPosition-$emailAtPosition-1);
	
$emailname = substr($email, $emailDotPosition);
	
$hidenemail = $hidenemail.$emailCensure1.'@'.$emailCensure2.$emailname;

 

Podobne pytania

0 głosów
1 odpowiedź 505 wizyt
pytanie zadane 10 września 2018 w C i C++ przez Archeon Początkujący (480 p.)
0 głosów
1 odpowiedź 507 wizyt
pytanie zadane 9 września 2018 w C i C++ przez Archeon Początkujący (480 p.)
+2 głosów
2 odpowiedzi 749 wizyt
pytanie zadane 7 maja 2018 w Offtop przez NIMuser Stary wyjadacz (11,030 p.)

93,454 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,832 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...