2012-05-23 17 views
7

En una página de nuestro sitio, tengo este código:PHP Sesión variable no conseguir crear

$_SESSION['returnURL'] = "/store/checkout/onepage"; 

y más abajo, este control de botón:

<button type="button" title="Register Today" class="button" onclick="window.location = '/register/';" id="BecomeMember"><span><span>Become a Member Today</span></span></button> 

Ahora, en la plantilla de registro, Tengo este código:

<input type="hidden" name="returnURL" id="returnURL" value="<?php if(isset($_SESSION['returnURL'])) { echo $_SESSION['returnURL']; } else { echo '/'; } ?>" /> 

Pero solo muestra el valor como /.

¿Qué podría estar pasando que está causando esto?

+1

session_start() se llama en cualquier otro lugar. – MB34

+0

Imprimí la matriz $ _SESSION en la plantilla de registro y era una matriz vacía. – MB34

+0

¿La plantilla de registro se está incluyendo con la página anterior o la variable se pasa correctamente? Cuál es su código para la plantilla – Ray

Respuesta

0

Lo que terminé haciendo fue el envío de una variable posteriormente a la página. La diferencia en las sesiones entre ExpressionEngine y Magento hace que esto sea prohibitivo al utilizar variables de sesión y cookies.

9

first.php

<?php 
session_start(); 
$_SESSION['returnURL'] = "/store/checkout/onepage"; 
echo '<a href="second.php">Pass session to another page</a>'; 
?> 

second.php

<?php 
session_start(); 
echo 'returnURL = ' . $_SESSION['returnURL']; 
?> 

por lo que necesita para escribir session_start() tanto en sus archivos

+0

Si coloco session_start() en este archivo, aparece la sesión ya se ha iniciado la advertencia. – MB34

+0

Debe describir más detalladamente la estructura de sus scripts: qué sesión de archivo se inicia, cómo se mueve a otro archivo, etc. El código que escribí es solo un enfoque general. – DaneSoul

+0

Ver comentarios en la publicación original. – MB34

1

Para resolver este problema, tendrá que:

1) Asegúrese de llamar a session_start() al comienzo de el guion, antes que cualquier otra cosa

2) Nada está desarmando $_SESSION o $_SESSION['returnURL'].

+0

Si coloco session_start() en este archivo, aparece la sesión ya se ha iniciado la advertencia. – MB34

+0

El búfer de salida solucionará ese problema – Ray

+0

No se puede hacer, vea los comentarios en la publicación original. – MB34

0

yo era capaz de conseguir que esto funcione como esto

session_start(); 
$returnurl = "/store/checkout/onepage"; 
$_SESSION['returnURL'] = $returnurl;   
+0

Eso es exactamente lo que hizo DaneSoul. – MB34

0

Simplemente financié tuve el mismo tipo de problema, las sesiones funcionaban bien en firefox pero no en cromo, creé un script de prueba que simplemente creaba una sesión y luego imprimía el session_id() para ver si era al ser creado o no, después de ejecutar este script noté que el session_id() cambiaría en cada carga de página y ese php lanzaba una advertencia sobre la fecha/hora que no se estaba configurando. Luego agregué

date_default_timezone_set ('America/Los_Angeles');

al inicio de la secuencia de comandos, esto impidió que se generara una nueva session_id() en cada carga de página y se solucionó el problema. (podría valer la pena señalar que mi problema solo parecía aparecer en mi dominio secundario y no en el dominio de nivel superior)

0

el servidor en el que estaba trabajando estaba lleno y la sesión no funcionó porque no había espacio para valores de la tienda. Asegúrate de que tu servidor tenga espacio.

+0

Esta pregunta ya tiene una respuesta aceptada. –

0

He visto muchos CMS y marcos teniendo una manera diferente de manejar sesiones regulares. Si el juego de dos líneas básico descrito anteriormente no funciona (porque interfiere con el software actual), puede seguir utilizando cookies para la misma funcionalidad. Recuerde que las cookies no se eliminan al cerrar el navegador, por lo que debe indicar explícitamente cuándo liberar la variable (utilizando unset).

$_COOKIE["something"] = 'value'; 
echo $_COOKIE["something"]; 
unset($_COOKIE["something"]); 
Cuestiones relacionadas