오랜만에 PHP 작업을 하는데 함수도 기억안나고 해서 어려움이 많다.

 

그래도 PHP가 에러 메세지가 너무 친절해서 큰 어려움은 없었는데...

 

CAFE24에서 작업하면 에러메세지가 안난다....

 

이 문제가 너무 힘들어서 찾아서 해결한 내용...

 

호스팅 root 폴더에 존재하는 .htaccess

 

하단 내용을 추가하면 해결 됨.

 

 

php_value error_reporting 22527
php_flag display_errors on

 

이 경우 NOTICE 문장도 같이 표출되는데 개발할 때는 NOTICE는 무시하면 됨.


PHP에서 iconv 사용가능 하여야 합니다.

 

function tostring($text) {
//    return iconv('UTF-16LE', 'UTF-8', chr(hexdec(substr($text[1], 2, 2))).chr(hexdec(substr($text[1], 0, 2))));
    
return iconv('UTF-16LE''UHC'chr(hexdec(substr($text[1], 22))).chr(hexdec(substr($text[1], 02
))));
}
function 
urlutfchr($text
){
    return 
rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/''tostring'$text
));
}

 

처리할 문서가 charset euc-kr 일경우 함수 tostring 에서 iconv 2번째인자를 "UHC" 로

 utf8 일경우 "UTF-8"로 지정한다.

 

Ex

$escapeString = "%uC548%uB155%uD558%uC138%uC694";  // 자스에서 "안녕하세요"를 escape 한 문자열

$unEscapeString = urlutfchr($escapeString);

echo $unEscapeString;

 

// 출력결과

// 안녕하세요


  $row[Name]=iconv("euckr","utf-8",$row[Name]);
   -> 문자열의 charset을  euckr 에서 utf-8 로 컨버팅

 

db에 저장된 한글이 정상이고 해당 필드가 utf-8로 되어 있는 것이라면 
  $row['Name'] = iconv("UTF-8","CP949",$row['Name']);

   -> 문자열의 charset을  utf-8 에서 CP949 로 컨버팅 

 

iconv 함수에 대한 정보 : http://kr.php.net/manual/en/function.iconv.php


<?
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP949'); // 이부분만 바꿨습니다.
$data->read('kortest.xls');

error_reporting(E_ALL ^ E_NOTICE);
echo "<table border=1>";
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
echo "<tr>";
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "<td> ".$data->sheets[0]['cells'][$i][$j]."</td>";
}
echo "</tr>\n";
}
echo "</table>";
?>

str_word_count

(PHP 4 >= 4.3.0, PHP 5)

str_word_count --  문자열에서 사용한 단어에 대한 정보를 반환합니다.

설명

mixed str_word_count ( string string [, int format])

string 안의 단어 수를 셉니다. 선택적인 format을 지정하지 않으면, 반환값은 단어 수를 나타내는 정수입니다. format를 지정하면, 반환값은 배열로써, 내용은 format에 따라 결정됩니다. 아래 목록은 format으로 사용할 수 있는 값과 그에 따른 출력입니다.

  • 1 - string에서 발견한 모든 단어를 포함하는 배열을 반환합니다.

  • 2 - string 안에서 단어 위치를 키로, 그 단어를 값으로 가지는 연관 배열을 반환합니다.

이 함수의 작동에서, '단어'는 알파벳 문자를 포함하는 로케일 의존 문자열로, "'"'와 "-" 문자로 시작하지 않는 문자들을 포함합니다.

예 1. str_word_count() 사용 예제

<?php

$str
= "Hello friend, you're
        looking          good today!"
;

$a   = str_word_count($str, 1);
$b   = str_word_count($str, 2);
$c   = str_word_count($str);

print_r($a);
print_r($b);
echo
$c;
?>

출력은:

Array
(
    [0] => Hello
    [1] => friend
    [2] => you're
    [3] => looking
    [4] => good
    [5] => today
)

Array
(
    [0] => Hello
    [6] => friend
    [14] => you're
    [29] => looking
    [46] => good
    [51] => today
)

6


