프로그램/php2009. 7. 14. 21:51

[php-함수]PHP 문자열 함수 관련


strlen() : 문자열 길이 리턴

<?

$char="php_sample";

echo strlen($char);

?>

 

addslashes() : 문자열에 포함된 [작은따옴표], [큰따옴표], [역슬래시]에 해당

                               하는 문자가 있을 경우 그 앞에 역슬래시 문자를 추가 후 리턴

<?

$char="php_'sample";

echo addslashes($char);

echo "<br>";

$char="php_\sample";

echo addslashes($char);

?>

 

stripslashes() : 문자열에 [역슬래시]가 있을때 역슬래시를 제거 후 리턴

<?

$char="php_\'sample";

echo stripslashes($char);

?>

 

nl2br() : '\n' 문자를 <br>로 바꾼 후 리턴

<?

$char="member \n blog";
echo nl2br($char);
echo "<br>";

?>

 

number_format() : 문자열의 값을 금액 단위의 문자로 리턴

<?
$char=1234;
echo number_format($char);  //1,234
echo "<br>";
$char="";
echo number_format($char);  //0
echo "<br>";
$char=1234;
echo number_format($char,2); //1,234.00
?>

 

substr() : 문자열의 일부를 옵션에 맞게 리턴

<?

$char1=substr("abcdef", 0);  //abcdef

$char2=substr("abcdef", 1);  //bcdef

$char3=substr("abcdef", -1); //f

$char4=substr("abcdef", 0, 3); //abc

$char5=substr("abcdef", 2, 3); //cde

echo "$char1 <br> $char2 <br> $char3 <br> $char4 <br> $char5";

?>

 

strrchr() : 해당 문자열의 선택된 문자부터 마지막 문자까지 리턴

<?

$char1=strrchr("php_sample", "s"); //sample

$char2=strrchr("php_sample", "p"); //ple

$char3=strrchr("image.gif", "."); //.gif

echo "$char1 <br> $char2 <br> $char3";

?>

 

rand() : 정수형 임의의 값 리턴

<?

$char1=rand();

$char2=rand(0,5);

$char3=rand(1,100);

echo "$char1 <br> $char2 <br> $char3";
?>

 

uniqid() : 마이크로타임에 기반하여 중복되지 않는 고유한 값 리턴

<?

$char1=uniqid(2);

$char2=uniqid(2);

$char3=uniqid(rand());

echo "$char1 <br> $char2 <br> $char3";

?>

 

md5() : 중복되지 않는 고유값 리턴

                 (16진수 32문자 -> 고정된 크기의 값을 구할 수 있다)

<?

$char1=md5(2);

$char2=md5(rand());

$char3=md5(uniqid(rand()));

echo "$char1 <br> $char2 <br> $char3 <br>";

?>

 

htmlspecialchars() : 저장되는 문자열이 html로 적용되지 않도록 한다

<?

$char1="<";

$char2=">";

$char3="&";

echo htmlspecialchars($char1);  //&lt

echo "<br>";

echo htmlspecialchars($char2);  //&gt

echo "<br>";

echo htmlspecialchars($char3);  //&amp

?>

 

chop() : 문자열의 마지막 부분 공백을 지운 후 리턴

<?

$char1="php_sample ";

$char2="테스트";

$char3=" php_sample";

echo chop($char1);

echo chop($char2);

echo chop($char3);

?>

Posted by 은둔고수
프로그램/php2009. 7. 14. 21:48

[php-tip]PHP POST, GET, SESSION, 배열 값, 기타 등등 모두 출력하기

<?

// 테스트용 데이터 생성

$_POST['1']="가";
$_POST['2']="나";
$_POST['3']="다";
$_POST['4']="마";

$_GET['1']="가";
$_GET['2']="나";
$_GET['3']="다";
$_GET['4']="마";

 

$_SESSION['1']="가";
$_SESSION['2']="나";
$_SESSION['3']="다";
$_SESSION['4']="마";

 

$ary = array("1","2","3");
?>

 

<?

# POST 값을 모두 출력하기

// foreach()을 이용하는 방법
foreach($_POST as $key => $value)
{
 echo "$key ==> $value <br>";
}

echo "<br><br>";

// var_dump()을 이용하는 방법

var_dump($_POST);

 

echo "<br><br>";

// print_r()을 이용하는 방법

print_r($_POST);

?>

 

<?

# GET 값을 모두 출력하기

// foreach()을 이용하는 방법
foreach($_GET as $key => $value)
{
 echo "$key ==> $value <br>";
}
 

echo "<br><br>";

// var_dump()을 이용하는 방법

var_dump($_GET);

 

echo "<br><br>";

// print_r()을 이용하는 방법

print_r($_GET);

?>

 

<?
# SESSION 값을 모두 출력하기

// foreach()을 이용하는 방법
foreach($_SESSION as $key => $value)
{
 echo "$key ==> $value <br>";
}
?>

 

<?

# 배열 값을 모두 출력하기

// foreach()을 이용하는 방법
foreach($ary as $key => $value)

