Foros del Web » Programando para Internet » PHP »

Sesiones.... ¬¬

Estas en el tema de Sesiones.... ¬¬ en el foro de PHP en Foros del Web. Hola a tots, k os contais? tengo la versión 4.3 de php y apache 2.0.49, el caso es que variables como $PHP_SELF no me dan ...
  #1 (permalink)  
Antiguo 17/08/2004, 06:04
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 11 meses
Puntos: 0
Sesiones.... ¬¬

Hola a tots, k os contais? tengo la versión 4.3 de php y apache 2.0.49, el caso es que variables como $PHP_SELF no me dan ningún resultado, otro problema es que enviando un formluario como text/html mediante post no se me envia nada tampoco, tengo que enviarlo como multipart/formdata si quiero hacerlo en post. Así un monton de tonterías que no me funcionan como supuestamente deberían funcionar, y a lo que voy, ahora estoy con las sesiones, lo hago mediante $_SESSION['variable'], y session_start() , pues bien...

en una pagina pongo lo siguiente
session_start();
$_SESSION['CIF'] = $row['CIF_Cliente'];

y en otra a la que me redirijo mediante javascript, pongo esto:

session_start();
echo $_SESSION['CIF'];

y a continuacion en la pagina se me visualiza este warning dos veces:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /ruta/cliente.php:1) in /ruta/cliente.php on line 1

si en la segunda página prescindo de poner el session start entonces session_id() no me devuelve nada.

En fin no se como seguir, se supone que tengo que enviar el id mediante get? vaya rollazo... dadme un poco de luz ke me estoy desesperando, un saludo!.
  #2 (permalink)  
Antiguo 17/08/2004, 06:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Debes acceder a toda variable por sus arrays superglobales .. al igual que usas ya para las sesiones ($_SESSION) para las variables de servidor tienes el array: $_SERVER. Si usas tu formulario en method="POST" .. tendrás que usar el array $_POST .. si legan tus variables de tus scirpts por el URL: $_GET .. etc ...

http://www.php.net/manual/en/reserved.variables.php

Cita:
y a continuacion en la pagina se me visualiza este warning dos veces:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /ruta/cliente.php:1) in /ruta/cliente.php on line 1
El error principal te dice que en la línea 1 de cliente.php tienes algo de salida al navegador . .puede ser (por la pinta que tiene) un simple espacio antes de <? .. o un salto de línea. Cuando usas session_start() (insprescindible para acceder a variables de sesión/definiarlas) no puede existir nada de salida antes al cliente ..

Por lo demás .. si dices que propagas de un scirpt a otro por javacript .. mejor que lo hicieras con:

Código PHP:
header("Location: script2.php");
exit; 
Con la función header() sucede lo mismo que con session_start() (y también pasa con setcookie() .. ) antes de esa función no puede existir nada de salida al cliente (navegador); lease: un espacio antes de <? o al final de ?> si tienes algún "include()" por ahí .. ni un salto de línea .. ni un echo "algo" .. ni "html" directo ... o javacript y sucedáneos.

A continuación .. el hecho de que puedas leer tu variable de sesión en tu script2 o no . .dependerá de como propages el SID (Identificador Único de sesión) .. como no lo mencionas ni pones el código javascript que usas para redireccionar . .supongo que dejas que PHP lo va hacer por tí .. en tal caso la propagación del SID debe ser por cookies (por usar javascript o header("Location ....") .. ) y e consecuencia necesitas de la configuración mínima siguiente:

session.use_cookies = 1 (u ON)
y un navegador que acepte cookies

Un saludo,
  #3 (permalink)  
Antiguo 17/08/2004, 09:53
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 11 meses
Puntos: 0
Gracias.!

El problema es que tenía un vinculo html antes de session_start() y yo no tenía ni idea de eso. De ahí el resto de problemas.

Un saludo ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:54.