2011-06-04 21 views
5

No soy un experto en PHP y estoy tratando de establecer una cookie que contenga un código de referencia de la URL. Por ejemplo: www.example.com?promotioncode=google debe establecer un nombre de cookie promocode, valorar lo que sea posterior al = y un vencimiento de 6 meses.PHP Cookies usando Variable from URL

puedo recuperar el promotioncode usando

$_GET['promotioncode'] 

pero me parece que no puede insertarlo en la cadena de galletas. He intentado algunas de las formas:

$id = 'promo'; 
$value = $_GET['promotioncode']; 
$time = time()+60*60*24*180; 
setcookie($id, $value, $time); 

y

$id = 'promo'; 
$time = time()+60*60*24*180; 
setcookie($id, $_GET['promotioncode'], $time); 

pero no funciona. Si utilizo una palabra o número como el valor de la cookie, entonces la cookie no establece ningún problema.

¿Qué estoy haciendo/haciendo mal?

+0

¿Marcó el encabezado de respuesta HTTP? Su intento de establecer una cookie puede fallar debido al hecho de que el encabezado ya ha sido enviado. ¿Revisaste tu registro de errores? – Gumbo

+0

Esto es realmente en una instalación de magento y esto se agrega de la misma manera que otras cookies generadas por magento .. si configuro el valor en 123 funciona bien, el problema está yendo a través del parámetro de la url. – Andy

+0

Ese código debería funcionar, y funciona aquí. ¿Cómo sabes que no funciona? ¿Verifica las cookies o verifica el valor de retorno de setcookie()? ¿Has vardump el contenido de $ _GET? ¿Algo extraño sobre eso? – Sylverdrag

Respuesta

0

No hay diferencias entre un simple $string y $_GET['key'], por lo que el problema no puede ser esto.

también comprobar su cuarto arg de setcookie

0

intento de añadir

if($_GET['promotioncode']) 
    setcookie(.....) 
2

Añadir un parámetro para definir la ruta en el servidor en el que estará disponible la cookie en:

setcookie($id, $value, $time, '/'); 

Deberia de funcionar.

0

$ id = $ _GET ['promotioncode'];
setcookie ('promotioncode', $ id, time() + 60 * 30 * 24 * 3600, '/');

0

Prueba esto:

setcookie($id, "" . $value, $time); 

La cadena vacía ("") puede ayudar a aclarar o definir el tipo de valor de $. Las citas básicamente aseguran que la variable $ value se transfiere como un parámetro de cadena al método setcookie.

+0

Esta respuesta apareció en la cola de revisión de baja calidad, presumiblemente porque no proporciona ninguna explicación del código. Si este código responde a la pregunta, considere agregar agregando texto que explique el código en su respuesta. De esta forma, es mucho más probable que obtengas más votos ascendentes y ayudes al indagador a aprender algo nuevo. – lmo