로고 업데이트 시 업로드가 되지 않거나 혹은 원치 않는 결과가 주어집니다.
본문
이윰빌더를 처음 사용하고 있는데 먼저 멋진 작품을 제공해주셔서 감사드립니다.
본론으로 들어가서 제목에 적은대로, 로고 업데이트 시 업로드가 되지 않거나 혹은 원치 않는 결과가 주어집니다.
정보를 업데이트했다는 메시지를 받음에도 정작 파일은 업로드가 실패하는 경우가 간혹 있으며, 혹은 로고 상단과 하단 이미지를 따로 지정하였지만 동일한 이미지가 상단과 하단으로 올라오기도 합니다.
하지만 이미지를 하나씩만 올리면 성공하는 것처럼 보입니다.
실패할 경우 여러번 반복하다보면 올라오기도 하지만 아무래도 문제가 있어서 원인을 찾아보았습니다.
eyoom/class/upload.class.php 파일을 보면 139라인에 다음의 코드가 있습니다:
$destfile = $this->eb->encrypt_aes(time()) . '.' . $ext;
여기서 문제가 발생합니다. 원인은 파일이름을 time()이라는 값을 주고 aes로 암호화 하는 것인데 문제는 여러 개의 파일을 올리더라도 서버에서 처리 속도가 빠르면 각각의 time()값이 일치하는 경우가 생깁니다. 그렇게 되면 상단과 하단의 이미지 값을 따로 주어도 동일한 파일명이 생성되므로 상단과 하단이 같은 파일이 업로드 됩니다. 또 하나의 문제는 aes 결과가 base64 인코딩된 값으로 주어지는데 가끔 이 값에 '/'이 포함될 수 있습니다. 문제는 '/' 이 문자는 디렉토리 구분자라는데 있습니다. 이런 경우 업로드가 실패하게 됩니다. 저는 다음과 같이 수정했습니다:
$destfile = preg_replace('#[+/]#', '', $this->eb->encrypt_aes(md5(time().$src_name, true))) . '.' . $ext;
이전보다 파일 길이가 조금 길어지기는 하지만 문제없이 원하는 파일이 잘 올라가는 것 같습니다. 좀 더 명확히 하려면 랜덤 스트링도 더해주면 되겠지만 이정도 해도 원하는 결과를 얻을 수 있습니다.
그누보드 소스를 보지 않은지 오래되었기에 다시 볼래니 머리가 아프네요. 모르는 소스들도 많이 늘었고...
댓글목록1
이윰EGG님의 댓글
사용에 불편을 드려 죄송하며 해당 사항은 점검 후에 다음 이윰빌더에 패치 할 수 있도록 하겠습니다.
감사합니다.
축하합니다. 첫댓글 포인트 44포인트를 획득하였습니다.