Foros del Web » Programando para Internet » PHP »

Problema con validación de usuarios

Estas en el tema de Problema con validación de usuarios en el foro de PHP en Foros del Web. Estimados amigos. Mi problema es el siguiente: Tengo una web con PHP y base de datos MySQL. Dentro de ella hay 3 documentos entre los ...
  #1 (permalink)  
Antiguo 09/12/2008, 09:19
 
Fecha de Ingreso: septiembre-2007
Mensajes: 50
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema con validación de usuarios

Estimados amigos.

Mi problema es el siguiente:
Tengo una web con PHP y base de datos MySQL.
Dentro de ella hay 3 documentos entre los que está el problema.

areaprivada.php
Donde se introduce usuario y contraseña y se accede a consultas.php

En consultas.php se ven una avanzadilla de los datos de cada cliente.
Si pinchamos en un cliente en concreto, accedemos a la página
datos_cliente.php
En datos_cliente.php tenemos todos los datos de ese cliente en concreto.

El documento que se genera es del tipo:
www.............../datos_cliente.php?Id=62

Si alguien teclea esa dirección en el navegador, accede directamente a esos datos.
También pasa lo mismo con consultas.php, si alguien teclea:
www........../consultas.php accede a la página sin haber puesto usuario ni contraseña.
No quiero que eso ocurra.
¿Cómo lo puedo solucionar?
Soy bastante novato en esto así que si me lo podéis explicar muy claro o aún mejor si me dais un código que deba introducir, os lo agradecería.

He intentado hacer un inicio de sesión, pero al parecer lo hago mal, porque sigue ocurriendo lo mismo.

Envío los códigos de las tres páginas:


1ª PÁGINA: areaprivada.php


<?php require_once('Connections/conexionreformas.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['usuario'])) {
$loginUsername=$_POST['usuario'];
$password=$_POST['contrase'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "consultas.php";
$MM_redirectLoginFailed = "fallo.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_conexionreformas, $conexionreformas);

$LoginRS__query=sprintf("SELECT usuario, contrase FROM usuarios WHERE usuario='%s' AND contrase='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $conexionreformas) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";

//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;

if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
..................................
........................

2ª PÁGINA: consultas.php


<?
session_start();
$_SESSION["usuario"] = $_POST["usuario"];
$_SESSION["contrase"] = $_POST["contrase"];
?>
<?php require_once('Connections/conexionconsultas.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];
?>
<?php require_once('Connections/conexionconsultas.php'); ?>
<?php
$maxRows_con = 25;
$pageNum_con = 0;
if (isset($_GET['pageNum_con'])) {
$pageNum_con = $_GET['pageNum_con'];
}
$startRow_con = $pageNum_con * $maxRows_con;

mysql_select_db($database_conexionconsultas, $conexionconsultas);
$query_con = "SELECT * FROM `general` ORDER BY Id DESC";
$query_limit_con = sprintf("%s LIMIT %d, %d", $query_con, $startRow_con, $maxRows_con);
$con = mysql_query($query_limit_con, $conexionconsultas) or die(mysql_error());
$row_con = mysql_fetch_assoc($con);

if (isset($_GET['totalRows_con'])) {
$totalRows_con = $_GET['totalRows_con'];
} else {
$all_con = mysql_query($query_con);
$totalRows_con = mysql_num_rows($all_con);
}
$totalPages_con = ceil($totalRows_con/$maxRows_con)-1;

$queryString_con = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_con") == false &&
stristr($param, "totalRows_con") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_con = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_con = sprintf("&totalRows_con=%d%s", $totalRows_con, $queryString_con);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
...................
........................

3ª PÁGINA: datos_cliente.php


<?
session_start();
$_SESSION["usuario"] = $_POST["usuario"];
$_SESSION["contrase"] = $_POST["contrase"];
?>
<?php require_once('Connections/conexionconsultas.php'); ?>
<?php
$colname_cliente = "-1";
if (isset($_GET['Id'])) {
$colname_cliente = (get_magic_quotes_gpc()) ? $_GET['Id'] : addslashes($_GET['Id']);
}
mysql_select_db($database_conexionconsultas, $conexionconsultas);
$query_cliente = sprintf("SELECT * FROM `general` WHERE Id = %s", $colname_cliente);
$cliente = mysql_query($query_cliente, $conexionconsultas) or die(mysql_error());
$row_cliente = mysql_fetch_assoc($cliente);
$totalRows_cliente = mysql_num_rows($cliente);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
............
....................
  #2 (permalink)  
Antiguo 09/12/2008, 11:54
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema con validación de usuarios

Veo que guardas dos variables de SESSION cuando haces el login de tu pagina (O por lo menos el Dreamweaver lo hace):
Código PHP:
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup
Lo unico que tienes que hacer es verificar:
Si la variable de session X esta seteada:
--Muestro la pagina
De lo contrario (cuando NO esta seteada)
--Redirijo a la pagina de logueo

http://www.php.net/manual/en/control-structures.if.php
http://www.php.net/manual/en/function.isset.php
http://www.php.net/manual/en/function.header.php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.