글쓴사람 궁금이
글쓴시간 2003년 9월 29일 오전 11시 18분 14초
제목 세션이 제대로 작동이 안되네염...답답합니다.
admin.php 화일
<?
session_start();
.
.
.
.
switch ($_POST['prc']) {
case 'login_ok' :
$admin->db=new DB_;
$admin->login_ok();
$admin->db->close();
break;
default:
switch ($_GET['prc']) {
case '' :
$tpl->define('main', 'login.html');
$admin->db=&new DB_;
$admin->login();
$admin->db->close();
break;
case 'main' :
$tpl->define('main', 'main.html');
$admin->db=&new DB_;
$admin->main();
$admin->db->close();
break;
case 'error' :
$tpl->define('main', 'message.htm');
$tpl->assign('no', $_GET['no']);
break;
}
}
?>
admin_.class.php 화일
<?
class Admin_
{
function login_ok()
{
echo "userid = " .$_POST['userid'] ."<br>";
echo "passwd =". $_POST['passwd'] ."<br><br>";
$this->db->query('select * from '.$this->db->member_table.' where userid="'.$_POST['userid'].'" and passwd="'.$_POST['passwd'].'"');
$row = $this->db->getRow();
$userid = $row[userid];
$level = $row[level];
session_register("userid");
session_register("level");
// $this->toss('?prc=main');
}
function main()
{
echo $userid."<br>"; ........(1번)
echo $level."<br>";
$this->tpl->assign(array(
'title_bar'=>$this->title_bar,
));
}
.
.
.
.
?>
admin.php에서 session_start();를 해주고 admin_.class.php화일에서 session_register("userid");를 해주면 ......(1번)에서는 $userid가 출력이 되야 정상아닌가여?
출력이 안되는거 보니...프로그램이 틀리긴 한데..어디서 잘못 됐는지...영 모르겠습니다...
해결문제와..설명 좀 부탁드립니다..
관리자
session_register("userid");
session_register("level");
echo $userid."<br>";
echo $level."<br>";
대신에
$_SESSION["userid"]=$row["userid"];
$_SESSION["level"]=$row["level"];
echo $_SESSION["userid"];
echo $_SESSION["level"];
해보시구요.
그래도 안되면..
session_start();
setcookie("PHPSESSID", session_id(), 0,"/");
한 줄 추가하고 해보세요.
03-09-29 11:50
궁금이
setcookie("PHPSESSID", session_id(), 0,"/"); 를 추가하지 않고도 되네염..정말 감사합니다..
빠른 답변과 해결해 주신 점 정말 감사합니다.
03-09-29 12:02
궁금이
아~! 한가지 더 질문이 있는데요..,
session_register("userid"); 이걸루 세션에 기록하는 거와 $_SESSION["userid"]=$row["userid"]; 기록하는 점이 어떤 ㄷㅏ른 점이 있죠????
03-09-29 12:03
관리자
궁금이님..
가급적이면 템플릿과 관련된 질문만 해주시면 감사하겠습니다.
session_register("userid"); 는 php 4.1.0 이전 방식이고
똑같이 세션파일에 기록하는데, 여기까진 문제가 없습니다.
php.ini 파일에 register_globals 값이 off 이면
$userid 는 직접사용할 수 없고,
$HTTP_SESSION_VARS['userid'] 나
$_SESSION['userid'] 로 사용해야 합니다.
그런데 위의 경우 register_globals 값이 on 이더라도..
$userid 가 main() 함수의 지역 변수라서
function main() {
global $userid;
echo $userid;
}
이렇게 전역변수선언을 하지 않으면 사용할 수 없게 됩니다.
php 메뉴얼에서 자동전역변수에 관한 내용을 찾아 보시기 바랍니다.
03-09-29 12:20