PHP 쉘기능 사용하기

글쓴이 : 망나니 (acidd15@nacom.net)

php에서도 단방향으로 리눅스의 쉘스크립트를 실행 할수가 있습니다.
그냥 보여지기만 하는거죠…기능은 100%사용은 못해도 대단히 위험도가
있는 기능입니다…

이걸 쓰려면 ‘ 랑 1번 숫자 바로왼쪽의 ` 이랑 잘봐야 합니당 ㅡㅡ;

첫번째것은 작은 따옴표구요 두번째 것은 1번 옆의 ?것입니다.

그럼 저걸로 간단하게 리눅스에서 디렉토리의 내용을 보는 ls -al이라는
명령을 실행시켜 보겟씁니다…

ex)

$output = `ls -al`;
print “

$output

“;

저걸 php파일을 만들어서 페이지를 띄우면 해당디렉터리의 목록이 쫘르륵
나옵니다…그리고 다른 명령을 집어넣어도 실행이 됩니다..물론 퍼미션이
되어야 겠지요..ㅡㅡ; vi를 집어넣어도 됩니다..단 당연히 편집은 안됩니다…

========================================================================================

글쓴이 : 거친마루

외부 프로그램을 실행하는 방법은 여러가지가 있지요..
많이 쓰이는거느 “ 를 사용하는 방법과 exec() 함수와 popen() 함구요..
vi를 실행시켜 편집은 불가능하다 하셨는데.. popen 을 이용하면 편집도 가능하지요

$f=popen(“vi newfile.txt”,”w”);
sleep(1);
fputs($f,”i”); // 입력모드 전환
sleep(1);
fputs($f,”Hello world
“);
sleep(1);
fputs($f,chr(27)); // esc키 누르기
sleep(1);
fputs($f,”:wq
“); // 저장하고 종료
pclose($f); // 핸들러 닫기
exit;
?>

php.net 에 있는 예제 주석문만 한글로 바꾼거구요.. 잘 된답니다..
그럼 재미난 플밍 하세요 : )

From PHP스쿨 팁&테크

요일을 한글로 표시하기

글쓴이 : 페리스( http://anomarad.com )

setlocale(“LC_TIME”,”korean”);
echo strftime(“%A”);
?>

간단하죠?
자주 사용되지는 않는 것 같습니다만 이런게 있다는 정도만 아시면 되겠죠;;

아래는 각함수에 대한 PHP 레퍼런스 링크입니다.
http://kr.php.net/manual/kr/function.setlocale.php
http://kr.php.net/manual/kr/function.strftime.php

한글 중성유무 체크하기

아래의 초성에 힘을 입어.. 중성 구하기입니다..
유니코드값에서 16을 뺀 후 28로 나눈 나머지가 0이면 받침이 없는 한글이고 그 외에는 모두 받침이
있는 거라는군요. ( 자바팁란의 글에서.. )

유니코드 변환 소스는 최요섭님이 만들걸 사용했구요.. 초성구하는 것보다 더 사용할때가 많을것이라
생각이 드는군요.. (유니코드 변환 소스 받기)

require “mischoi.php3”; // 유니코드 변환소스 로드

function CheckFinalConsonant($str)
{
if ((intval(str2uni(substr($str,-2)))-16)%28!=0) return true;
else return false;
}

$var = “눈이오면”;

if (CheckFinalConsonant($var)) {
echo “{$var}을 입력하셨습니다.”;
}
else {
echo “{$var}를 입력하셨습니다.”;
}
?>

한글 초성 구하기

주소록같은 프로그램을 만들때 ㄱ,ㄴ,ㄷ,ㄹ.. 이렇게 소팅을 해야할때가 있습니다. 이럴때 간단하게
하기 위해서 만들어본 한글 자음 구하기 클래스입니다. -_-;; ㄱ은 1, ㄴ은 2.. 이런식으로 해서 DB에
저장해두고.. 거기에 인덱스 걸고 쿼리하는게 좀더 빠르고 편하겠져.. ^^

P.S >> 간단해서.. 설명이 없습니다.. -_-;; 원하시는 분들이 계시다면.. 달아드리겠습니다..
영문의 처리에 대한 부분은 원래소스에서 뺐습니다.. 왜냐~ 여러분들도 한번 해보시라고..
( 그래야 조금이나마 공부가 되죠 ^^ )
예전의 어떤분의 소스를 본 기억을 참조했는데.. 기억못해죄송합니다.. ㅠ.ㅠ

소스 ==========================================================================================

class SelectHanCategory
{
// 가..나..다..의 16진수값들
var $hexcode = array(“b0a1” => “ㄱ”, “b3aa” => “ㄴ”,”b4d9″ => “ㄷ”, “b6f3” => “ㄹ”,”b8b6″ => “ㅁ”,
“b9d9” => “ㅂ”,”bbe7″ => “ㅅ”, “bec6” => “ㅇ”,”c0da” => “ㅈ”, “c2f7” => “ㅊ”,
“c4ab” => “ㅋ”, “c5b8” => “ㅌ”, “c6c4” => “ㅍ”,”c7cf” => “ㅎ”, “c8ff” => “”);
var $hexarray, $hexcount;

function SelectHanCategory() {
$this->hexcount = count($this->hexcode);
for($i=0; $i < $this->hexcount ; $i++) {
$this->hexarray[] = key($this->hexcode);
next($this->hexcode);
}
}

function IsHangul($ch)
{
$ch = ord($ch);
if($ch >= 0xa1 && $ch <= 0xfe) return true;
return false;
}

function Check($str)
{
if($this->IsHangul(substr($str, 0, 1))) {
$current_hexcode = bin2hex(substr($str, 0, 2));
for ($i=0,$j=1;$i<$this->hexcount;$i++,$j++) {
if ($current_hexcode>=$this->hexarray[$i] && $current_hexcode<$this->hexarray[$j]) {
break;
}
}
return array($j,$this->hexcode[$this->hexarray[$i]]);
}
else return array(-1);
}
}
?>

사용법 ========================================================================================

$category = new SelectHanCategory();
$return = $category->Check(“음하하하.. 안녕하세요.”);
echo “해당 카테고리 : $return[1] , DB에 저장한 값 : $return[0]”;

프레임 새로고침할때 페이지 유지하기

/*
* 출 처 : PHP스쿨 (www.phpschool.com)
* 올린이 : Fencer
*/

제목 그대로 PHP로 생성한 프레임에서 새로고침할 때 페이지 유지하기입니다.

필요하신 분들 많았으리라 봅니다. ;;

전부터 PHP를 이용해 만든 프레임 페이지에서 브라우저의 refresh 버튼을 누를 때

현재 보고 있는 페이지가 아니라 src=”로 정해줬던 페이지가 뜨는 걸 보고

브라우저가 html 페이지와 php 페이지 간에 뭔가 차이를 느낀다고 생각해 왔는데..

뭐 전에는 별 필요성을 못 느꼈기 때문에 + 귀찮아서 그냥 두었다가

‘XXXX XX를 위한 것인데 대충 만들 수 없다’는 자세로 6^_^;;

Q&A나 Tip&Tech를 좀 찾아봤더니..

아무도 답변이 없었더군요. ㅡoㅡ;

—————————————————————————–
$LastModified = gmdate(“D d M Y H:i:s”, filemtime($HTTP_SERVER_VARS[SCRIPT_FILENAME]));
header(“Last-Modified: $LastModified GMT”);
header(“ETag: “$LastModified””);
—————————————————————————–

보시면 뭔지 금방 아시겠죠? ^_^

복사해다가 프레임 생성하는 파일의 맨 위에 넣으시면 됩니다.

다른 브라우저는 확인 안 해 봤고.. 익쑤뿔로러만.. 확인했습니다.

‘자동으로’, ‘페이지를 열 때마다’ 모두 잘 되는군요.

일반 html 문서와 비교해 볼 때 (일반적으로) PHP가 뿌려주는 내용은

html content 부분은 똑같지만, header의 Last-Modified 의 시각이 매번 달라집니다.

(사실 아예 없습니다. -_-;;; 원래 동적인 resource니까 당연하지요.)

따라서 PHP에서 header에 Cache-Control을 최대로 잡아줘도

새로 받아온 수정 시각을 바탕으로 frame 전체를 새로고침하는 것으로 보입니다.

그래서 PHP 역시 header에 파일의 실제 수정 시각을 넣어주도록 하였습니다.

ETag는 HTTP/1.1 문서에 있길래 넣어봤습니다.

The entity tag MAY be used for comparison with other entities from the same resource.

그럼~ 좋은 하루 되세요~ ^_^/”