Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/09/2009, 23:24
kaiseer
 
Fecha de Ingreso: septiembre-2009
Mensajes: 86
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Como hacer para autentificar usuario y restringir paginas con PHP???

Hola a todos..!! Este es mi primer tema y espero puedan ayudarme

Les explico con detalles:
Desde mas de 6 meses he estado intentando crear una pagina web con registro de usuarios, esto me costo bastante pero luego de buscar como loco tutoriales , explicaciones y ejemplos al fin logre crear la base de datos con Mysql y php y el registro de usuarios que al parece ha quedado bien.

Ese fue el primer obstáculo, "la creacion o registro de usuarios", (que me costo un mundo jeje!) ahora busco dos cosas:

1. Que se reconozca en todas las paginas al usuario, saludandolo con su nombre y apellido, como "Bienvenido Kaiseer" o "Bienvenido Visitante" en caso de no haber iniciado sesión.

y 2. Quisiera colocar 3 paginas (una planilla, y otras dos pags. con descargas) sólo para usuarios registrados. En la que, en caso de querer entrar y no haber iniciado sesion o registrado, aparezca una pagina diciendo que esta restringiga para visitantes, que registre o ingrese en caso de ya estar registrado.

Al parecer ya tengo gran parte, pues como verán (en los codigos) ya tengo el login.php que tiene los campos 'login' y 'password' para entrar. Luego que se entra (con usuario y contraseña correcta) efectivamente me lleva a user.php (pagina a la que se va al reconocer el usuario y la contraseña en la base de datos)y me sale lo que esta predeterminado Bienvenido 'no se quien'.. tu nick es 'no se que cosa'

Mi problema es que -como no se casi de nada de php y es un milagro haber llegado a donde estoy, jeje- no tengo la menor idea de como hacer que en todas las demas paginas que se abran luego del ingreso salga el "saludo personalizado" y que se tenga el acceso libre a todas las paginas; y al mismo tiempo un codigo para restringir ciertas paginas a los visitantes que no se han registrado o ingresado. (disculpen por escribir tanto paginas..!!! ) Es decir, que se guarde la informacion del ingreso y este por un tiempo hasta que cierre la sesión o esta expire..

BUeno ahora si les muestro los codigos:

Primero les muestro los de registro, por si akso..!!

este es el crea_usuarios.php (la "action" del formulario que cree)

<?
include("conexion.php"); /*Aqui la conexion*/
/*Recibimos las variables por el metodo POST*/
$login = $_POST['login'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
$nombre= $_POST['nombre'];
$apellido= $_POST['apellido'];
$pais= $_POST['pais'];
$estado= $_POST['estado'];
$edad= $_POST['edad'];
$email = $_POST['email'];
/*Hacemos la consulta */

$query="SELECT * FROM usuarios WHERE login='$login'";
$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)){
header ("location: usuario_registrado.htm");
} else {
mysql_free_result($result);
/* Ahora comprovamos que los dos pass coinciden */
if($pass1!=$pass2) {
header ("Location: contra_no_coinciden.htm");
echo 'Clica <a href="registro.htm">aquí</a> para volver al formulario';
} else {
$pass1=crypt($pass2, "semilla");
/* Encripatmos el password, con la clave "semilla" */
$query="INSERT INTO usuarios (login, nombre, apellido, pais, estado, password, edad, email) VALUES ('$login','$nombre','$apellido', '$pais', '$estado', '$pass1', '$edad','$email')";
$result=mysql_db_query($database,$query,$link);
if(mysql_affected_rows($link)){
header ("Location: registro_exitoso.htm");
} else {
echo "Error introduciendo el usuario";
} /* Cierre del else */
} /* Cierre del else que corresponde a if(mysql_affected_rows.....) */
} /* Cierre del else que corresponde a if(mysql_num_rows...) */
?>


Con eso esta listo.. el registro funciona re-bien

Ahora el ingreso de usuarios..!

Primero el comprueba.php, que es la action del form "login"

<?
session_start();

include("conexion.php");

$login = $_POST['login'];
$pass = $_POST['pass'];

$query="SELECT * FROM usuarios WHERE login='$login'";

$link=mysql_connect($server,$dbuser,$dbpass);
$result=mysql_db_query($database,$query,$link);
if(mysql_num_rows($result)==0){
header ("location: usuario_incorrecto.htm");
} else {
$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){

$_SESSION["login"]=$login;
$_SESSION["nombre"]=$array["nombre"];
header("location:user.php");

} else {
header ("location: contra_incorrecta.htm");
}
}

?>


Luego el login.php que es para el ingreso

<?
session_start();
if(isset($SESSION)){
header("location: home.htm"); /* Si ha iniciado la sesion, vamos a user.php */
} else {
/* Cerramos la parte de codigo PHP porque vamos a escribir bastante HTML es mas cómodo así que metiendo echo's */
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Identificaci&oacute;n </title>
</head>
<body>
<form action="comprueba.php" method="POST" class="login">
<p align="center"><b><font face="Trebuchet MS" color="#FFFFFF" size="2">Nombre
de usuario:</font></b> <input type="text" name="login" size="18"></p>
<p><b><font face="Trebuchet MS" size="2" color="#FFFFFF">Contraseña:</font></b>
<input type="password" name="pass" size="18"><br>
&nbsp;</p>
<div style="position: absolute; width: 43px; height: 21px; z-index: 1; left: 38px; top: 115px" id="capa75">
<input type="submit" value="Entrar" class="boton"></div>
</form></body></html>
<?
} /* Y cerramos el else */
?>



Finalmente tengo el User.php, que es al que voy cuando el login es correcto


<?
session_start();
if(!isset($_SESSION)){
header("location:login.php");
} else {


echo "<html><body>";
echo "<strong><font align='center' color='white' size='3' face='Trebuchet MS'>¡Hola! <strong></font><br>";
echo $_SESSION["nombre"]." ";
echo "</strong><font color='white' size='3' face='Trebuchet MS'><br>Tu nick: <strong><br></font> ";
echo $_SESSION["login"];
echo "<font color='white' size='3' face='Trebuchet MS'></strong><br> Bienvenido</font>";
echo "</body></html>";
}
?>

En conclusion.. ¿que hago para que se reconozca a un usuario en todas las paginas luego del ingreso? y ¿como restrinjo a los visitantes en ciertas paginas, haciendolas solo disponibles para usuarios?

Esto es todo, segun lo que he leido (si es que he entendido algo) al parecer hacen falta cookies o sessions.. yo que se..!! Pero cuento con su aporte..! han sido largos estos ultimos meses porque no he dado con la solucion!!

Me ha fascinado Foros del Web, espero puedan entender lo que necesito..!!

GraciAssS!!