Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jaamiro en 26 de Mayo 2012, 14:26
-
Hola a todos,
Tengo un par de dudas referente a php.
La primera sería:
Querría utilizar el php para crear un registro de usuarios a través de tablas para la web, (esto sé hacerlo), pero como se tiene que hacer para limitar el acceso a según que partes de la web a un usuario que no se haya registrado...
La segunda:
Si quiero utilizar las tablas para hacer categorias de noticias, que luego se puedan buscar por categoria por ejemplo, como lo tengo que hacer... ¿Subir a mi web las noticias a través de un formulario?
La verdad en este último tiempo he aprendido bastane php( o eso creo...) se hacer funciones... estructuras condicionales, bucles, secuenciales... pero no consigo verle la utilidad práctica a la hora de utilizarlo en la web...
-
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!
-
Gracias por responder!
Lo del cms ya lo había pensado pero lo que me gustaría es aprender bien el lenguaje y lo más importante saber aplicarlo. Luego si es más cómodo utilizar el cms.
Probare lo que me explicas y a ver si me aclaro y lo consigo. Y sobre todo a ver si consigo ver la aplicación práctica del lenguaje en la Web que ahora mismo no la veo mucho.
Otra vez gracias por contestar!!
-
jaamiro creo que estás totalmente acertado cuando planteas primero aprender bien el lenguaje... Si consigues tener una buena base luego te moverás como pez en el agua con los distintos cms o frameworks. Si no tienes una buena base todo serán dificultades, así que ánimo con el asunto.
-
Pues sí como dice Cesar Krall yo también soy de la misma opinión. Más vale aprender bien un lenguaje, aunque sea más costoso, pero asentando bién las bases y despues para trabajar o hacer algo más complejo aprender el framework en concreto donde se va a realizar las tareas.
Además si es software libre pues mejor que mejor.
Un saludo.