• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • session_abort()

    (PHP 5 >= 5.6.0, PHP 7)

    中断会话阵列更改并完成会话

    说明

    session_abort(void): bool

    session_abort()完成会话而不保存数据。因此,会话数据中的原始值得以保留。

    返回值

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

    更新日志

    版本说明
    7.2.0该函数的返回类型现在为bool。以前,它是无效的。

    参见

    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;
    ?>