{
 echo "$key ==> $value <br>";
}
 

echo "<br><br>";

// var_dump()을 이용하는 방법

var_dump($ary);

 

echo "<br><br>";

// print_r()을 이용하는 방법

print_r($ary);

?>

Posted by 은둔고수
프로그램/php2009. 7. 14. 21:46

[php-tip]PHP 세션 변수가 사라진다

 

 

<?

header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
?>

 

php 소스 제일 상단에 위 소스를 삽입한다.

 

 

 

예제출처 (http://www.thescripts.com/forum/thread512527.html)


A라는 도메인에서  iframe을 이용해서 B도메인에 있는 페이지를 불러왔다.

불려지는 B도메인의 웹페이지는 session변수를 생성하는데

iframe내에서 다른 B도메인내의 웹페이지로 이동을 하면 세션변수가 사라지는 현상이 발생한다.

Session.sessionID 를 이용해서 확인해 보면 계속해서 새로운 sessionID가 생성 됨을 확인할 수 있었다.

한마디로 세션이 저장이 되지않고 계속해서 세션쿠키가 새로 발급되는 현상으로 iframe뿐만 아니라 frame에서도 마찬가지였다.

또한, 이 문제는 FF에서는 정상적으로 세션변수가 유지되는 반면에 IE6에서는 세션변수가 사라졌다.


해결방법 (http://classicasp.aspfaq.com/general/why-won-t-my-session-variables-stick.html)

위의 링크를 따라가면 더더욱 많은 세션변수가 사라지는 현상과 그 해결방법에 대해나와있으니

참고하길 바라며 내가 겪은 세션변수 사라지는 현상의 해결방법은 다음과 같았다.


Internet Explorer 6에서 FRAMESET을 사용하면 세션 변수가 손실된다

MSDN기술문서 KB #323752

(한글로 번역되어있으니 기술 문서를 따라가면 원인과 해결방법에 대해 쉽게 알 수 있다.)

 

쿠키발급에 관한 정책문제이며

response.addHeader "P3P","CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"""

또는

header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');

위의 헤더를 추가해주면 간단하게 해결이 된다.

 

이렇게 해도 안된다면 session_start()를 확인해본다. <- 자세히 보기

Posted by 은둔고수
프로그램/php2009. 7. 13. 23:40

[php-tip]PHP 모든 태그를 제거

 

 function stripTags($str)

{
  $pattern = array('/<!--(.*?)-->/s', '/<script[^>]*?>(.*?)<\/script>/is', '/<style[^>]*?>(.*?)<\/style>/is', '/<(.*?)>/s');
  return preg_replace($pattern, '', $str);
 }

Posted by 은둔고수
프로그램/php2009. 7. 13. 23:38

[php-tip]PHP 풍선도움말(titie) 홑,쌍따옴표 처리


// a 태그 title 부분은 쌍따옴표(")로 감싸야 한다.
<?
  $title_ori = $row['title'];
  $title_ori = str_replace('\"',"&quot;",$title_ori);
  $title_ori = str_replace("\'","'",$title_ori);

  $title=stripslashes($row['title']);
?>
<tr>
 <td>
  <a href="링크주소및파라미터" title="<?php echo $title_ori;?>"><?php echo $title;?></a>
 </td>
</tr>

Posted by 은둔고수
프로그램/php2009. 7. 13. 23:34

[php-tip]PHP 한글 글자 수 1로 인식

 

 

<?

$data_ori = "가나AB";
$cut_size = 3;

$data_len = mb_strlen ($data_ori);
echo "data len=".$data_len."<br>";

$data_len = mb_strlen ($data_ori,"utf-8");
echo "data len=".$data_len."<br>";


$data = mb_substr ($data_ori, 0, $cut_size,"utf-8");
echo "data=".$data."<br>";
?>

Posted by 은둔고수
프로그램/php2009. 7. 13. 23:27

[php-tip]PHP 패스워드의 반절 이상은 *로 표시

 

회원의 비밀번호를 메일로 전송하게 되는 경우 비밀번호를 그대로 보내주기에는 보안에 너무 취약하다. 회원이 기억할 만할 정도로 일부만 보여주고 나머지는 숨기는 방식이다.

 

그 외 보안에 더 신경을 쓴다면 회원의 비밀번호를 임으로 생성해서 메일로 보낸 후

특정기간내에 임의로 생성한 비밀번호로 로그인해서 비밀번호륻 다시 변경하게 하는 방법이 있다.

 

보다 더 보안에 신경을 쓰고 싶다면

휴대폰 인증을 이용하는 방법과 공인인증서를 이용하는 방법 등이 있다.

 

<?
// 패스워드의 반절 이상은 *로 표시
$password = "1234";
$password_len = strlen($password);
$password_half_len = round(strlen($password)/2);
echo "글자 수=".strlen($password);
echo "<br>";
echo "반절에 해당하는 글자=".round(strlen($password)/2);
echo "<br>";
echo "결과=".str_replace(substr($password,$password_half_len,$password_len), "****", $password);
?>

Posted by 은둔고수