RETURN_FALSE;
}
+ if (name && PS(session_status) == php_session_active) {
+ php_error_docref(NULL, E_WARNING, "Cannot change session id when session is active");
+ RETURN_FALSE;
+ }
+
if (PS(id)) {
/* keep compatibility for "\0" characters ???
* see: ext/session/tests/session_id_error3.phpt */
ob_start();
-/*
+/*
* Prototype : string session_id([string $id])
* Description : Get and/or set the current session id
- * Source code : ext/session/session.c
+ * Source code : ext/session/session.c
*/
echo "*** Testing session_id() : error functionality ***\n";
-var_dump(session_id());
-var_dump(session_start());
var_dump(session_id("test"));
var_dump(session_id());
var_dump(session_id("1234567890"));
var_dump(session_id());
+var_dump(session_start());
+var_dump(session_id("1234567890"));
var_dump(session_destroy());
var_dump(session_id());
--EXPECTF--
*** Testing session_id() : error functionality ***
string(0) ""
-bool(true)
-string(%d) "%s"
string(4) "test"
string(4) "test"
string(10) "1234567890"
bool(true)
+
+Warning: session_id(): Cannot change session id when session is active in %s on line %d
+bool(false)
+bool(true)
string(0) ""
Done
-
echo "*** Testing session_id() : error functionality ***\n";
-@session_start();
var_dump(session_id());
var_dump(session_id("!"));
var_dump(session_id());
+@session_start();
@session_destroy();
-@session_start();
var_dump(session_id());
var_dump(session_id("?><"));
var_dump(session_id());
+@session_start();
@session_destroy();
-@session_start();
var_dump(session_id());
-var_dump(session_id("£$%^&*()"));
+var_dump(session_id("\xa3$%^&*()"));
var_dump(session_id());
+@session_start();
@session_destroy();
-@session_start();
var_dump(session_id());
var_dump(session_id("\r\n"));
var_dump(session_id());
+@session_start();
@session_destroy();
-@session_start();
var_dump(session_id());
var_dump(session_id("\0"));
var_dump(session_id());
+@session_start();
@session_destroy();
-@session_start();
var_dump(session_id());
-var_dump(session_id("¬``@~:{>?><,./[]+--"));
+var_dump(session_id("\xac``@~:{>?><,./[]+--"));
var_dump(session_id());
+@session_start();
@session_destroy();
echo "Done";
?>
--EXPECTF--
*** Testing session_id() : error functionality ***
-string(%d) "%s"
-string(%d) "%s"
+string(0) ""
+string(0) ""
string(1) "!"
-string(%d) "%s"
-string(%d) "%s"
+string(0) ""
+string(0) ""
string(3) "?><"
-string(%d) "%s"
-string(%d) "%s"
+string(0) ""
+string(0) ""
string(8) "£$%^&*()"
-string(%d) "%s"
-string(%d) "%s"
+string(0) ""
+string(0) ""
string(2) "
"
-string(%d) "%s"
-string(%d) "%s"
string(0) ""
-string(%d) "%s"
-string(%d) "%s"
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
string(19) "¬``@~:{>?><,./[]+--"
Done