회원가입시 비밀번호 입력시 영문+숫자만 특수문자는 제외 방법이 궁금합니다
본문
<?php
include_once('./_common.php');
//include_once(G5_LIB_PATH.'/register.lib.php');
function empty_pass($reg_mb_password)
{
if (trim($reg_mb_password)==''){
return "0|패스워드를 입력해 주십시오.";
}else{
return "";
}
}
function number_chk_pass($reg_mb_password){
if(ereg("[^0-9]",$reg_mb_password)){ // 문자열 변수에 숫자이외의 문자가 포함되어 있으면
$pattern = '/^.*(?=^.{6,20}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/';
if(preg_match($pattern ,$reg_mb_password)){
//return "1|";
return "";
}else{
echo "2|패스워드는 최소 6글자 이상(영문,숫자,특수문자 조합)으로 입력하세요.";
}
}else {
echo "0|비밀번호는 영문, 숫자, 특수문자 모두 포함되어야 합니다.";
}
}
function count_pass($reg_mb_password){
if (strlen($reg_mb_password) < 6){
return "0|패스워드는 최소 6글자 이상(영문,숫자,특수문자 조합)으로 입력하세요.";
}else{
return "";
}
}
$reg_mb_password = trim($_POST['reg_mb_password']);
if ($msg = empty_pass($reg_mb_password)) die($msg);
if ($msg = count_pass($reg_mb_password)) die($msg);
if ($msg = number_chk_pass($reg_mb_password)) die($msg);
?>
답변 2
해당 패턴에서
$pattern = '/^.*(?=^.{6,20}$)(?=.*\d)(?=.*[a-zA-Z]) (?=.*[!@#$%^&+=]).*$/';
부분제외하시면 될듯합니다.
.*$ 부분은 뺀후 상태확인필요함.
function checkPassword(password){
var id = $('#userid').val();
var rtn_val = "";
if( password != ''){
if(!/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/.test(password)){
alert('숫자+영문자+특수문자 조합으로 8자리 이상 사용해야 합니다.');
document.getElementById('userpwd').value = "";
setTimeout(function(){ $('#userpwd').focus(); }, 10)
return false;
}
return true;
var checkNumber = password.search(/[0-9]/g);
var checkEnglish = password.search(/[a-z]/ig);
if(checkNumber <0 || checkEnglish <0){
alert("숫자와 영문자를 혼용하여야 합니다.");
$('#userpwd').val('');
setTimeout(function(){ $('#userpwd').focus(); }, 10)
return false;
}
if(/(\w)\1\1\1/.test(password)){
alert('같은 문자를 4번 이상 사용하실 수 없습니다.');
$('#userpwd').val('');
setTimeout(function(){ $('#userpwd').focus(); }, 10)
return false;
}
if(password.search(id) > -1){
alert("비밀번호에 아이디가 포함되었습니다.");
$('#userpwd').val('');
setTimeout(function(){ $('#userpwd').focus(); }, 10)
return false;
}
return true;
}
}