PHP 코드에서 세션이 이미 시작된 상태에서 새 세션을 시작하려고하면 다음과 같은 알림이 표시됩니다.
주의 : 세션이 이미 시작되었습니다-session_start () 무시
이것을 어떻게 피할 수 있습니까?
PHP 코드에서 세션이 이미 시작된 상태에서 새 세션을 시작하려고하면 다음과 같은 알림이 표시됩니다.
주의 : 세션이 이미 시작되었습니다-session_start () 무시
이것을 어떻게 피할 수 있습니까?
session_start()
내 포함 중 하나와 require_once
필요한 모든 파일에 넣었 습니다 .
답변:
시험
<?php
if(!isset($_SESSION))
{
session_start();
}
?>
새 것을 원하면 session_destroy()
시작하기 전에 수행 하십시오. 시작하기 전에 설정되었는지 확인하려면 다음을 호출하십시오 session_status()
.
$status = session_status();
if($status == PHP_SESSION_NONE){
//There is no active session
session_start();
}else
if($status == PHP_SESSION_DISABLED){
//Sessions are not available
}else
if($status == PHP_SESSION_ACTIVE){
//Destroy current and start new one
session_destroy();
session_start();
}
나는 글로벌 체크 피할 것 $_SESSION
대신 의 내가 부르고 session_status()
PHP가 명시 적으로이 기능을 구현하기 때문에 방법 :
새로운 기능인 session_status를 통해 세션 상태를 노출합니다. 이것은 (PHP> = 5.4.0)입니다.
$ _SESSION의 차단 동작을 수정하는 동안이 문제가 발생했습니다.
http://konrness.com/php5/how-to-prevent-blocking-php-requests/
세션 파일은 스크립트가 완료되거나 세션이 수동으로 닫힐 때까지 잠겨 있습니다.
따라서 기본적으로 페이지는 읽기 전용 모드로 세션을 열어야합니다. 그러나 읽기 전용으로 열리면 쓰기 모드로 전환하려면 닫았다가 다시 열어야합니다.
const SESSION_DEFAULT_COOKIE_LIFETIME = 86400;
/**
* Open _SESSION read-only
*/
function OpenSessionReadOnly() {
session_start([
'cookie_lifetime' => SESSION_DEFAULT_COOKIE_LIFETIME,
'read_and_close' => true, // READ ACCESS FAST
]);
// $_SESSION is now defined. Call WriteSessionValues() to write out values
}
/**
* _SESSION is read-only by default. Call this function to save a new value
* call this function like `WriteSessionValues(["username"=>$login_user]);`
* to set $_SESSION["username"]
*
* @param array $values_assoc_array
*/
function WriteSessionValues($values_assoc_array) {
// this is required to close the read-only session and
// not get a warning on the next line.
session_abort();
// now open the session with write access
session_start([ 'cookie_lifetime' => SESSION_DEFAULT_COOKIE_LIFETIME ]);
foreach ($values_assoc_array as $key => $value) {
$_SESSION[ $key ] = $value;
}
session_write_close(); // Write session data and end session
OpenSessionReadOnly(); // now reopen the session in read-only mode.
}
OpenSessionReadOnly(); // start the session for this page
그런 다음 값을 쓰려고 할 때 :
WriteSessionValues(["username"=>$login_user]);
이 함수는 더 효율적으로 만들기 위해 key => value 쌍의 배열을 사용합니다.
이 시도
if(!isset($_SESSION)){
session_start();
}
ob_start (); 사용하는 것이 좋습니다. sesson varriable을 시작하기 전에 브라우저 버퍼를 지정해야합니다.
편집 : $ _SESSION 뒤에 추가)
<?php
if ( session_id() != "" ) {
session_start();
}
기본적으로 다른 세션을 만들기 전에 세션이 시작되었는지 확인해야합니다. ... 더 많은 읽기 .
반면에를 사용하여 다른 세션을 만들기 전에 기존 세션을 삭제하도록 선택했습니다 session_destroy()
.