PHP - Sesiones en PHP (con SQL)

   
Vista:
Imágen de perfil de Alejo Javier

Sesiones en PHP (con SQL)

Publicado por Alejo Javier alee_casta_95@hotmail.com (1 intervención) el 01/07/2015 21:27:23
Buenas a Todos!

Tengo unos codigos parecidos a los que pongo aqui a continuacion.
Son un inicio de sesion basico (creo) consultando los datos ingresados con una base de datos.

Formulario
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action="validar_usuario.php" method="post">
 <table>
  <tr>
   <td>Usuario:</td>
   <td><input name="admin" required="required" type="text" /></td>
  </tr>
  <tr>
   <td>Password:</td>
   <td><input name="password_usuario" required="required" type="password" /></td>
  </tr>
  <tr>
   <td colspan="2"><input name="iniciar" type="submit" value="Iniciar Sesión" /></td>
  </tr>
</table>
</form>


Validar_usuario.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
/*
**establecemos conexion con el servidor.
**nombre del servidor: localhost.
**Nombre de usuario: root.
**Contraseña de usuario: root.
**Si la conexion fallara mandamos un msj 'ha fallado la conexion'*/
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
 
/*Luego hacemos la conexión a la base de datos. 
**De igual manera mandamos un msj si hay algun error*/
mysql_select_db('db_blog')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 
/*caturamos nuestros datos que fueron enviados desde el formulario mediante el metodo POST
**y los almacenamos en variables.*/
$usuario = $_POST["admin"];
$password = $_POST["password_usuario"];
 
/*Consulta de mysql con la que indicamos que necesitamos que seleccione
**solo los campos que tenga como nombre_administrador el que el formulario
**le ha enviado*/
$result = mysql_query("SELECT * FROM administradores WHERE nombre_administrador = '$usuario'");
 
//Validamos si el nombre del administrador existe en la base de datos o es correcto
if($row = mysql_fetch_array($result))
{
//Si el usuario es correcto ahora validamos su contraseña
 if($row["password"] == $password)
 {
  //Creamos sesión
  session_start();
  //Almacenamos el nombre de usuario en una variable de sesión usuario
  $_SESSION['usuario'] = $usuario;
  //Redireccionamos a la pagina: index.php
  header("Location: index.php");
 }
 else
 {
  //En caso que la contraseña sea incorrecta enviamos un msj y redireccionamos a login.php
  ?>
   <script languaje="javascript">
    alert("Contraseña Incorrecta");
    location.href = "login.php";
   </script>
  <?
 
 }
}
else
{
 //en caso que el nombre de administrador es incorrecto enviamos un msj y redireccionamos a login.php
?>
 <script languaje="javascript">
  alert("El nombre de usuario es incorrecto!");
  location.href = "login.html";
 </script>
<?
 
}
 
//Mysql_free_result() se usa para liberar la memoria empleada al realizar una consulta
mysql_free_result($result);
 
/*Mysql_close() se usa para cerrar la conexión a la Base de datos y es 
**necesario hacerlo para no sobrecargar al servidor, bueno en el caso de
**programar una aplicación que tendrá muchas visitas ;) .*/
mysql_close();
?>


Index.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//creamos la sesion
session_start();
//validamos si se ha hecho o no el inicio de sesion correctamente
//si no se ha hecho la sesion nos regresará a login.php
if(!isset($_SESSION['usuario']))
{
  header('Location: login.php');
  exit();
}
 ?>
  <h1>BIENVENIDO</h1>
  <a href="logout.php">Cerrar Sesión</a>
 <?
?>


Logout.php:
1
2
3
4
5
6
7
8
9
10
<?php
 //Crear sesión
 session_start();
 //Vaciar sesión
 $_SESSION = array();
 //Destruir Sesión
 session_destroy();
 //Redireccionar a login.php
 header("location: login.php");
?>


Lo que yo planeo hacer con es que una persona que inicie sesion pueda generar modificaciones sobre la pagina web (la pagina web trataria de shows de espectaculos de una empresa vendedora de entradas para estos, y la persona que inicia sesion, por ejemplo, podria agregar modificar o eliminar algun evento desde la pagina web; pero no ahondo mucho en eso porque no creo que sea necesario).

Mi consulta sobre lo que quiero hacer es: cuando la persona inicia sesion correctamente, como hago para agregar en la pagina web opciones que solo las personas con sesiones iniciadas deberian poder ver? O tengo que usar otra pagina que sea identica a la original pero que admita generarle cambios? O deberia ser una sola pagina que tenga a la vista la posibilidad de generar los cambios pero que si se le hace clic compruebe si hay una sesion iniciada?

Que me conviene hacer? Como convendria hacerlo?

Desde ya, gracias!
Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Sesiones en PHP (con SQL)

Publicado por xve (5520 intervenciones) el 02/07/2015 08:15:26
Hola Alejo, la manera correcta, es una vez el usuario se ha logeado, creas una cookie con un token, que identifica a ese usuario. Un token es simplemente una cadena de caracteres sin sentido, que tienes guardado en la base de datos y quela validas contra la cookie del usuario.... De esta manera, sabes si esta el usuario logeado y validado.

Hay un código muy bueno que te servira:
http://www.lawebdelprogramador.com/codigo/PHP/2112-Gestion-de-una-administracion-Web.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar