<repo_name>binghe17/bulk<file_sep>/v2/originAjax.js

//-------------------------------------JS정의
//완전한 요청주소
function originAjax(url, data, callback){
	url = originUrl(url, data);
	$.getScript(url , callback);//비동기실행
}

//url주소 만들기 //url + param
function originUrl(url, data){
	if(data == null) return url;
	else {
		if(url.indexOf('?') > 0) return url + '&'+ serialize(data);
		else return url +'?'+ serialize(data);
	}
}

//objcet를 url param형태로 전환
function serialize(obj, prefix) {
	var str = [], p;
	for (p in obj) {
		if (obj.hasOwnProperty(p)) {
			var k = prefix ? prefix + "[" + p + "]" : p,
			v = obj[p];
			str.push((v !== null && typeof v === "object") ? serialize(v, k) : encodeURIComponent(k) + "=" + encodeURIComponent(v));
		}
	}
	// return decodeURIComponent(str.join("&"));
	return str.join("&");
}


//-----------------

	//origin :  output is js code
	//문제: origin으로 설정된 사이트가 외부 사이트와 데이터를 주고 받지 못할때. ($.get, $.post, $.ajax $.load를 사용할수 없음) //js주입
	//해결: get방식으로 모든 데이터를 서버에 전송하고 조건에 따라 실행후의 결과를 js방식으로 리턴해서 클라이언트에서 바로실행하게 함

	//주의: 전역변수에 let가 없어야 함.
	//실행1: $("#resultBox").html('<script src="bulkdata.php?m=3" ></script>');//스크랩드 수정
	//실행2: $.getScript("bulkdata.php?m=3");//jquery비동기 요청
	//originAjax('bulkdata.php?m=5', {mode:'searchId', id:'leecojo'})
	//originAjax('savefile_origin.php',  {mode:'searchId', id:'leecoo'}, function(){ console.log(res); });

<file_sep>/v1/savefile.php
<?php 

$filename = './datas/bulkdata.json';

if($_GET['mode'] == 'searchId'){
    if($_POST['id'] == null){
        echo 'NO_ID';
    }else{
        if(file_exists($filename)){
            $data = file_get_contents($filename);
            $data = json_decode($data, 1);
            // print_r($data);
            $id = $_POST['id'];
            if(isset($data['data'][$id]) && $data['data'][$id] >= $_POST['maxPrice']) {
                $data['data'] = 'YES';
            }else {
                $data['data'] = 'NO';
            }
            echo json_encode($data, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT);
        }
    }
}
else if($_GET['mode'] == 'getTextFile'){
    if(file_exists($filename)){
        echo file_get_contents($filename);
    }else echo 'NOFILE';
}
else if($_GET['mode'] == 'saveTextFile'){
    if($_POST != null){
        // print_r($_POST);
        $data = json_encode($_POST, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT);
        if(file_put_contents($filename , $data)) echo $_POST['lastTime'];
    }
}

// // 설정
// $uploads_dir = './datas';
// $allowed_ext = array('csv');//헝용한 파일 확장자


// //save upload file
// else if($_GET['mode'] == 'upload'){

//     $error = $_FILES['myfile']['error'];
//     $name = $_FILES['myfile']['name'];
//     $ext = array_pop(explode('.', $name));
    
//     if( $error != UPLOAD_ERR_OK ) { // 오류 확인
//         switch( $error ) {
//             case UPLOAD_ERR_INI_SIZE:
//             case UPLOAD_ERR_FORM_SIZE:
//                 echo "파일이 너무 큽니다. ($error)";
//                 break;
//             case UPLOAD_ERR_NO_FILE:
//                 echo "파일이 첨부되지 않았습니다. ($error)";
//                 break;
//             default:
//                 echo "파일이 제대로 업로드되지 않았습니다. ($error)";
//         }
//         exit;
//     }
//     if( !in_array($ext, $allowed_ext) ) {// 확장자 확인
//         echo "허용되지 않는 확장자입니다.";
//         exit;
//     }
//     move_uploaded_file( $_FILES['myfile']['tmp_name'], $uploads_dir .'/'. $name);// 파일 이동

//     // 파일 정보 출력
//     echo "<h2>파일 정보</h2>
//     <ul>
//         <li>파일명: $name</li>
//         <li>확장자: $ext</li>
//         <li>파일형식: {$_FILES['myfile']['type']}</li>
//         <li>파일크기: {$_FILES['myfile']['size']} 바이트</li>
//     </ul>";

// }
// //save string to file
// else if($_GET['mode'] == 'string'){
//     $filename = $uploads_dir .'/'. $_POST['filename'];
//     $data = $_POST['data'];
//     file_put_contents($filename , $data);
// }<file_sep>/v2/origin_test.php
<?php 

	//origin :  output is js code
	//문제: origin으로 설정된 사이트가 외부 사이트와 데이터를 주고 받지 못할때. ($.get, $.post, $.ajax $.load를 사용할수 없음) //js주입
	//해결: get방식으로 모든 데이터를 서버에 전송하고 조건에 따라 실행후의 결과를 js방식으로 리턴해서 클라이언트에서 바로실행하게 함

	//주의: 전역변수에 let가 없어야 함.
	//실행1: $("#resultBox").html('<script src="https://waterplay.kr/addonshop_event/bulk/datas/bulkdata.php?m=3" ></script>');//스크랩드 수정
	//실행2: $.getScript("https://waterplay.kr/addonshop_event/bulk/datas/bulkdata.php?m=3");//jquery비동기 요청
	//originAjax('https://waterplay.kr/addonshop_event/bulk/datas/bulkdata.php?m=5', {mode:'searchId', id:'leecojo'})
	//originAjax('https://waterplay.kr/addonshop_event/bulk/savefile_origin.php',  {mode:'searchId', id:'leecoo'}, function(){ console.log(res); });

	//예제
	// echo <<<xxxxxxxxxx
	// //JSCODE
	// xxxxxxxxxx;

