전체 제목 : FCK 편집기 2.x : FCKeditor를 사용하여 서로 다른 응용 프로그램의 다른 폴더에 파일/이미지/비디오 업로드. 안전한 방법으로 $ Config [ 'UserFilesPath']를 완전히 동적으로 만듭니다.
여러 가지 방법으로 수행 할 수 있습니다. 나는 PHP 응용 프로그램의 코드 구조에 따라 적용한 프로세스를 설명하고 있습니다. 내 응용 프로그램마다 동일한 코드 구조/프레임 워크를 사용했으며 각 응용 프로그램은 내 서버의 하위 폴더로 사용했습니다. 따라서 하나의 FCKeditor를 사용하여 모든 방식으로 올바르게 구성 할 수 있도록 논리적으로 필요합니다. FCKeditor의 내용 부분은 괜찮습니다. 단일 FCKeditor 구성 요소로 다른 응용 프로그램이나 프로젝트에서 쉽게 재사용 할 수 있습니다. 그러나 이미지, 비디오 또는 다른 문서와 같은 파일 업로드시 문제가 발생합니다. 다른 프로젝트에 적용하려면 파일을 다른 프로젝트의 개별 폴더에 업로드해야합니다. 그리고 $ Config [ 'UserFilesPath']는 동적 폴더 경로로 구성되어야하며 각 프로젝트마다 다른 폴더 경로를 의미하지만 동일한 위치에서 동일한 FCKeditor 구성 요소를 호출해야합니다. 나는 약간의 differnt 과정을 단계적으로 설명하고있다. FCKeditor 버전 2.5.1 및 VersionBuild 17566으로 저에게 잘 맞 췄고 다른 사람들에게도 잘되기를 바랍니다. 다른 개발 업체에서 작동하지 않는다면, 프로젝트 코드 구조 및 폴더 쓰기 권한 및 FCKeditor 버전에 따라 프로세스에서 약간의 조정이 필요할 수 있습니다.
1) fckeditor \ editor \ filemanager \ connectors \ phpconfig에 있습니다.PHP 파일
a) 글로벌 $ 구성; $ Config [ 'Enabled'] = false; 세션 따라 안전한 방법을 원하는 경우 I)가, : 단 하나의 사이트 설정을 :
if(!isset($_SESSION)){
session_start();
}
if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") {
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH'];
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}
NB : 각 하나 개의 프로젝트 도메인 또는 하위 도메인에 대해 하나의 FCKEDITOR을 즉, 하나도 FCKEDITOR 여러 프로젝트에 다음 코드를 삽입 : $ _SESSION [ 'SESSION_SERVER_RELATIVEPATH'] : 웹 루트에 해당하는 프로젝트의 상대 폴더 경로. "/ project/folder/path /"와 같아야하며 세션이 시작된 프로젝트의 공통 파일에이 세션 변수를 설정해야합니다. 그리고 프로젝트의 설정 파일로 settings/configuration.php가 있어야합니다. 이름이나 경로가 다르면 여기에서 해당 경로를 configurations/configuration.php 대신 입력해야합니다.
ii) 다른 하위 폴더로 표시되고 세션 종속적 인 다른 프로젝트에 대해 단일 FCKeditor 구성 요소를 사용하려는 경우 보안 방식 (서로 다른 프로젝트에 대해 서로 다른 session_name을 사용하여 단일 서버에서 세션을 구분할 수 있음) 그러나 프로젝트가 하위 도메인 또는 다른 도메인으로 표시되고 세션 독립적 방법 (iii)을 사용해야하는 경우에는 작동하지 않습니다 (안전하지는 않지만). 다음 코드를 입력하십시오 :
if(!isset($_SESSION)){
session_name($_REQUEST['param_project_to_fck']);
session_start();
}
if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") {
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH'];
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}
N.B. (예 : 점 (i)의 끝 부분)
iii) 서로 다른 하위 폴더와 하위 도메인 또는 도메인을 나타내는 여러 프로젝트에 대해 단일 FCKeditor 구성 요소를 사용하려는 경우 (완전히 안전하지는 않지만). 다음 코드를 입력하십시오 :
if(isset($_REQUEST['param_project_to_fck']) && $_REQUEST['param_project_to_fck']!=""){ //base64 encoded relative folder path of the project corresponding to the webroot; should be like "/project/folder/path/" before encoding
$relative_path=base64_decode($_REQUEST['param_project_to_fck']);
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php");
}
N.B. 포인트의 끝 이제 당신이 선택한 어떤 경우에 그 이후 (내가)
B)에서,이 코드를 발견하십시오
// Path to user files relative to the document root.
$Config['UserFilesPath'] = '/userfiles/' ;
를 다음 코드 교체 : 여기에 $
if(isset($SERVER_RELATIVEPATH) && $SERVER_RELATIVEPATH==$relative_path) { //to make it relatively secure so that hackers can not create any upload folder automatcally in the server, using a direct link and can not upload files there
$Config['Enabled'] = true ;
$file_upload_relative_path=$SERVER_RELATIVEPATH;
}else{
$Config['Enabled'] = false ;
exit();
}
// Path to user files relative to the document root.
//$Config['UserFilesPath'] = '/userfiles/' ;
//$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ;
$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path;
을 SERVER_RELATIVEPATH는 상대 경로이며 이전에 포함 된 프로젝트의 구성 파일에서 설정해야합니다.
$ file_upload_relative_path 변수를 사용하여 다른 동적 폴더 경로와 함께 $ Config [ 'UserFilesPath']를 설정할 수 있습니다. 내 Bluehost Linux 서버에서 프로젝트 루트 폴더 (0755 권한) userfiles 폴더 및 userfiles 아래의 하위 폴더 (FCKeditor 코딩에 따라 0777 여야 함)가 있으므로 해당 폴더에 파일을 업로드 할 수 없습니다. 당신이있는 경우,
$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path;
그러나 : 그래서, (프로젝트 루트 폴더 이상) 서버의 웹 루트에 폴더 userfiles을 생성하고, 여기에 0777에 권한을 설정, 같은 $의 구성 설정에 대한 코드를 사용 귀하의 경우 프로젝트의 하위 폴더에 쓰기 권한 문제는, 당신은 (이전 코드 세그먼트에서 주석) 이전 라인을 사용할 수 있습니다 : 그것은 당신이 비만
$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ;
마음은 '[기존 $ 구성을 주석 없습니다 UserFilesPath '] ='/ userfiles/'; 이 파일에서 파일의 다른 위치에 존재하는 경우 파일을 바꾸거나 단순히 주석 처리합니다.
2) 1) (a) (ii) 또는 (iii) 방법을 선택한 경우
(a) fckeditor \ editor \ filemanager \ browser \ default \ browser.html 파일을 엽니 다.
이 줄을 검색하십시오. var sConnUrl = GetUrlParam ('Connector'); 그 선 후
넣고 다음 명령 : 이제
var param_project_to_fck = GetUrlParam('param_project_to_fck') ;
,이 라인에 대한 검색 sUrl + = '& CurrentFolder ='+에 encodeURIComponent (this.CurrentFolder를);
은 줄 끝에서이 명령을 넣어 :
sUrl += '¶m_project_to_fck=' + param_project_to_fck ;
(b)는 이제 오픈 ckeditor의 \ 편집기 \의 파일 관리자 \ 브라우저 \ 기본 \의 frmupload.html 파일을. 이 라인에 대한
검색 (그것은 SetCurrentFolder() 함수에 있어야합니다) :
sUrl += '¶m_project_to_fck='+window.parent.param_project_to_fck;
3) 당신이 보여주고 싶은 자 :
sUrl += '&CurrentFolder=' + encodeURIComponent(folderPath) ;
은 줄 끝에서이 명령을 넣어 프로젝트에서 FCKeditor를 사용하려면 먼저 해당 줄을 해당 PHP 파일/페이지에 넣어야합니다.
a) 이제 1) (a) (ii) 또는 (iii) 메소드를 선택한 경우 해당 행 앞에 다음 코드 세그먼트를 배치하십시오. $ oFCKeditor-> Create(); 당신이 하나를 선택한 경우
$oFCKeditor->Config["LinkBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php¶m_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);
$oFCKeditor->Config["ImageBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/php/connector.php¶m_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);
$oFCKeditor->Config["FlashBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/php/connector.php¶m_project_to_fck=".base64_encode($SERVER_RELATIVEPATH);
B))의 (a) (ii)에 방법, 다음 위의 코드 코드 세그먼트에서, 단지 모든 텍스트 대체이 하나 base64_encode ($의 SERVER_RELATIVEPATH) : (base64_encode (session_name를))
그리고 끝났습니다.
나를 도와 주셔서 감사합니다. 그러나 이것은 작동하지 않습니다. config-property는 편집기 filebrowser가 아닌 실제 편집기 전용입니다. – Espo