Поэтому давайте скажем, что у меня есть пароль в виде строки:
$password = "thisisaplaintextpassword"
Как я могу превратить его в следующее?
$password = "************************"
Я хотел бы отправить пользователям данные своей учетной записи по электронной почте и не хочу отправлять все это.
Использовать str_repeat
$password = str_repeat("*", strlen($password));
Вы не должны показывать длину пользователю, поскольку это утечка информации, которая должна быть безопасной.
Соцратический метод используется здесь в комментариях ниже вашего вопроса в вопросе «почему вы хотите это сделать?». больше советов «не делай этого», но социал-метод должен побуждать вас думать о том, почему задается вопрос. Вы должны сделать вывод, что «вы не должны задавать этот конкретный вопрос, потому что основа для этого вопроса ошибочна». Просто используйте статическую строку. Это лучший совет, чем на самом деле рассказывать вам, как делать что-то не то, что нужно делать в данной ситуации.
Во-вторых: чтобы показать пользователю последовательность звездочек, которые отражают длину их пароля, можно предположить, что вы храните свой пароль в виде чистого текста или только зашифровываете его, чтобы вернуть его в исходную форму, чтобы определить длину , Это предает дальнейшее отсутствие безопасности с вашей стороны. Если нет веских оснований, не следует хранить только хэш пароля. И хеши имеют равномерную длину, поэтому ваш вопрос лишний.
Поэтому вы – просто – не должны этого делать. Это ответ на нижеследующий вопрос, который вы задаете.
Однако, ради полноты, я повторю ответ, который у вас уже есть в других ответах:
function stringToAsterisks($string){ return str_repeat("*", strlen($string)); }
$password = "thisisaplaintextpassword" echo str_repeat("*",strlen($password));
Пример ввода
testingpass
Образец вывода
***********
Пример ввода
hello
Образец вывода
*****
function hidePassword($p) { $fit = strlen($p); return sprintf("%'*-${fit}s",false); } echo hidePassword($p);