다른분이 답변해 주신것처럼..  페이지를 미리 로딩하는 방법은 없습니다.
하지만 꽁수를 조금 부릴수는 있겠죠..
로딩이 느린 페이지를 a.html 이라고 한다면 a.html 페이지에 다음과 같은 코드를 사용합니다.

 

<div id="loading">
loading....
</div>
<iframe id="" name="" src="b.thml" frameborder="0" width="1" height="1" style="display:none"></iframe>

 

그리고 b.html 에서는 다음과 같은 코드를 작성합니다.

 

<div id="loading">
내용들...
</div>

<script language="javascript">
function Set()
{
 try{
  parent.document.all["loading"].innerHTML = "";
  parent.document.all["loading"].innerHTML = document.all"loading"].innerHTML;
 }catch(e){ }
}
window.onload = Set;
</script>


눈치 채셨겠지만.. 
a.html 에서는 loading 중이라는 문구를 보여주고..
b.html 에서 내용을 로딩한후..  a.html에 뿌려주는 방식입니다..

상황에 맞게 잘 응용하시면..  많은 도움이 되시리라 생각합니다..


urlencode() / urldecode():
하나의 특수문자, 한글, multi-byte 문자를 %XX 형식으로 변환합니다. 길이가 좀 길어진다는게 단점입니다. 또한 [0-9a-zA-Z] 등은 encode 하지 않아 그대로 보인다는 단점(?) 도 있습니다.
보안성이 없거나 크게 요구되지 않는 경우나 일반적으로 많이 사용하는 방법이며, URL GET 방식으로 어떤 값을 넘길때도 많이 사용됩니다.


base64_encode() / base64_decode()
변환된 문자는 [0-9a-zA-Z+/=] 문자들로 구성되어지며 역시 약간 길이가 길어집니다.
쉽 게 눈으로 판독(decode)할 수 없다는 장점(?)도 있습니다. 저수준의 보안성이 요구될때 사용하는 경우가 많습니다. URL GET 방식으로 어떤 값을 넘길때도 사용되지만 약간의 문제점이 있습니다.(+, / 문자 처리 문제, 아래 참고)


serialize() / unserialize()
이 함수는 어떤 특정 변수(variable)의 형태를 그대로 유지하면서 하나의 문자열로 변환합니다. 실제 본문의 문자열은 다른 형태로 변환되지 않으며, 다만 변수 형태를 유지하기 위해서 특정 형태의
문자열들이 붙습니다.
이 경우는 보통, 1차원 또는 다차원 배열을 하나의 문자열로 만들어 마치 하나의 문자열 변수처럼 취급하고자 할 경우에 많이 사용합니다. (쿠키나 세션 또는 파일저장 등에 많이 사용됨)
역시 URL GET 방식으로도 사용될 수 있지만 약간의 문제점이 있습니다.
(+, /, &, ?, # 등등 특수문자나 multi-byte 문자 처리 문제)


user_encode() / user_decode()
GET 방식등으로 어떤 값을 넘길 경우, 비교적 보안성이 요구될때 이런 사용자 정의 함수에 의해서 단방향이 아닌 쌍방향 함수를 이용하는 방법을 말합니다.
이때는 비밀키가 노출되면 안되겠죠...


이렇게 약간씩 그 쓰임새가 다르기 때문에 상황에 따라 적절한 방법을 선택하여 사용하면 됩니다.

*주의)
base64_encode() 로 변환된 문자열을 곧바로 GET 방식으로 넘기면 약간 문제점이 있습니다.

즉, '+' 문자와 '/' 문자인데, 값을 받을 때 '+'를 '+' 자체가 아닌 공백(%20)으로 인식하는 경우가 있습니다. (PHP 버전 문제아니면, 특이한 USER_AGENT 해석의 차이인듯)
(공백 ' '(%20)을 urlencode 하면 '+' 가 되죠)

