php教程

session_abort

(PHP 5 >= 5.6.0, PHP 7)

session_abortDiscard session array changes and finish session

说明

session_abort ( void ) : bool

session_abort() finishes session without saving data. Thus the original values in session data are kept.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

更新日志

版本 说明
7.2.0 The return type of this function is bool now. Formerly, it has been void.

参见

User Contributed Notes

Gulshan Kumar 22-Feb-2019 05:12
<?php
session_start
();
if(!isset(
$_SESSION['count'])){
   
$_SESSION['count'] = 1;
}else{
   
$_SESSION['count']++;
   
session_abort();
}
echo
$_SESSION['count'];
//$_SESSION['count'] will always be 1;
//This will always echo 1 not the above code.
?>
mhd dot nickz13 at gmail dot com 02-Sep-2018 07:37
session_abort()  closes the current session and discards the changes applied to Session array in the current page  , it doesn't delete the session file 
let me explain with one example.
page 1.php :
<?php
session_start
();
$_SESSION['city']="Sydney";
echo
"<a href=\"2.php\"> page2</a>";
?>
when you open this page , a session file is created on the server (to find out where session files are saved run "echo session_save_path()" )  with the name of session_id  and the content of  the variable :

  sess_o22iabs75j93uhc7i4jf1lecjk  (file name)
  city|s:6:"Sydney";               (content)

if we go to 2.php containing this code :

<?php
session_start
();
$_SESSION['country']="Australia";
echo
session_encode();
session_abort();
session_start();
echo
"<br>".session_encode();
?>

when session_abort is executed , the session is closed and the change which here is the 'country' element of Session array is discarded . 

Output : 
city|s:6:"Sydney";country|s:9:"Australia";
city|s:6:"Sydney";
zh dot hailei at gmail dot com 17-Oct-2017 07:28
demo1
<?php
session_start
();
if(!isset(
$_SESSION['count'])){
   
$_SESSION['count'] = 1;
}else{
   
$_SESSION['count']++;
}
echo
$_SESSION['count'];
//above, $_SESSION['count'] will keep increase;
?>

demo2
<?php
session_start
();
if(!isset(
$_SESSION['count'])){
   
$_SESSION['count'] = 1;
}else{
   
$_SESSION['count']++;
}
session_abort();
echo
$_SESSION['count'];
//$_SESSION['count'] will always be 1;
?>
parsa dot mhn at outlook dot com 03-Sep-2015 02:33
To better understand this function you should execute this code first :

<?php
   
// First of all choose your path , For e.g. C:/session
   
session_save_path('Your Path here !');
   
   
session_start();
   
   
// Define a Session Variable
   
$_SESSION['Key'] = 'value' ;
   
   
Var_dump(session_status() == PHP_SESSION_ACTIVE);
   
   
// Output : bool(True) , it means you have an open session !
?>

Then you should execute this code :

<?php
   
// Choose the path that you used it in first part 
   
session_save_path('Your path here');
   
   
session_start();
   
   
// If you want to close session and keep your original data in your path , you should use session_abort()
   
session_abort();
   
   
var_dump(session_status()== PHP_SESSION_ACTIVE);
   
   
// Output : bool(False) , it means your session closed .
?>

So if you have an open session , session_abort() will simply close it without effecting the external session data , so you can reload your data again from your path that you chose .

CopyRight © 2008-2022 verySource.Com All Rights reserved. 京ICP备17048824号-1 京公网安备:11010502034788