Hola jaamiro, verás, php tiene mucha utilidad y mucho potencial, pero muchas veces lo que se hace es no partir de cero. Por ejemplo, si partes de un cms instalado como joomla o de un framework como codeigniter tienes mucho trabajo adelantado que no tienes que codificar. De todas formas para aprender es bueno que uno mismo codifique las cosas por lo menos una vez, por ejemplo lo que comentas del registro de usuarios, aunque luego ya pases a utilizar un cms o framework y tú no tengas que codificarlo.
Te trato de orientar sobre el tema de limitar el acceso a partes de tu web.
Primera cuestión: necesitas una página o formulario de logado. En esa página un formulario se encargará de recoger los campos que pasarás por post a otra página, por ejemplo txtUserName representaría el nombre de usuario y txtPassword representaría el password que recoges a través del formulario.
El formulario puede tener un encabezado así:
<form method="post" name="frmLogin" id="frmLogin" action="<?php echo $_SERVER['PHP_SELF'] ?>">La variable predefinida de PHP $_SERVER['PHP_SELF'] retorna el valor del nombre de archivo del código PHP que se esté ejecutando actualmente, relativo a la raiz del sitio. Entonces si estoy visualizando a
http://www.misitio.com/index.php la variable $_SERVER['PHP_SELF'] me arrojará /index.php.
Ahora en cabecera de ese archivo php donde tienes el logado tendrás algo así:
<?php
require 'dbconnect.php';
require 'library/functions.php';
$errorMessage = ' ';
if (isset($_POST['txtUserName'])) {
$result = doLogin();
if ($result != '') {
$errorMessage = $result;
}
}Si existe un valor de UserName llamas a una función doLogin() que es la que se encarga de verificar el logado, si no existe, no haces nada (muestras un espacio en blanco).
Ahora en la función doLogin() tienes que recibir por $_POST el nombre de usuario y password y hacer un chequeo con la base de datos para ver si ese nombre de usuario y password son correctos.
Si resultan correctos, te creas variables de sesión donde almacenas por ejemplo el nombre de usuario y su id (el usuario en la tabla de usuarios tendrá un ID):
$_SESSION['name'] = $row['usuario'];
$_SESSION['web_user_id'] = $row['idusuario'];Finalmente, en una página con acceso restringido lo primero que debes hacer es chequear si el usuario puede acceder a esa página por ejemplo con una función checkUser();
<?php
include 'library/functions.php';
checkUser();La función checUser() será algo así:
function checkUser(){
// cierra la sesion
if (isset($_GET['logout'])) {
doLogout();
}
// Si user_id no esta definido, redirecciona a login
if (!isset($_SESSION['web_user_id'])) {
header('Location: login.php');
exit;
}
}Si no existe la variable de sesión que se crea cuando un usuario se loga, se manda a la página de logado (por ejemplo login.php) de modo que el usuario no puede ver el contenido de ese archivo.
Te recomiendo que vayas paso por paso y hagas pruebas sencillas porque si no te vas a liar. Suerte!