2014-09-22 3 views
8

별표 (*)로 모든 문자를 대체 :PHP는 그래서 문자열의 형태로 암호가 말할 수

$password = "thisisaplaintextpassword" 

나는 다음으로 바꿀 수 있습니까?

$password = "************************" 

전자 메일을 통해 사용자에게 계정 정보를 보내고 싶습니다. 전체 내용을 보내려하지 않습니다.

+0

을 '전체 thing.'를 보내지 않으 .. 그럼 왜 필요하지 않은 경우 암호를 보내려고합니까? – Jenz

+0

@u_mulder 암호 길이가 다릅니다 – ThatGuy343

+4

아무도 볼 수 없으면 - 1. 왜 보내겠습니까? 2. 누가 그 길이가 얼마입니까? –

답변

0
$password = "thisisaplaintextpassword" 
echo str_repeat("*",strlen($password)); 

샘플 입력

testingpass 

샘플 출력

*********** 

샘플 입력

hello 

즉 안전해야 누출 정보이기 때문에 당신은 정말, 사용자에게 길이를 표시하지 않아야

***** 
0
function hidePassword($p) { 
    $fit = strlen($p); 
    return sprintf("%'*-${fit}s",false); 
} 

echo hidePassword($p); 
6

샘플 출력.

소크라테스 식의 방법은 "왜 그렇게하고 싶습니까?"라는 질문에 아래 질문에 사용됩니다. 더 많은 충고는 "하지 마라."하지만 소크라테스 식의 방법은 당신에게 질문이 왜 제기되고 있는지 생각하도록 격려하기로되어있다. 당신이 그려야 할 결론은 "질문의 근거가 잘못되어 있기 때문에 특정 질문을해서는 안됩니다"입니다. 그냥 정적 문자열을 사용하십시오. 이것은 주어진 상황에서 잘못된 일을하는 방법을 실제로 말하는 것보다 더 나은 조언입니다.

둘째 : 암호의 길이를 반영하는 별표 (*)를 사용자에게 표시하려면 암호를 일반 텍스트로 저장하거나 원래 형식으로 되돌릴 수 있도록 암호화하는 것이 좋습니다. 길이를 결정하기. 이것은 당신의 부분에 보안의 추가 부족을 배신하고 있습니다. 그렇지 않은 아주 좋은 이유가 없다면 암호 해시 만 저장해야합니다. 해시는 길이가 일정하므로 질문이 중복 될 수 있습니다.

당신은 - 아주 간단하게 - 이것을해서는 안됩니다. 은 당신이 묻고있는 질문의 결론에 대한 대답입니다.

그러나 완전성을 위해, 당신이 다른 응답에 이미 대답을 반복합니다 :

function stringToAsterisks($string){ 
    return str_repeat("*", strlen($string)); 
} 

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

+0

이 통찰력에 감사한다. 계정 시스템을 설정하는 것은 이번이 처음입니다. – ThatGuy343

+1

probs 없음 : 우리는 모두 어딘가에서 시작하고,이 물건 중 일부는 첫 번째 시간에 즉시 분명하지 않습니다. 내가 직접 모든 것을 고안하지 말고, 이런 종류의 일에 최선의 방법으로 접근하는 방법에 대해 읽어보십시오. 특히 사람들의 데이터를 보호 할 때 그렇습니다. –

관련 문제