숫자로시작하는 user_id 생성 후 회원정보 수정
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.4 |
숫자로 시작하는 user_id 생성(db에 직접입력) 후 로그인은 가능하나 회원수정시
아이디의 값은 영문, 숫자, _만 가능하며 첫 글자는 영문이어야 합니다. 라는 에러메시지를 띄우며 회원수정이 안됩니다.
어느부분을 수정해야 하는지 도움 부탁드립니다.
https://xe1.xpressengine.com/tip/22803787
회원수정시에도 해당하는지는 모르겠으나 ./common/js/xml_js_filter.js ./classes/validator/Validator.class.php 두파일은
수정하였고 xe.min.js 부분은 이해를 못해 수정하지 못했습니다.
댓글 9
DB에 직접 입력하셨다면 DB에서 직접 수정하는 것이 가장 간단할 것 같네요.
XE 구조가 복잡해서 소스를 뜯어고치기는 쉽지 않은지라...
사용자 id 사용하지 않아도 자동으로 회원번호에 t를 추가해서 만들어주는 것과 동일하게 직접 할당하실때 앞자리에 t를 넣어서 생성하시는 걸 추천 드립니다.
기본적으로 디비를 손보면서까지 숫자를 앞에 써야 하는 경우라면 해당 계정에만 쓰시고, 그 외 계정은 막아두시는걸 추천드립니다.
잘못하다가는 외양간 리모델링 하다가 소를 잃을 수 있습니다.
답변 달아 주셔서 감사합니다.
일반적인 회원가입으로 id생성이 아니고
제가 임의로 db에 직접 회원을 생성했습니다~^^
저는 db에 직접 입력해서 생성 시켰던겁니다.
숫자와 문자열의 구분이 희박한 PHP 같은 스크립트 언어에서, 숫자만으로 이루어졌거나 숫자로 시작하는 문자열은 그냥 숫자로 처리될 위험이 높습니다. 특히 회원정보에서 이런 일이 일어나면 123abc, 123def, 123이 모두 동일한 아이디로 취급되어 서로의 권한을 탈취할 수 있게 된다거나, 여러 가지 부작용이 발생할 수 있습니다. PHP뿐 아니라 상당수의 시스템에서 숫자로 시작하는 아이디를 허용하지 않는 것은 이런 이유 때문입니다.
최근에는 PHP도 자료형 구분이 점점 엄격해지고 있어서 이런 위험은 줄어드는 추세이고, 코어 차원에서 좀더 엄격하게 체크할 수도 있겠지만, 여전히 엉망으로 코딩된 서드파티 자료가 많기 때문에 공식적으로는 허용하지 않고 있습니다. 숫자와 문자열의 구분은 고사하고, 배열과 오브젝트조차 구분하지 않고 대충 만든 자료들이 PHP 8.0에서 모조리 에러를 뿜는 것을 보면 아직 갈 길이 멀었습니다... (당장 PHP에서 "123abc" + 456 * "2D" = 1035라는 황당한 결과가 나오는 것만 봐도 싹수가 노랗죠... ㅠㅜ)