Tengo un script de terceros y me preguntaba cómo puedo consultar con PHP
si se ha declarado session_start()
antes de hacer algo.¿Cómo verifico si se ha ingresado session_start?
something like if(isset($_session_start())) { //do something }
Tengo un script de terceros y me preguntaba cómo puedo consultar con PHP
si se ha declarado session_start()
antes de hacer algo.¿Cómo verifico si se ha ingresado session_start?
something like if(isset($_session_start())) { //do something }
if(isset($_SESSION)) {
// do something
}
supongo que se podría utilizar la función session_id
:
session_id()
returns the session id for the current session or the empty string ("") if there is no current session (no current session id exists).
O tal vez probar si $_SESSION
se ajusta o no, con isset
, puede hacer el truco, ya que no se debe establecer cuando no se ha iniciado ninguna sesión, solo tiene que esperar que nada le asigne nada al $_SESSION
sin iniciar primero la sesión.
function session_started(){ return !!session_id(); }
Don no seas demasiado inteligente;). Prefiero 'return (session_id()! == "")'. – middus
if(!isset($_SESSION)) {
session_start();
}
El cheque le permitirá mantener su sesión actual activo incluso si es un bucle de nuevo la aplicación presentación donde va a volver a utilizar el formulario si los datos se escribe de forma incorrecta o tienen pesos y contrapesos adicionales dentro de su programa antes de pasar al siguiente programa.
recomendaría usar 'if (session_id() == '')', ya que '$ _SESSION' se puede establecer mientras la sesión está cerrada. – Ragnagord
Es cierto, pero todas las $ _SESSION ['variables'] se configuran como nulas cuando se inicia la sesión. Además, session_id() s son valores de cookies del lado del cliente. Depende del desarrollador cómo se utilizan los datos de la sesión. – Maarek
@Maarek Cada vez que se invoca 'session_start()', las variables de sesión NO están todas configuradas en nulo. Y cuando se cierra una sesión (al salir de la secuencia de comandos o al llamar a 'session_write_close()') los datos de la sesión aún persisten. En tales casos, su cheque no es suficiente, porque no reiniciará una sesión cerrada. – Stefan
if(defined('SID'))
// do
Como en PHP> = 5.4.0, que tienen la función session_status() que le diga si han sido o no inicializar o si es discapacitado.
Por ejemplo, usted puede hacer:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
Usted puede leer más sobre esto en http://www.php.net/manual/en/function.session-status.php
para PHP> = 5.4.0
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
para PHP 5.4.0 <
if(session_id() == '') {
session_start();
}
Este es el método recomendado. [http://www.php.net/manual/en/function.session-status.php](http://www.php.net/manual/en/function.session-status.php) –
Tenga en cuenta que la <5.4.0 solución es bastante inútil. session_id() siempre devolverá una cadena vacía hasta que se llame a session_start(). Se llama todo el tiempo. –
Si sesión ya comenzó, de error: "Error fatal: no se puede utilizar el valor devuelto por una función en el contexto de escritura"
Prueba esto:
$session = session_id();
if(empty($session)){
session_start();
}
acabo de escribieron una función simple para ello.
function isSessionStart()
{
if (version_compare(phpversion(), '5.4.0', '<')) {
if(session_id() == '') {
return false;
}
return true;
}
else {
if (session_status() == PHP_SESSION_NONE) {
return false;
}
return true;
}
}
¡la mejor manera trabaja para mí! if (session_status()! = 1) session_start();
posible duplicado de [Prueba si la sesión se inició] (http://stackoverflow.com/questions/3357740/test-if-session-is-started) –
Sí, pero esto fue preguntado hace 3 años. Esa pregunta fue hecha hace 2 años. –
Consulte [Compruebe si la sesión PHP ya ha comenzado] (https://stackoverflow.com/q/6249707/6521116) –