Tienes una gran confusión con el manejo de variables externas de un script .. confundes y mezclas lo que son los arrays superglobales con los que no lo son y con acceso "global" a estas ... Además accedes de forma incorrecta a los iindices de tus variables cuando lo haces por los arrays superglobales que son eso mismo: array (arreglo, matrices .. ).
Algunos de esos errores son:
Cita: setcookie("fecha",$fecha,time()+172800);// esta cookie dura 2 dias, tiene
//por nombre fecha y como valor
//la variable $fecha
if(isset($HTTP_COOKIE_VARS["fecha"]))//si la cookie existe
{
echo "Tu última visita fue el ".$HTTP_COOKIE_VARS["fecha"];
print("<br>");
}
else
{
echo "Es la primera ves que me visitas";
}
Ese proceso no es correcto. Es decir .. una cookie no quedará disponible su valor hasta la próxima iteracción con el servidor: recarga de página, linkear hacia otra página .. etc.
Tampoco deberías mezclar el uso de los arrays globales (como $_SESSION .. )y los no globales como $HTTP_COOKIE_VARS .. usa $_COOKIE para acceder a tus cookies.
Lo correcto sería:
Código PHP:
if(isset($_COOKIE["fecha"]))//si la cookie existe
{
echo "Tu última visita fue el ".$_COOKIE["fecha"];
print("<br>");
}
else
{
echo "Es la primera ves que me visitas";
}
// Si se trata de crear la cookie o actualizarla (su valor) en cualquier caso .. define el valor de tu cookie despues de validar si existe:
setcookie("fecha",$fecha,time()+172800);// esta cookie dura 2 dias, tiene
//por nombre fecha y como valor
//la variable $fecha
Ojo también con dar valor de fecha tipo:
Cita: $fecha =date("d/m/Y | H:i:s");
Sobre todo con el caracter / y el | .. no sé si tendrás que codificarlo con urlencode() y luego aplicar un urldecode() para no tener problemas (revisalo).
Podrías usar un TIMESTAMP como el que dá time() simplemente (te resultará más fácil operar con ese dato y formatearlo si lo deseas con date() si tienes que presentar dicho dato).
OJO con:
Cita: header("Location:mallog.php");
usa un espacio detras del : del Location .. sino tendrás problemas (con IIS parece que los dá si es que lo usases alguna vez) y usa en exit; tras cada "Location" por que la finalidad es terminar la ejecución de ese script y cambiar a otro en caso de que suceda tal evento:
Código PHP:
header("Location: mallog.php");
exit;
Todo esto no es correcto, .. sobre el tratamiento de tus variables que vienen de tu formulario de login en método POST:
Cita: //busco un usuario con esos datos
$busco = "SELECT * FROM $tabla WHERE usuario='$usuariolog' and contrasenia='$contrasenialog'";
//Ejecuto la sentencia
$siono = mysql_query($busco,$link);
if (mysql_num_rows($siono)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION['usuario']=$_POST[$usuariolog];
print ("bienvenido $usuariolog <br>");
Sería:
Código PHP:
//busco un usuario con esos datos
$busco = "SELECT * FROM $tabla WHERE usuario='".$_POST['usuariolog']."' and contrasenia='".$_POST['contrasenialog']."'";
//Ejecuto la sentencia
$siono = mysql_query($busco,$link);
if (mysql_num_rows($siono)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION['usuario']=$_POST['usuariolog'];
echo "bienvenido ".$_POST['usuariolog']."<br>";
Cuando adaptes el código y corrijas todos esos problemas .. pruebalo nuevamente. Esto no asegura que funcionen las sesiones como esperas por qué el hecho de que funcionen las sesiones dependen también de como propagas el SID que no sé vé que lo hagas manualmente .. así que "supones" y dejas a PHP que lo haga automáticamente, por ende .. tendrías que verificar configuración de PHP sobre sesiones para ver como tu configuración concreta lo está haciendo.
Un saludo,