Bug #68650 [ReO->Nab]: Cannot set session variables in a page handling session.upload_progress

From: Date: Fri, 24 Sep 2021 12:48:29 +0000
Subject: Bug #68650 [ReO->Nab]: Cannot set session variables in a page handling session.upload_progress
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-236815@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68650&edit=1 ID: 68650 Updated by: cmb@php.net Reported by: Chriswright96 at hotmail dot com Summary: Cannot set session variables in a page handling session.upload_progress -Status: Re-Opened +Status: Not a bug Type: Bug Package: Session related Operating System: Ubuntu Trusty PHP Version: 5.5.20 -Assigned To: +Assigned To: cmb Block user comment: N Private report: N New Comment: From the docs[1]: | The upload progress will be available in the $_SESSION | superglobal when an upload is in progress, and when POSTing a | variable of the same name as the session.upload_progress.name INI | setting is set to. When PHP detects such POST requests, it will | populate an array in the $_SESSION, […] So $_SESSION is already populated when test2.php is executed, but the session has not been started. Since test2.php will not start the session in this case, any changes to $_SESSION are not persistet. If you request test2.php directly, the changes are persistet. I think the documentation is sufficient, so I'm closing as NAB. [1] <https://www.php.net/manual/en/session.upload-progress.php> Previous Comments: ------------------------------------------------------------------------ [2020-01-26 01:09:26] ramsey@php.net This appears to be session-related and not related to the uploadprogress extension. I'm not sure whether it's still an issue, but I'm re-opening, just in case. ------------------------------------------------------------------------ [2017-10-24 09:01:59] kalle@php.net This package has not had any releases for 6 years, so I'm gonna suspend it, any new maintainer that decides to pick this up can re-open this ticket. ------------------------------------------------------------------------ [2014-12-26 15:50:50] Chriswright96 at hotmail dot com This can be solved by using: if (session_status() == PHP_SESSION_NONE) { session_start(); } Instead of: if(!isset($_SESSION)) { session_start(); } But the reasoning behind this is still not clear in documentation ------------------------------------------------------------------------ [2014-12-25 05:07:52] Chriswright96 at hotmail dot com Description: ------------ When using an upload form, with a hidden field with the session.upload_progress.name, the target page cannot set new session variables. If you use the example below (with session.upload_progress.cleanup set to off for debugging), you will notice that the 'new' session disappears when you navigate back to the first page. Test script: --------------- //test1.php <form name="fileupload" action="test2.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123"> <input type="file" name="newfile"> <input type="submit" name="submit" value="Submit"> </form> <?php if(!isset($_SESSION)) { session_start(); } print_r($_SESSION); ?> //test2.php <?php if(!isset($_SESSION)) { session_start(); } $_SESSION['new']='Im a new value that will disappear'; print_r($_SESSION); ?> <a href="test.php">Go back</a> ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=68650&edit=1

« previous php.bugs (#236815) next »