|
Language/PHP 2010. 7. 14. 11:05
html 태그를 웹에 적용하지 않고 그대로 출력
예1)
<?
$use_htmlspecialchars = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $use_htmlspecialchars;
echo "<br>";
$no_htmlspecialchars = "<a href='test'>Test</a>";
echo $no_htmlspecialchars;
?>
결과
<a href='test'>Test</a>
Test
Language/PHP 2010. 7. 14. 10:54
문자열로 작성된 소스를 직접 실행
예1)
< ?
eval("\$str = \"가나다\";");
echo $str;
? >
=>결과 : "가나다"
예2)
<?
$content = "
\$a = array(\"ss\",\"xx\");
for(\$i=0; \$i < count(\$a);\$i++)
{
echo \$a[\$i].\"<br>\";
}
";
echo "eval() 실행전<br><br>";
echo htmlspecialchars($content)."<br><br>";
echo "eval() 실행후<br><br>";
eval($content);
?>
결과
eval() 실행전
$a = array("ss","xx"); for($i=0; $i < count($a);$i++) { echo $a[$i]."<br>"; }
eval() 실행후
ss
xx
Language/PHP 2010. 7. 13. 18:09
PHP 에서는 프로그래머가 사용하기 쉽도록 여러가지 필요한 변수들을 미리 정의해 놓고 있다.
사용 방법 예
<?= $REMOTE_ADDR ?>
<?= getenv("REMOTE_ADDR") ?>
<?= $_SERVER["REMOTE_ADDR"] ?>
REMOTE_ADDR
사용자가 현재 페이지를 보고 있는 시스템의 IP 주소
REMOTE_PORT
사용자의 시스템이 웹서버와 통신하고 있는 port 번호
QUERY_STRING
해당 페이지를 접근할 때 사용된 query string.
REQUEST_URI
이 페이지를 접근하기 위해 사용한 URI. 예: '/index.html'.
REQUEST_METHOD
페이지가 요구될 때 사용된 method: 예: 'GET', 'HEAD', 'POST', 'PUT'.
HTTP_REFERER
현재 페이지를 찾아온 페이지. 현재페이지로 넘어오는 링크가 있고, 이 링크를 클릭하여 현재 페이지로 넘어온 경우 이전 페이지의 주소가 설정된다. 이 값은 사용자의 브라우저에 따라 설정될 수도 있고 아닐 수도 있다.
DOCUMENT_ROOT
현재 스크립트가 샐행중인 document root 디렉토리. 서버의 설정 파일에 정의되어 있다.
SCRIPT_NAME
현재 스크립트의 경로. 이것은 해당 페이지가 자기 자신을 가리킬 때 사용하면 유용하다. ( /test.php 와 같이 표시된다. )
PHP_SELF
document root를 기준으로 한 현재 실행중인 스크립트의 파일 이름. ( /test.php 와 같이 표시된다. )
SCRIPT_FILENAME
현재 실행되고 있는 스크립트의 절대 경로명 ( 리눅스의 경우 /home/test/public_html/test.php 와 같이 표시된다. )
출처 - http://blog.syszone.co.kr/901?category=28
Language/PHP 2010. 7. 9. 17:24
array_key_exists
(PHP 4 >= 4.1.0, PHP 5)
array_key_exists -- 주어진 키와 인덱스가 배열에 존재하는지
확인한다
설명bool array_key_exists ( mixed key, array
search)
array_key_exists() 는 주어진 key가 배열 안에서 설정되어 있으면 TRUE를 반환한다. key는 배열
인덱스로 사용할수 있는 어떤값이든 될수 있다.
예 1. array_key_exists() 예제코드
<?php
$search_array
= array("first"
=> 1, "second" => 4);
if (array_key_exists("first",
$search_array))
{
echo "The 'first' element is in the
array";
}
?>
|
|
참고: PHP 버전 4.0.6에서는 이 함수의 이름은 key_exists()이다
isset
(PHP 3, PHP 4, PHP 5 )
isset -- 존재하는 변수인지 확인합니다.
설명bool isset ( mixed var [, mixed var [,
...]])
var가 존재하면 TRUE를, 존재하지 않는 다면 FALSE를 반환합니다.
변수를 unset()으로 지우면, 더
이상 존재하지 않습니다. NULL로 지정한 변수를 확인하면 isset()은 FALSE를 반환합니다. NULL 바이트("\0")는 PHP NULL 상수와 다릅니다.
경고: isset()은 변수만을 받아들이며, 다른 것에는 문법 에러를 발생합니다. 상수가 정의되었는지 확인하려면 defined() 함수를 사용하십시오.
배열 요소와도 작동합니다:
참고: 이것은 함수가 아닌 언어 구조이기 때문에, 변수 함수 방식으로 호출할 수
없습니다.
in_array
(PHP 4 , PHP 5)
in_array -- 배열에서 값이 존재하는지 점검한다
설명bool in_array ( mixed needle, array haystack
[, bool strict])
haystack에서 needle을 검색해서 배열안에서 발견되면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환한다.
세번째 매개변수 strict가 TRUE로 설정되면, in_array() 함수는 haystack 안의 needle의
타입도 점검할것이다.
참고: needle이 문자열이면, 대소문자를 구별하여 비교가
수행된다.
참고: PHP 4.2.0 이전 버전에서는 needle은 배열에서
허용되지 않았다.
예 1. in_array() 예제코드
<?php
$os = array ("Mac", "NT",
"Irix", "Linux");
if (in_array ("Irix", $os)) {
print "Got Irix";
}
if (in_array ("mac", $os)) {
print "Got mac";
}
?> |
in_array()는 대소문자를 구별하기 때문에 두번째 조건은 실패한다. 그래서 위 프로그램은
다음과 같이 출력된다:
|
예 2. in_array()의 엄격한 예제코드
<?php
$a = array('1.10', 12.4,
1.13);
if
(in_array('12.4', $a, TRUE)) {
echo "'12.4' found with strict check\n";
}
if (in_array(1.13,
$a, TRUE)) {
echo "1.13 found with strict check\n";
}
?>
|
위 코드는 다음과 같이 출력된다:
1.13 found with strict check |
|
예 3. needle 이 배열인 in_array()
<?php
$a = array(array('p', 'h'),
array('p', 'r'), 'o');
if (in_array(array ('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if
(in_array(array
('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if
(in_array('o', $a)) {
echo "'o' was found\n";
}
/* Outputs:
'ph' was
found
'o' was found
*/
?>
|
array_search
(PHP 4 >= 4.0.5, PHP 5)
array_search -- 배열에서 주어진 값을 검색하고 성공하면 해당 키를
반환한다
설명mixed array_search ( mixed needle, array
haystack [, bool strict])
haystack에서 needle을 검색하고 배열에서 그 값이 발견되면 그 키를 반환하고, 그렇지 않으면 FALSE를 반환한다.
참고: PHP 4.2.0 이전에서는, array_search()는 실패시 FALSE 대신 NULL을 반환한다.
선택적인 세번째 매개변수인 strict가 TRUE로 설정되면 array_search()는 haystack에서 needle의
타입도 함께 검사할것이다.
주의 |
이 함수는 Boolean FALSE를 반환하지만, 0이나 ""와 같은 FALSE로 취급하는
Boolean이 아닌 값을 반환할 수도 있습니다. Booleans
섹션에서 자세한 정보를 얻을 수 있습니다. 이 함수의 반환값을 테스트하기 위해서 === 연산자를 이용하십시오.
|
|
Language/PHP 2010. 7. 5. 20:21
쿠키등을 사용할 경우 어떤 구문도 위에 있으면 안된다.
Language/PHP 2010. 7. 5. 19:26
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
표 1. setcookie() 인자 설명
인자 |
설명 |
예제 |
name |
쿠키의 이름. |
'cookiename'은 $_COOKIE['cookiename']으로 호출합니다. |
value |
쿠키의 값. 이 값은 클라이언트 컴퓨터에 저장됩니다; 민감한 정보를 저장하지 마십시오. |
name이 'cookiename'이라면, 이 값은 $_COOKIE['cookiename']을 통해서 얻어집니다. |
expire |
쿠키 만료 시간. 에포치로부터의 초수를 나타내는 유닉스 타임스탬프입니다. 보통, time() 함수에 원하는 만료 시간을 더해서 설정합니다. 혹은 mktime()을 사용할 수 있습니다. |
time()+60*60*24*30은 쿠키가 30일 후에 만료하도록 합니다. 지정하지 않으면, 쿠키는 세션 종료시(브라우저를 닫을 때)에 만료됩니다. |
path |
이 쿠키를 사용할 수 있는 서버 경로. |
'/'로 지정하면, 이 쿠키는 domain 전체에서 사용할 수 있습니다. '/foo/'로 설정하면, domain의 /foo/ 디렉토리 안과 /foo/bar/ 등의 서브 디렉토리 안에서 사용할 수 있습니다. 기본값은 쿠키를 설정하는 현재 디렉토리입니다. |
domain |
이 쿠키를 사용할 수 있는 도메인. |
example.com의 모든 서브도메인에서 이 쿠키를 사용할 수 있게 하려면, '.example.com'로 설정해야 합니다. .은 필수는 아니지만, 많은 브라우저와 호환되게 합니다. www.example.com로 지정하면, 이 쿠키는 www 서브도메인에서만 사용할 수 있습니다. 상세는 규격의 tail matching을 참고하십시오. |
secure |
쿠키가 보안 HTTPS 접속에만 허용할 지를 지정합니다. 1로 설정하면, 쿠키는 보안 연결이 존재할 때만 설정됩니다. 기본값은 0입니다. |
0이나 1 |
예 1. setcookie() 전송 예제
<?php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value,time()+3600); setcookie("TestCookie", $value,time()+3600, "/~rasmus/", ".example.com", 1);
?>
|
예 2. setcookie() 삭제 예제
<?php
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
?>
|
PHP에서 인증은 쿠키와 세션이라는 두가지 방법이 사용되며, 이는 어떠한 컴퓨터에게 무언가를 할 수 있는 권한을 부여하는 것이기 때문에, 프로그래머에게 보안상으로 많은 고민거리를 안겨주는 부분이다.
cookie : 클라이언트에 데이터를 저장하였다가 서버의 요청에 의해 다시 서버로 보내주는 정보
session : 컴퓨터 간의 연결이 이루어진 시점부터 연결을 끊을 때까지의 기간
1. 쿠키굽기
PHP에서 쿠키라는 것은 우리가 흔히 말하는 과자를 말하는 것이 아니다. 하지만 일반적으로 사용자의 컴퓨터에 쿠키를 저장할 때 "굽는다"라는 표현을 사용한다.
setcookie(이름, 값, 폐기시간, 경로, 호스트, 보안사용);
이름 : 쿠키의 이름
값 : 쿠키의 값
폐기 시간 : 쿠키의 폐기 시간(주로 유닉스 타임스탬프를 사용하며 0일 때는 웹 브라우저가 닫히면서 쿠키가 사라진다.)
경로 : 쿠키가 적용될 경로
호스트 : 쿠키가 적용될 호스트 이름
보안사용 : HTTPS 프로토콜에 의한 보안 접속시에만 쿠키 굽기
//쿠키는 header함수와 마찬가지로 함수 호출 전에 어떠한 출력문이라도 있어서는 안된다.
<?
//쿠키 카운터 만들기
if(isset($HTTP_COOKIE_VARS[counter_cookie])){
setcookie("counter_cookie", $_COOKIE[counter_cookie]+1, 30*24*60*60+time(),"/");
}
else{
setcookie("counter_cookie",1,30*24*60*60+time(),"/");
}
$counter = $_COOKIE[counter_cookie]+1;
echo "$counter 번째로 방문 하셨습니다.";
?>
======================================
login.php
======================================
<!---로그인--->
<?
if(!$_COOKIE[member]){
echo "
<form method='post' action='check.php'>
비밀번호 <input type='password' name='pass' size=10><br>
<input type='submit' value='로그인'>
</form>";
}
else{
echo "로그인 되어 있습니다.<br>
<a href='logout.php'>로그아웃</a>";
}
?>
======================================
check.php
======================================
<?
$member_pass = "1234";
if($_POST[pass] == $member_pass){
setcookie("member","$_POST[pass]",0,"/");
header("location:login.php");
}
else{
echo "비밀번호가 틀렸습니다.";
}
?>
======================================
logout.php
======================================
<?
setcookie("member","",0,"/");
header("location:login.php");
?>
Language/PHP 2010. 7. 2. 15:04
1. implode()
<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone
?>
2. explode()
<?php
// 예제 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode (" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
// 예제 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>
Language/PHP 2010. 7. 2. 15:00
첫번째 해결 php.ini 파일에 max_execution_time을 수정 후 restart
※ php.ini의 위치는 phpinfo() 참고
두번째 해결 set_time_limit(0)
세번째 해결 ini_set('max_execution_time',60);
Language/PHP 2010. 6. 23. 14:14
스크립트안에서 그냥 php echo로 변수를 사용하면 가능하다.
<?
$current_member = $member['mb_id'];
?>
<script language="javascript">
function readValue() {
var url = 'xmlhttp/xml_local_list.php?current_member=<? echo($current_member);?>';
}
</script>
추가 - <?=$current_member?> 가능
간단하게는 다음과 같이 echo로 script를 사용한다.
<?php
echo '<script>alert("123");</script>';
?> http://youngik.tistory.com/
출처 - http://youngik.tistory.com/
Language/PHP 2010. 6. 23. 14:10
<?
echo $browser_type = getenv("HTTP_USER_AGENT");
if(preg_match("/compatible; MSIE/i", "$browser_type"))
{
echo "익스플로러";
}
else if(preg_match("/Mozilla/i", "$browser_type"))
{
echo "넷스케이프";
}
else
{
echo "$browser_type";
}
?>
|