proteger pagina con informacion de usuarios

Iniciado por gAb1, 1 Octubre 2014, 07:11 AM

0 Miembros y 1 Visitante están viendo este tema.

gAb1

Hola, tengo una pagina que muestra informacion de un usuario. Necesito protegerla para que no se pueda acceder a ella si no se cumplen dos requisitos, 1º estar logueado y 2º ser "amigo" de ese usuario.

Utilizo $_GET para saber la informacion que coger de la base de datos.

Hago un if para saber si esta definida la variable get y si el usuario está conectado, por ultimo compruebo si son amigos.

Código (php) [Seleccionar]
<?php

if(isset($_GET['id'], $_SESSION['user_id'])){
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n"mysqli_connect_error());
exit();
}

$id $_GET['id'];
$connectedUserID $_SESSION['user_id'];

/* prepare statement */
if ($stmt $mysqli->prepare("SELECT COUNT(*) rowCount FROM friends WHERE friendID = ? AND userID = ?")) {
$stmt->bind_param('ii'$id$connectedUserID);
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($rowCount);

/* fetch values */
if($stmt->fetch()) {
if ($rowCount 0) {
// zona segura
echo 'It works!';
} else{
echo $_SESSION['username'], ', no estás autorizado para ver la información de este socio ya que no es tu amigo...';
}
}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
} else {
echo 'No estás autorizado para acceder a esta página';

if (login_check($mysqli) == false) {
echo '. Por favor, <a href="login">inicia sesión</a>.';
} else{
echo ' '.$_SESSION['username'];
}
}
?>


Me gustaría saber si es igual de seguro comprobar isset($_SESSION['user_id']) o hacer un login_check == true.

Gracias!

JorgeEMX

Cuidado al usar isset, puede arrojarte falsos positivos. Isset sólo comprueba que exista la variable y que no sea NULO. Si la variable por ejemplo contiene un string vacio te regresará true.

Por otra parte, sería bueno comparar las variables ahí mismo si son enteras y no dejarle el trabajo a msqli. Con un $var > 0 bastaría.