질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 1.x

숫자로 시작하는 user_id 생성(db에 직접입력) 후 로그인은 가능하나 회원수정시

 

아이디의 값은 영문, 숫자, _만 가능하며 첫 글자는 영문이어야 합니다. 라는 에러메시지를 띄우며 회원수정이 안됩니다.

어느부분을 수정해야 하는지 도움 부탁드립니다.

 

https://xe1.xpressengine.com/tip/22803787

회원수정시에도 해당하는지는 모르겠으나 ./common/js/xml_js_filter.js  ./classes/validator/Validator.class.php 두파일은

수정하였고 xe.min.js 부분은 이해를 못해 수정하지 못했습니다.

  • profile

    DB에 직접 입력하셨다면 DB에서 직접 수정하는 것이 가장 간단할 것 같네요.

    XE 구조가 복잡해서 소스를 뜯어고치기는 쉽지 않은지라...

  • profile
    코어를 고치는 건 유지보수 측면에서 많이 불편해 질겁니다.
    사용자 id 사용하지 않아도 자동으로 회원번호에 t를 추가해서 만들어주는 것과 동일하게 직접 할당하실때 앞자리에 t를 넣어서 생성하시는 걸 추천 드립니다.
  • profile
    굳이 해당 파일을 수정하는건 권장하지 않습니다. 윗분 기진님께서 말씀하신 것 과 같이 아주 복잡하고, xe.min 뿐만 아니라 filter라는 존재를 찾아 모두 고쳐놔야 하는 부분이 많습니다. (룰셋이거나..)

    기본적으로 디비를 손보면서까지 숫자를 앞에 써야 하는 경우라면 해당 계정에만 쓰시고, 그 외 계정은 막아두시는걸 추천드립니다.

    잘못하다가는 외양간 리모델링 하다가 소를 잃을 수 있습니다.
  • profile
    단순히 어떤 한부분만 수정해서 될사항이 아닐꺼라고는 생각했으나....역시나 이군요 ^^;;
    답변 달아 주셔서 감사합니다.
  • profile
    혹시 지금 라이믹스도 기존 숫자 아이디 회원은 로그인 못하나요?
  • profile ?
    코어를 수정해서 사용하신 것이 아니라면, XE시절부터 숫자로 시작하는 아이디는 허용된 적이 없습니다. 따라서, "기존 숫자 아이디 회원"은 XE나 라이믹스 상에서 생성되지 않고, 혹여 데이터베이스에 존재한다면, 라이믹스나 XE 이외의 프로그램으로 생성되었을 가능성이 높습니다.
  • ? profile
    답변주셔서 감사합니다
    일반적인 회원가입으로 id생성이 아니고
    제가 임의로 db에 직접 회원을 생성했습니다~^^
  • profile profile
    일반적인 회원가입방식애서는 숫자로 시작하는 아이디는 생성이 되질 않습니다.
    저는 db에 직접 입력해서 생성 시켰던겁니다.
  • profile

    숫자와 문자열의 구분이 희박한 PHP 같은 스크립트 언어에서, 숫자만으로 이루어졌거나 숫자로 시작하는 문자열은 그냥 숫자로 처리될 위험이 높습니다. 특히 회원정보에서 이런 일이 일어나면 123abc, 123def, 123이 모두 동일한 아이디로 취급되어 서로의 권한을 탈취할 수 있게 된다거나, 여러 가지 부작용이 발생할 수 있습니다. PHP뿐 아니라 상당수의 시스템에서 숫자로 시작하는 아이디를 허용하지 않는 것은 이런 이유 때문입니다.

     

    최근에는 PHP도 자료형 구분이 점점 엄격해지고 있어서 이런 위험은 줄어드는 추세이고, 코어 차원에서 좀더 엄격하게 체크할 수도 있겠지만, 여전히 엉망으로 코딩된 서드파티 자료가 많기 때문에 공식적으로는 허용하지 않고 있습니다. 숫자와 문자열의 구분은 고사하고, 배열과 오브젝트조차 구분하지 않고 대충 만든 자료들이 PHP 8.0에서 모조리 에러를 뿜는 것을 보면 아직 갈 길이 멀었습니다... (당장 PHP에서 "123abc" + 456 * "2D" = 1035라는 황당한 결과가 나오는 것만 봐도 싹수가 노랗죠... ㅠㅜ)