PHP2011. 5. 17. 01:32

http://kimgun.pe.kr/127



요즘 PHP 공부를 다시 조금씩 하고 있다.
그런데 기존 세션 처리 부분에서 세션이 처리가 안되서 이리 저리 찾아 보았다.
(참고 : 물론 이런 문제는 서버이전이라든지 LAPM을 설정을 다시했을때 발생한다고 생각 하시면 될거 같습니다.)

문제는 PHP 버전 문제였습니다.
PHP4에서는 세션 처리를 아래 (예1)처럼 처리 해서 사용을 했던것을 기억을 합니다.
PHP5에서는 (예1)처럼 사용을 하면 제대로 처리를 못 하는군요.
그래서 찾아 보았더니 기존 처리 형태를 (예2) 처럼 고쳐 주어야만 처리가 되는 문제를 안고 있었습니다.
아무튼 저는 아래처럼 해서 해결을 했습니다.

세션을 처리하는 방법을 정리해 보았습니다.

* PHP4 에서의 세션처리 (예1)

// 세션 선언
session_start();
$user_id = $_POST['user_id'];
session_register("user_id");

// 세션 값 받아서 쓰기
session_start();
$user_id = $HTTP_SESSION_VARS['user_id'];

// 세션 삭제
session_start();
session_unset();
session_destroy();



* PHP5 에서의 세션 처리 (예2)
// 세션 선언
session_start();
$user_id = $_POST['user_id'];
$_SESSION['user_id'] = "$user_id";

// 세션 값 받아서 쓰기
session_start();
$user_id = $_SESSION['user_id'];

// 세션 삭제
session_start();
session_unset();
session_destroy();

출처 : blog.naver.com/dongheejo

 

<?
 // step_1. db에 저장된 시간을 가져온다.
 $l_limit_time = "2010-11-31 23:59:59";

 


 // step_2-1. 유닉스 스탬프를 구하기 위해서 아래와 같은 절차를 거친다.
 $l_limit_time_arr = explode(" " ,$l_limit_time);
 $l_limit_time_arr_date = explode("-" ,$l_limit_time_arr[0]);
 $l_limit_time_arr_time = explode(":" ,$l_limit_time_arr[1]);

 // step_2-2. 유닉스 스탬프를 구한다.
 $l_limit_time_unix = mktime(
  $l_limit_time_arr_time[0],
  $l_limit_time_arr_time[1],
  $l_limit_time_arr_time[2],
  $l_limit_time_arr_date[1],
  $l_limit_time_arr_date[2],
  $l_limit_time_arr_date[0]
 ); // 시, 분, 초, 월, 일, 년

 


 // step_3-1. 오늘날짜 유닉스 스탬프를 구한다.
 $l_today_time = date("Y-m-d H:i:s");

 // step_3-2. 오늘날짜 유닉스 스탬프를 구한다.
 $l_today_time_arr = explode(" " ,$l_today_time);
 $l_today_time_arr_date = explode("-" ,$l_today_time_arr[0]);
 $l_today_time_arr_time = explode(":" ,$l_today_time_arr[1]);

 // step_3-3. 유닉스 스탬프를 구한다.
 $l_today_time_unix = mktime(
  $l_today_time_arr_time[0],
  $l_today_time_arr_time[1],
  $l_today_time_arr_time[2],
  $l_today_time_arr_date[1],
  $l_today_time_arr_date[2],
  $l_today_time_arr_date[0]
 ); // 시, 분, 초, 월, 일, 년

 // step_4. 남은시간 확인
// echo "1. 판매종료시간 : " . $l_limit_time . " <br />";
// echo "2. 현재판매시간 : " . date("Y-m-d H:i:s") . " <br />";
// echo "3. 최종남은시간 : " . date("Y-m-d H:i:s", $l_limit_time_unix - $l_today_time_unix) . "<br />";

 
?>
<script type="text/javascript">
function auto_refresh()
{
 location.href("./time_user_c.php");
 setTimeout("auto_refresh()", 1000);
}
setTimeout("auto_refresh()", 1000);
</script>

<?
 // 지나간 시간 계산하기
// $signdate = "2011-11-12 00:01:01"; //DB의 datetime형식이 오늘 21시 05분인경우.
// $thisTime=date("Y-m-d H:i:s"); // 현재시간 23시 35임..
 
// $someTime=strtotime($thisTime)-strtotime("$signdate GMT"); // 현재시간에서 작성된 시간을 뺌
// echo date('H시 i분 s초 지났습니다.', $someTime);

 // 남은 시간 계산하기
$date1=mktime("23","59","59","11","31","2011");
$date2=time();

$total_secs=abs($date1-$date2);
$diff_in_days = floor($total_secs / 86400);

$rest_hours = $total_secs % 86400;
$diff_in_hours = floor($rest_hours / 3600);

$rest_mins = $rest_hours % 3600;
$diff_in_mins = floor($rest_mins / 60);
$diff_in_secs = floor($rest_mins % 60);

 

$time_diff = (int)($diff_in_days-365)."일 ".$diff_in_hours ."시간 ".$diff_in_mins ."분 ".$diff_in_secs ."초 ";

echo "1. 판매종료시간 : " . $l_limit_time . "<br />";
echo "2. 현재판매시간 : " . date("Y-m-d H:i:s") . "<br />";
echo "3. 최종남은시간 : " . $time_diff . "<br />";
?>

Posted by 아이맥스