session_abort
(PHP 5 >= 5.6.0, PHP 7, PHP 8)
session_abort — Discard session array changes and finish session
说明
session_abort(): 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. |
参见
- $_SESSION
- The session.auto_start configuration directive
- session_start() - 启动新会话或者重用现有会话
- session_reset() - Re-initialize session array with original values
- session_commit() - session_write_close 的别名

User Contributed Notes 4 notes
parsa dot mhn at outlook dot com ¶
6 years ago
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 .
mhd dot nickz13 at gmail dot com ¶
3 years ago
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";
Gulshan Kumar ¶
3 years ago
<?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.
?>
zh dot hailei at gmail dot com ¶
4 years ago
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;
?>
备份地址:http://www.lvesu.com/blog/php/function.session-abort.php