sistema de login para proteger archivos

Hola e creado un sistema de login solo para mi sin bases de datos
lo e probado y funciona bien pero no se si es bastante seguro que me aconsejáis para hacerlo mas seguro

para proteger paginas de una web con usuario y contraseña


<?php 
$usuario = "mi_usuario"; 
$clave = "mi_contraseña"; 
$usar_session = true; 
?> 
<form name="form" method="post" action="mi_pagina.php"> <p><label for="usuario">Usuario:</label> <br /><input type="text" title="Inserta el nombre de usuario" name="usuario" /></p> <p><label for="clave">Clave:</label> <br /><input type="password" title="Inserta tu clave" name="clave" /></p> <p><input type="submit" name="Submit" value="Acceso" /></p> </form> 
<?php 
if ($_POST['usuario'] == $usuario && $_POST['clave'] == $clave || isset($_SESSION['protegido'])) { if($usar_session) {
@session_start();
$_SESSION['protegido'] = $usuario;
}
$mostrar_contenido = true;
if (!$mostrar_contenido) {
} else {
echo "<p>Mi Zona Protegida</p>";
}
}
?> 
Hola:

Me parece bien, solo que yo guardaría la IP de cualquier intento de ingreso fallido superior a 3 (o 1, depende de ti), de esta forma podrás banear a cualquier usuario que intente hackear el sistema.
Mmm, por si te sirve de ayuda, supongo que sería algo así: (y repito el supongo jeje)
<?php

// Usuario
$usuario = "usuario";
// Contraseña
$pass = "pass";
// True para restringir el contenido con usuario || False para autorizar el contenido sin usuario
$restringido = true;
@session_start();
if($restringido && isset($_SESSION["conectado"])){

if(!$_POST){
echo "<form method='post' action='page.php'><input type='text' name='usuario' value='Nombre de usuario' /><br /><input type='password' name='pass' value='Contraseña' /><br /><button type='submit'>Conectar</button></form>";
} else {

$usuario_introducido = strip_tags($_POST["usuario"]);
$pass_introducida = strip_tags($_POST["pass"]);
$ip = $_SERVER["REMOTE_ADDR"];
$intentos = 0;
// Número máximo de intentos
$max_intentos = 3;

if($usuario_introducido == $usuario && $pass_introducida == $pass && $intentos < $max_intentos){
$_SESSION["conectado"] = $usuario;
} else {
$intentos = $intentos + 1;
if($intentos < $max_intentos){
echo "Usuario o contraseña incorrectos. Te quedan $intentos intentos.";
return false;
} else {
// Aquí es donde habría que bloquear la IP
echo "Has superado el máximo número de intentos";
return false;
}
}

}

}

?>

No lo he probado y lo he hecho rápido, pruébalo a ver qué tal :D
después de estar estudiando un poco el tema de vanear una ip creo que no es la mejor opción pero eso es muy largo de contar el porque, entonces e decidido no vanear si no mas bien broquear, como solo es para mi e creado este pequeño código que en las paginas que lo tenga como por ejemplo archivos reservados pues no dejara entrar a nadie solo a mi ip poniendo la ip no dinámica, el código es este, código para bloquear ip,s,

en realidad desde mi ordenador no lo puedo probar porque es la ip que tengo puesta, pero con un teléfono mobil o desde la biblioteca publica si y saber si funciona y me bloquea


<?php 
$mi_ip = 'aqui_iria_mi_ip_no_dinamica'; 
$mi_ip = $_SERVER['REMOTE_ADDR']; 
$_SERVER = true; 
$mi_ip = true; 
if (!$mi_ip = $_SERVER) { 
$a = $_SERVER = false; 
$b = $mi_ip = false; 
$c = $a == $b; 
if (!$c) { 
} else { 
echo "Adios no puedes estar aqui."; 
echo '<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://mi-url-web"/>'; 
} 
} 
?>
Me parece bien, pero ten en cuenta que $mi_ip = '....' es sobre escrito por $mi_ip = $_SERVER['remote_addr'] y luego se vuelve a sobre escribir en $mi_ip = true. Luego, en el primer if estas haciendo una asignación y no una pregunta:

if(! $mi_ip = $_SERVER)...

Lo correcto sería:

if( ! $mi_ip == $_SERVER )...

Igualmente, no logro entender por qué sobre escribes la variable $mi_ip 3 veces :P. Según mi lógica, lo correcto es esto:

$mi_ip = '0.0.0.0';
$rem   = $_SERVER['REMOTE_ADDR'];

if( $rem == $mi_ip ) {
  // Eres tú y muestras el contenido protegido
} else {
  header( 'Location: http://mi-url-web' );
}
Hola skaparate te respondo a tu pregunta porque soy un novato y lo hice así por encima normalmente cuando hago algo después lo voy puliendo pero este no lo hice, pero básicamente es eso que soy un novato y me falta muchísimo que aprender por ejemplo con lo que tu me dices ya aprendo a que hay cosas que no hacen falta no estoy acostumbrado a crear scripts ni a programar y esto para real izarlo correctamente me llevara algún tiempo, muchas gracias por toda tu ayuda y un saludo
Ah, pensé que lo habías hecho tú :P. Todos partimos por algún lado, así que sigue aprendiendo no más :).
skaparate sobre esto que puse arriba no me esprique bien

este script si que lo hice yo lo que no hice fue quitarle lo que no hace falta al ser novato boy lentamente aprendiendo poco a poco y es es lo que no hice

este es el malentendido 'pero este no lo hice,' un saludo
Bueno ya esta terminado el script y funciona perfectamente
gracias skaparate y Doodleo

con header no saca las ip,s y da error en otros ordenadores por eso puse meta http equiv refresh y funciona bien un saludo

<?php
$mi_ip = 'Mi ip';
$rem   = $_SERVER['REMOTE_ADDR'];
if( $rem == $mi_ip ) {
} else {
echo '<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://url web"/>';
}
$usuario = "usuario"; 
$clave = "contraseña"; 
$usar_session = true;
?> 
<form name="form" method="post" action="url.php"> 
<p><label for="usuario">Usuario:</label> <br /><input type="text" title="Inserta el nombre de usuario" name="usuario" /></p> <p><label for="clave">Clave:</label> <br /><input type="password" title="Inserta tu clave" name="clave" /></p> <p><input type="submit" name="Submit" value="Acceso" /></p> 
</form> 
<?php 
if ($_POST['usuario'] == $usuario && $_POST['clave'] == $clave || isset($_SESSION['protegido'])) { if($usar_session{
@session_start();
$_SESSION['protegido'] = $usuario;
}
$mostrar_contenido = true;
if (!$mostrar_contenido) {
} else {
echo "<p>Mi zona protegida</p>";
}
}
?>