따라서 '+' 를 다른 문자(?,/,#,&등은 절대 금물)나 문자열로 교체해줘야 합니다.
또한 '/' 문자도 디렉토리 구분이나 PATH_INFO 의 구분으로 인식할 수 있으므로 (PATH_INFO 로 구분하여 값을 받을 경우)역시 적절한 문자나 문자열로 교체해줘야 합니다.


*정리하면)
문자열(또는 특정 변수의 문자열 형태)을 URL GET 방식으로 넘길때 조심해야할 문자가 있습니다.
즉,
(공백), +, ?, #, &, / 등입니다.

(공백) : 이하를 해석하지 못하는 USER_AGENT 가 있을 수 있음
+ : 공백으로 해석 또는 인식되는 경우가 있음
? : 이하 쿼리로 인식됨
# : 이하 문자를 fragment 로 인식될 수 있음
& : 쿼리의 구분으로 인식될 수 있음
/ : PATH_INFO 로 구분한다면 하나의 path 로 인식되지 않음

이런 점만 주의한다면 어느 함수를 사용하든지 상관없겠죠(보안성 문제 제외).

이런 문자 처리를 자동(?)으로 처리해주는게 urlencode() 함수이며, 문자열 보안성은 결여되어 있습니다.

따라서, 이런 관점에서, 단독적인 base64_encode() 나 serialize() 함수는 URL GET 방식에 적합하지 않습니다.


본 자료는 오토셋개발자그룹(www.autoset.org)에서 PHP 그룹(www.php.net)의 자료를 복사한 것으로 2006-12-01 09:48를 기준으로 작성되었습니다.

rawurlencode

(PHP 3, PHP 4 , PHP 5)

rawurlencode -- RFC 1738에 따라 URL을 인코드합니다.

설명

string rawurlencode ( string str)

-_.을 제외한 모든 영숫자가 아닌 문자를 퍼센트(%) 사인에 이어지는 두 16진수로 교체한 문자열을 반환합니다. 이는 표시 문자가 특별한 URL 구분자로 해석되는걸 방지하고, 문자 변환이 이루어지는 전송 매체(몇몇 email 시스템 등)에서 URL을 보호하기 위한 RFC 1738에 설명된 인코딩입니다. 예를 들어, FTP URL에 패스워드를 포함하고자 한다면:

예 1. rawurlencode() 예제 1

<?php
echo '<a HREF="javascript:RefAutoSet('PHP_FUNC','ftp://user:');", rawurlencode('foo @+%/'),
    
'@ftp.example.com/x.txt">';
?>

혹은, URL의 PATH_INFO 안에 경로 정보를 전달하고자 한다면:

예 2. rawurlencode() 예제 2

<?php
echo '<a HREF="javascript:RefAutoSet('PHP_FUNC','http://example.com/department_list_script/');",
  
rawurlencode('sales and marketing/Miami'), '">';
?>
295e

참고: rawurldecode(), urldecode(), urlencode(), RFC 1738.


본 자료는 오토셋개발자그룹(www.autoset.org)에서 PHP 그룹(www.php.net)의 자료를 복사한 것으로 2006-12-01 10:16를 기준으로 작성되었습니다.

urldecode

(PHP 3, PHP 4 , PHP 5)

urldecode -- URL 인코드 문자열을 디코드합니다.

설명

string urldecode ( string str)

주어진 문자열의 %## 인코딩을 디코드합니다. 디코드한 문자열을 반환합니다.

예 1. urldecode() 예제

<?php
$a
= explode('&', $QUERY_STRING);
$i = 0;
while (
$i < count($a)) {
  
$b = split('=', $a[$i]);
   echo
'Value for parameter ', htmlspecialchars(urldecode($b[0])),
        
' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";
  
$i++;
}
?>
3299

참고: urlencode(), rawurlencode(), rawurldecode().


foreach($_POST as $key => $value)
{
 if($value)
 {
  $value = strip_tags($value);
  ${$key} = RemoveXSS(trim($value));
 }
}


foreach($_GET as $key => $value)
{
 if($value)
 {
  $value = strip_tags($value);
  ${$key} = RemoveXSS(trim($value));
 }
}


구문 사용시 따로 변수를 받아내는 작업 필요 없이 바로 사용가능

+ Recent posts