Foros del Web » Programando para Internet » PHP »

session_start();

Estas en el tema de session_start(); en el foro de PHP en Foros del Web. Espero poder explicarme bien: Estoy dessarrollando una pagina en dos idiomas, y quiero que se establazca por sesiones, ya lo tengo hecho y el problema ...
  #1 (permalink)  
Antiguo 24/05/2004, 07:56
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
session_start();

Espero poder explicarme bien:
Estoy dessarrollando una pagina en dos idiomas, y quiero que se establazca por sesiones, ya lo tengo hecho y el problema es en el podefecto, me ecplico, si entro en la web port defecto esta en ingles
Código PHP:
.
.
.
.
default:
session_start();
if (isset(
$_SESSION["spa"])) {
session_destroy("ing");  
        }
session_register('spa');  
$sesion "ing";

y la variable $sesion = "ing";
hace que todos los enlaces y menus, imagenes etc.. sean en ingles

EL PROBLEMA es es siguiente
para destruir y activar los dos idiomas tengo esto:
Código PHP:
switch ($sesion) {
case 
spa:
session_start();
if (isset(
$_SESSION["ing"])) {
session_destroy("ing"); 
        }
session_register('spa'); 
$langu "$spanish ";
$sesion "spa";
break;
case 
ing:
session_start();
if (isset(
$_SESSION["spa"])) {
session_destroy("spa"); 
        }
session_register('ing'); 
$langu "$english";
$sesion "ing";
default:
session_start();
if (isset(
$_SESSION["spa"])) { // si la sesion es "spa" español 
session_destroy("ing");  // cierra la sesion  "ing" y
        
}
session_register('spa');  // crea la sesion "spa" inbles y
$langu "$english";
$sesion "ing";

Si sesion es igual a "spa" es un didioma y si sesion es igual a "ing" es otro

Todo funciona corractamente de este modo "PERO" TENGO QUE PONER EN TODOS LOS ENLACES DICHE VARIABLE SINO SALTA al idioma por defecto, el caso es que siestoy en se idima no hay problemas el tema este el que tengo que poner index.php?sesion=spa en todo y cada uno de los enlaces de la web ¿COMO PUEDO EVITARLO? ¿COMO PUEDO QUE LAS DOS SESIONES SEA INDEPENDIENTE DEL "default" Y SOLO SE CARGAN Y SE DESTRUYAN DESDE EL BOTNON BANDERITAS?

ALGUNA IDEA

GRACIS
__________________

diseño web
  #2 (permalink)  
Antiguo 24/05/2004, 09:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
NOOOOOO puedes mezclar $_SESSION con session_register() (o no deberías) ..

Te recomiendo encarecidamente que primero te aclares con el uso de sesiones que vas a hacer y como las vas registrar/acceder antes de seguir con nada más.

Por ejemplo .. (para que veas el lio que tienes):

session_destroy("ing");

esa función destruye la sesión COMPLETA .. no una variable de sesión .. lo cual deberías hacer con unset($_SESSION['variable']) o bien con session_unregister("variable") (si mal no quiero recordar .. pues NO deberías usarlo).

Destruye la sesión de nombre "img" que debes de haber creado con session_name() -antes- de tu session_start() y más encima debes usar ese session_name("nombre_sesion") a cada uso/acceso de esas variables de esa sesión .. (creo que esto es complicarse la vida con lo simple que es hacer: unset($_SESSION['variable']) y listo ...

La sesión es un "contenedor" de variables de "sesión" (valga la rebundancia) .. Tu creas (registras) .. lees (accedes) y borras (te deshaces de ellas o le das un valor nulo) en el momento que gustes y ... si realmente ya no vas a usar para nada dicha sesión .. la eliminas por concreto con session_destroy() ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 24/05/2004, 10:41
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
y si hago algo asi y despues destruyo una auna las sesiones anteriores
Código PHP:
session_start();
    if (isset(
$_SESSION["ing"])) {
         
$langu "$spanish";
$sesion "spa";
        }else{
     if (isset(
$_SESSION["spa"])) {
 
$langu "$english";
$sesion "ing";
        }else{
    if (!isset(
$_SESSION["ing"]["spa"])) {
$langu "$english";
$sesion "ing";
     }
        }
             } 
Y como hago para destruir una sesion y al mismo tiempo crear otra seria algo asi:
session_destroy("asp");
session_register('ing');

o

session_start();
session_destroy("asp");
session_register('ing');

o

session_start();
session_destroy("asp")
{
session_register('ing');
}

perdona pero esto de las sesiones me supera
__________________

diseño web

Última edición por concric; 24/05/2004 a las 10:57
  #4 (permalink)  
Antiguo 24/05/2004, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Estas confundiendo "Session" (el concepto) con lo que es una simple variable que "propagas/llevas/almacenas" en una "sesión".

Si tienes dudas sobre el concepto en sí .. dinos que entiendes tu por sesión y explicanos como crees que trabajan (como para corregirte si fuese necesario ..)

Pero .. no está de más repasar:
www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 24/05/2004, 11:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Málaga
Mensajes: 293
Antigüedad: 20 años, 5 meses
Puntos: 1
Mira tengo dos idiomas y quiero hacer algo asi, te lo pongo a lo bruto por que mi nivel de php es pesimo:

Si la sesion se llama ing
abre tal "ing"
else
Si la seison se llama spa
abre tal "spa"
else
si la sesion no se llama ni ing ni spa
abre tal "ing"

Código PHP:
session_start();
    if (isset(
$_SESSION["ing"])) {
         
$langu "$spanish";
$sesion "spa";
        }else{
     if (isset(
$_SESSION["spa"])) {
 
$langu "$english";
$sesion "ing";
        }else{
    if (!isset(
$_SESSION["ing"]["spa"])) {
$langu "$english";
$sesion "ing";
     }
        }
             } 
Y acontinucion desde un mismo boton poder destruir y crear una sesion para cambiar de idiomas,

www.php.net/session entre en la web y en fin que no me entero, otra solución es la que menos me gusta es tener dos paginas una llamada
spanish.php
english.php
y se termino el problema pero me gustria poder rotar una variables por toda la web sin tener que llegar a esta solución.

Tengo resuelto el tena de las sesiones o eso creo lo que no tengo muy claro como destruir sesion(A) Y crear sesion(B) con un solo clic
__________________

diseño web
  #6 (permalink)  
Antiguo 24/05/2004, 11:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Es que ..

Hablas de "sesión" y en consecuencia "buscas" funciones para destruir una sesión .. pero como te deciá . .una cosa es la "sesión" (el "contenedor" de esas variables que vas a crear/dar valor y leerlo) en esa sesión y otra eso mismo; las variables ..

Para tu problema concreto (espero que te quede claro lo que es una sesión).

Tienes que trabajar con una variable que va a definir "lenguaje" y su valor . .será el "lenguaje que esté o defina tu usuario":

cambia_idioma.php

Código PHP:
<?
session_start
();
switch(
$_GET['lenguaje']){
   case 
"ing":
       
$_SESSION['lenguaje']="ing";
   break;
   case 
"spa":
       
$_SESSION['lenguaje']="spa";
   break;
   default:
       
$_SESSION['lenguaje']="spa";
}
// Se define el valor de la sesión según el switch() y se redirecciona a tu index.php o donde lo quieres mandar -automáticamente.
header ("Location: index.php");
exit;
?>
tus banderitas .. apuntan a
cambia_idioma.php?lenguaje=spa
cambia_idioma.php?lenguaje=ing

Y en tu index .. trabajas el valor de $_SESSION['lenguaje'] bajo otro switch() filtrando por el valor de esta ..

bandera.php
Código PHP:
<?
session_start
();
switch(
$_SESSION['lenguaje']){
   case 
"ing":
      
$bandera="ing.gif";
   break;
   case 
"spa":
      
$bandera="spa.gif";
   break;
   default:
      
$bandera="spa.gif";
}
?>

index.php
Código PHP:
<?
// OJO . en bandera.php se incluye el session_start() . . si usas más sesiones en tu sitio sería recomendable que sacases fuera de bandera.php el session_start() para usarlo cuando corresponda ...

include ("bandera.php");

?>

y donde requieras ..

<img src="<? echo $bandera ?>">
Como veras . no ando "borrando" sesiones . ni tan siquiera variables de sesión sino que voy cambiando el valor de la variable que define el idioma en curso actual según se pide.

Un saludo,

NOTA: cuando digo "index" me refiero a cualquier página de tu sitio .. pues para eso defines esa variable y sesión .. para no tener que ir "propagando" ese valor de esa variable en todoooosss los links que hagas en tu web ..
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 24/05/2004 a las 12:02
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 20:29.