Foros del Web » Programando para Internet » PHP »

Cookies

Estas en el tema de Cookies en el foro de PHP en Foros del Web. HOLA Tengo problemas con cookies pues ni siquiera el if puede indentificar si està o no vacio, etc. Lo he hecho de miles de maneras ...
  #1 (permalink)  
Antiguo 05/06/2003, 04:51
 
Fecha de Ingreso: agosto-2002
Mensajes: 66
Antigüedad: 21 años, 8 meses
Puntos: 0
Pregunta Cookies

HOLA

Tengo problemas con cookies pues ni siquiera el if puede indentificar si està o no vacio, etc.

Lo he hecho de miles de maneras pero ya me desesperè

que le pasa a las cookies... los caracteres aparecen pero parece que nisiquiera lo ve el if:

<?
function session_conectada()
{
session_start("log");
if (isset($_SESSION['id']) AND isset($_SESSION['contraseña']))
{
$select1 = 'SELECT contraseña FROM usuarios_lindsayarts WHERE id="'.$_SESSION['id'].'"';
$queryt1 = mysql_query($select1);
$numt = mysql_num_rows($queryt1);
$rowt = mysql_fetch_row($queryt1);
if ($numt == 0)
{
session_destroy();
return false;
}
$contraseña_encriptada = md5($rowt[0]);
if ($contraseña_encriptada != $_SESSION['contraseña'])
{
session_destroy();
return false;
}
if ($contraseña_encriptada == $_SESSION['contraseña'])
{
return true;
}

}else{
session_destroy();
$idion = $HTTP_COOKIE_VARS['idita'];
$contrarion = $HTTP_COOKIE_VARS['contraseñita'];

if ($idion != "" AND $contrarion != "")
{
$selecti = 'SELECT contraseña FROM usuarios_lindsayarts WHERE id="'.$idion.'"';
$queriti = mysql_query($selecti);
$numerati = mysql_num_rows($queriti);
$roati = mysql_fetch_row($queriti);

$contraseña_encriptada2 = md5($roati[0]);

if ($numerati == 0 OR $contraseña_encriptada2 != $contrarion)
{
setcookie("idita");
setcookie("contraseñita");
return false;
}

if ($contraseña_encriptada2 == $contrarion)
{
session_register("log");
$_SESSION['id'] = $idion;
$_SESSION['contraseña'] = $contrarion;
header("location:index.php?id1=$id1&id2=$id2&idiom a=$idioma&mostrar=$mostrar");
exit;
}
}
return false;
}
}

OJALA ME PUEDAN AYUDAR.
  #2 (permalink)  
Antiguo 05/06/2003, 11:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Esto no es correcto:
session_start("log");

Si quieres darle un nombre a la sesión . .debes usar:

Código PHP:
session_name("log");
session_start(); 
Por ese orden y siempre que requieras usar variables de sesión ..

Con respecto a la sección de "cookies":

Si no haces un session_start() para luego hacer un session_destroy() .. No vas a borrar la sesión activa que pudiera estar activa ..

Las variables de cookie .. ya que estás usando arrays superglables .. SIGUE usandolos $_COOKIE en lugar de tu $HTTP_COOKIE_VARS ..

Los array's "Superglobales" son eso mismo "GLOBALES" por defecto .. Estas usando una función .. así que el ambito de las variables es "LOCAL" a esa función .. Si usas $HTTP_COOKIE_VARS en tu función, deberas pasarle como parámetro o declarando como global dicho array para que puedas acceder a tus variables de tus cookies .. Por eso te recomiendo que uses $_COOKIE que ya es global por defecto ..

Lo mismo sigue usando isset() en lugar de blabla != "" ...

** NO uses Ñ ni acentos y otros caracteres similares como Nombres de variables! (pese que pudiera funcionar ..)

setcookie("contraseñita");

** Este redireccionamiento:
Código PHP:
header("location: index.php?id1=$id1&id2=$id2&idioma=$idioma&mostrar=$mostrar"); 
exit;
Fijate que hay que usar un espacio entre tu location: yelURLquepongas ...


** por aquí:
session_register("log");
$_SESSION['id'] = $idion;
$_SESSION['contraseña'] = $contrarion

te ocurre lo mismo .. Debes iniciar el uso de sesiones con session_start() y si quieres usar nombre de sesión .. lo has de especificar vía session_name("nombre") antes del sesion_start() ...

Código PHP:
session_name("log");
session_start();
$_SESSION['id'] = $idion;
$_SESSION['contraseña'] = $contrarion
Cuando usas sesiones .. NO es necesario que guardes las contraseñas y luego compararlas en todas tus páginas .. Para eso el SID que se adjudica a cada inicio de sesión es Único .. con que te guardes el "ID" ese de tu usuario sobra .. ya que en tu código sólo miras si está definido o no ...

Te recomiendo que leas el manual oficial de PHP y te aclares con la forma de trabajar con sesiones .. Pues lo que es en ese script tenias (y tienes) un enorrrrmeee liooo).

Otro detalle ..
header("location: index.php?id1=$id1&id2=$id2&idioma=$idioma&mostrar =$mostrar");

Si usas sesiones . No sólo se pueden usan para "validar" a un usuario .. puedes guardar mas datos .. por ejemplo todo ese montón de variables que usas ahí en ese URL .. y leerlas o destruirlas donde y cuando las necesites ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 23:05.