session_abort()
(PHP 5 >= 5.6.0, PHP 7)
中断会话阵列更改并完成会话
说明
session_abort(void): bool
session_abort()完成会话而不保存数据。因此,会话数据中的原始值得以保留。
返回值
成功时返回TRUE,或者在失败时返回FALSE。
更新日志
| 版本 | 说明 | 
|---|---|
| 7.2.0 | 该函数的返回类型现在为bool。以前,它是无效的。 | 
参见
- $_SESSION
- Thesession.auto_startconfiguration directive
- session_start()启动新会话或者重用现有会话
- session_reset()Re-initialize session array with original values
- session_commit()session_write_close 的别名
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 .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";
<?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.
?>
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;
?>
