글쓴사람 궁금이
글쓴시간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
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com