if(isset($_GET['m'])){
if($_GET['m'] == 1){//-------------테스트 출력
echo <<<xxxxxxxxxx
res = 111;
console.log(res, '-----test m=1----');
xxxxxxxxxx;
die();
}


else if($_GET['m'] == 2){//--------------테스트 출력 (php변수 포함)
echo <<<xxxxxxxxxx
console.log("bbb222", {$_GET['m']});
xxxxxxxxxx;
die();
}


else if($_GET['m'] == 3){//--------------\\r, \\n, \t, \\t, \', \\', \", \\", \\\,  모든 글자체 전송가능함
$filename = basename(__FILE__);
echo <<<xxxxxxxxxx
var param = serialize({
	m:4,
	foo: "hi th bar['blah'] eraaa+aa&bar=bb 한글,中文测试,abc ,/,  -\\\-,  -\\n-, =\\t= \\' \\" ---++++=== ",
	bar: {
		blah: 123,
		quux: [1, 2, {a:"1111"}]
	}
})
data = '{$filename}?'+ param;
$.getScript(data);//비동기실행
// console.log(data);

// var b =originUrl('originAjax.php', {m:2});
// console.log(b);
xxxxxxxxxx;
}


else if($_GET['m'] == 4){//--------------클라이언트에서 보낸 모든 데이터(object) 출력
$json = json_encode( $_GET, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT);
echo <<<xxxxxxxxxx
console.log(`$json`);
xxxxxxxxxx;
die();
}


else if($_GET['m'] == 5){//--------------페이지 리다이렉트 완료후 반환값 보기
unset($_GET['m']); 
$json = json_encode( $_GET, JSON_UNESCAPED_UNICODE);
echo <<<xxxxxxxxxx
//  var param = serialize($json);
// url = 'https://waterplay.kr/addonshop_event/bulk/savefile_origin.php?'+ param;
// // console.log(url)
// $.getScript(url , function(){
// 	console.log(res );//전역변수res
// });//비동기실행


originAjax('https://waterplay.kr/addonshop_event/bulk/savefile_origin.php', $json, function(){
	console.log(res ) //전역변수res
});
xxxxxxxxxx;
die();
}
}



//----------include
echo <<<xxxxxxxxxx
//-------------------------------------JS정의
//완전한 요청주소
function originAjax(url, data, callback){
	url = originUrl(url, data);
	$.getScript(url , callback);//비동기실행
}

//url주소 만들기 //url + param
function originUrl(url, data){
	if(data == null) return url;
	else {
		if(url.indexOf('?') > 0) return url + '&'+ serialize(data);
		else return url +'?'+ serialize(data);
	}
}

//objcet를 url param형태로 전환
function serialize(obj, prefix) {
	var str = [], p;
	for (p in obj) {
		if (obj.hasOwnProperty(p)) {
			var k = prefix ? prefix + "[" + p + "]" : p,
			v = obj[p];
			str.push((v !== null && typeof v === "object") ? serialize(v, k) : encodeURIComponent(k) + "=" + encodeURIComponent(v));
		}
	}
	// return decodeURIComponent(str.join("&"));
	return str.join("&");
}
//---------------------------------------//
xxxxxxxxxx;

<file_sep>/v2/savefile_origin.php
<?php 

$filename = './datas/bulkdata.json';

if($_GET['mode'] == 'searchId'){
    if($_GET['id'] == null){
		$data = "NO_ID";
    }else{
        if(file_exists($filename)){
            $data = file_get_contents($filename);
            $data = json_decode($data, 1);
            // print_r($data);
            $id = $_GET['id'];
            if(isset($data['data'][$id]) && $data['data'][$id] >= $_GET['maxPrice']) {
                $data['data'] = 'YES';
            }else {
                $data['data'] = 'NO';
            }
        }else $data = 'NO_DATA';
	}
	echo originResult($data);
	die();
}
else if($_GET['mode'] == 'getTextFile'){
    if(file_exists($filename)){
        echo originResult( file_get_contents($filename), '','json');
    }else echo originResult('NOFILE');
}
else if($_GET['mode'] == 'saveTextFile'){
    unset($_GET['mode']);
    // echo 'res = ';
    // echo json_encode($_GET['data']);
    if($_GET != null){
        // print_r($_GET);
        $data = json_encode($_GET, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT);
        file_put_contents($filename , $data);
        // echo $data;
        echo originResult( $_GET['lastTime'] );
        
    }
}


//--------ORIGIN : print js code
function originResult($data, $keyname='res', $type='text'){
    if($keyname == '') $keyname = 'res';
    if($type == 'text') return $keyname .' = '. json_encode($data, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT) ;//string, array일때 (json 이외의 데이터유형 일때)
    else return $keyname .' = '. $data ;//데이터가 json일때
}


