업로드 파일이름 변경할만한 난수발생하는 함수가 있을까요?
본문
/bbs/write_update.php
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925) $upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
이런식으로 좀 짧게 할 난수로 사용할 함수가 좀 있을까요?
기본값이 6a815396b00685d9f17990646c48acf1_1478171199_966.jpg 이런식인데요
aZZJJnD.jpg
답변 3
function genCode($s){
$arx = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz";
$rt = "";
for($i=0; $i < $s; $i++){
$rn = rand(0, strlen($arx));
$rt .= substr($arx, $rn, 1);
}
return $rt;
}
$s변수가 자리수 입니다. 숫자가 필요하면 숫자를 arx에 추가하시면 되구요.
문제는 첨부파일이 같은이름이 생기면 안되기때문에 생성한 코드가 유니크해야 합니다.
그렇기 때문에 그누보드처럼 파일명의 길이를 길게 복잡하게 하여 같은 이름이 나오는 경우를 만들지 않게 하거나. 질문자님 처럼 짧게 하고 싶은 경우 유니크한 값을 DB에 저장 관리하거나 동일한 파일이 있는지 채크해야 합니다.
코드를 생성하고 같은 값(DB나 동일한 파일)이 있는지 채크해서 같은 값이 있다면 재생성하는 과정을 반복해서 유니크한 값을 만들어내야 합니다.
abs
(
ip2long
(
$_SERVER
[
'REMOTE_ADDR'
]))
이것만 지워도 짧아질것같네요
어짜피 각각의 board_file에 들어가게되니까
수천수만가지 파일이 있지않다면
충분히 문제없다고 생각되네요
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz";
$str = str_shuffle($str);
$str = substr($str, 0, 10);
echo $str;
휴란드 님이 쓰신 것처럼 넣을 문자열을 최초에 입력하고 그걸 str_shuffle로 섞은 후에 substr를 써서 적당한 길이로 자르면 됩니다.
!-->