문제

세션에 대한 간단한 테스트 PHP 스크립트를 작성하려고 합니다.기본적으로 카운터를 증가시킵니다(다음에 저장됨). $_SESSION) 해당 페이지를 새로 고칠 때마다.작동하지만 페이지를 다시 로드하는 세션을 파괴하는 링크를 가지려고 합니다. ?destroy=1 매개변수.해당 매개변수가 설정되어 있는지 확인하고 그렇다면 세션을 삭제하기 위해 두 개의 if 문을 시도했지만 작동하지 않는 것 같습니다.

매개변수가 설정된 경우 메시지를 팝업하기 위해 본문에 if 문을 넣었지만 선택되지 않는 것 같습니다.

제가 뭔가 어리석은 짓을 하고 있다는 건 알지만(PHP 초보자입니다) 그게 뭔지 찾을 수 없는 것 같아요...

여기 코드를 참조하세요:

<?php
if ($_POST['destroy']) {
    session_destroy();
} else {
    session_start();
}    
?>

<html>
    <head>
        <title>Session test</title>
    </head>
    <body>
    <?php
    if (isset($_POST['destroy'])) {
        echo "Destroy set";
    }

    $_SESSION['counter']++;

    echo "You have visited this page " . $_SESSION['counter'] . " times" . "<BR>";
    echo "I am tracking you using the session id " . session_id() . "<BR>";
    echo "Click <a href=\"" . $_SERVER['PHP_SELF'] . "?destroy=1\">here</a> to destroy the session.";
?>
도움이 되었습니까?

해결책

내 생각엔 네가 넣은 것 같아

$_POST['destroy']

대신에

$_GET['destroy']

$_POST 변수를 사용하려면 양식을 사용해야 합니다.$_GET 변수는 URL에 저장됩니다.

다른 팁

그건 그렇고 당신이 사용할 수 있는

$_REQUEST['파괴']

이는 데이터가 POST 또는 GET 요청으로 전달되는지 여부에 관계없이 작동합니다.

에서 PHP 매뉴얼 세션을 파괴하기 위한 코드 조각이 있습니다.

session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();

응, 너도 하고 싶을 거야

if( $_GET['destroy'] == 1 )

또는

if( isset($_GET['destroy']) )

제가 뭔가 어리석은 짓을 하고 있다는 건 알지만(PHP 초보자입니다) 그게 뭔지 찾을 수 없는 것 같아요...

그것이 당신이 많은 것을 배울 수 있는 방법입니다 ;) 즐기세요 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top