Cookie y sessions

Gracias por cualquier respuesta que me puedas dar de antemano,
tengo un par de problemas al crear mi login para mi página en php.
Te dejo el código que estoy haciendo para que veas en que estado estoy.
<?php
// Configura los datos de tu cuenta
$dbhost='';
$dbusername='';
$dbuserpass='';
$dbname='';
//por seguridad no pongo mis datos de la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');
if ($_POST['usuario']) {
$usuario=$_POST['usuario'];
$pass1=$_POST['pass1'];
if ($pass1==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['pass1'] != $pass1) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_usuario"] = $row['usuario'];
echo "Has sido logueado correctamente ".$_SESSION['s_usuario']." y puedes acceder al index.php.";
}
}
}
?>
Esto ya me funciona me reclama a la base de datos los datos ya introducidos por el usuario y lo informa si es correcto o no.
Lo que busco en este caso es que una vez que se logueo se le envíe una cookie por una semana, para que no tenga que loguearse todo el tiempo. El otro código que necesito es el que tengo que poner en las páginas que necesito que sean restringidas. Y el ultimo código que necesito es para que en alguna parte aparezca "hola "usuario" bienvenido"
desde ya muchas gracias por las respuestas que puedas darme

1 respuesta

Respuesta
1
Para redireccionar hacia una páginia en concreto, debes usar:
header("Location: index.php");
Pero es MUY importante, que antes no hayas escrito nada en la salida o te dará un error de 'cabeceras ya enviadas'.
Para evitar que se pueda ver el lcontenido de las páginas, al principio y, después de haber iniciado la sesión, puedes comprobar si el usuario está logueado o no (por ejemplo, si activas una variable de sesión que lo indique) y si es así, mostrar la página y sino puedese redireccionar a otro sitio. Por ejemplo:
<?php
session_start();
if ($_SESSION['login'] != "OK"])
   header("Location: nologin.php");
else {
?>
<html>
<header>
<title>Tu pagina</title>
</header>
<body>
<p> Etcetera...</p>
</body>
</html>
<?php
}
?>
Hola soy yo de nuevo he resuelto el código de identificación por usuario me reconoce el nombre de quien ya está registrado, lo he resuelto con este código
$dbhost='';
$dbusername='';
$dbuserpass='';
$dbname='';
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');
if (isset($_SESSION['s_usuario'])) {
echo "Bienvenido has ingresado como ".$_SESSION['s_usuario'].", gracias por formar parte de la Comunidad Cabildo!";
}else{
echo "No estas logueado, por favor dirígete a loguin para autenticarte como usuario de la comunidad".;
echo $_SESSION['s_usuario'];
}
?>
Que le informa al usuario que esta logueado y le imprime una frase, y si no esta le pide que se autentique.
Ahora dos cosas que me están pasando con esto, es que aunque no esté autenticado puedo ver el contenido de la web que quiero restringir,
1.¿Cómo puedo restringir ciertas páginas para que solo tengan acceso las personas que estén logueadas? Sigo sin poder encontrar un código que no permita el acceso a las páginas que son restringidas, a menos que estés logueado
2. Lo del cookie ya lo solucione me sigue autenticando auque salga del explorador a menos que se desloguee el usuario con un logout.php
session_start();
$_SESSION = array();
session_destroy();
if(empty($_SESSION['usuario']) and empty($_SESSION['pass1']))
{
echo "Te has deslogueado satisfactoriamente
";
}
else
{
echo "Ha habido un error, trata de desloguearte nuevamente
";
}
?>
3. Otra cosa después de mi login correcto quiero que se redireccione a la página index.php, el problema es que ya probé con todos los métodos con html y con php y los dos me dan un error en linea tal y ya no se que más hacer.
Por el momento es todo gracias por su ayuda
Hola mira mi código de loguin es este por lo de header no pude ya que si se loguea incorrectamente igual se redirecciona. Como hago para que si se loguea incorrectamente no se redireccione a ningún lado o se redireccione a la página del loguin con un error, entiendo que por lo que me pusiste es la sesión para que si no esta logueado se redireccione a la página anterior, ¿se podría usar para el mismo fin verdad?
Otra cosa me podrías explicar un poco más el tema del restringir, la parte del código del body de la página.
<?php
// Configura los datos de tu cuenta
$dbhost='';
$dbusername='';
$dbuserpass='';
$dbname='';
//por seguridad no pongo mis datos de la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');
if ($_POST['usuario']) {
$usuario=$_POST['usuario'];
$pass1=$_POST['pass1'];
if ($pass1==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['pass1'] != $pass1) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_usuario"] = $row['usuario'];
echo "Has sido logueado correctamente ".$_SESSION['s_usuario']." y puedes acceder al index.php.";
}
}
}
?>
Desde ya muchas gracias me están sirviendo tus consejos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas