프로그램/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 은둔고수