Foros del Web » Programando para Internet » PHP »

bloquear formularios externos con php.

Estas en el tema de bloquear formularios externos con php. en el foro de PHP en Foros del Web. hola, pues quiero k si un usuario, guarda un formulario de mi web(por ejemplo el de login) y intenta conectarse desde ese form que tiene ...
  #1 (permalink)  
Antiguo 27/06/2009, 17:36
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta bloquear formularios externos con php.

hola, pues quiero k si un usuario, guarda un formulario de mi web(por ejemplo el de login) y intenta conectarse desde ese form que tiene guardado en su pc local, cuando lo envie al script que lo procesa: (http://miweb.com/login.php) le aparezca un texto avisandole de que tiene que conectarse desde la propia web.

he guardado en mi equipo la pagina de login de gmail y cuando eh introducido los datos en ese formulario y los envio, en gmail.com me avisa de que no se pueden enviar los datos externamente, se puede hacer sto con php..


espero haberme explicado bn.

muchas gracias.

saludos
  #2 (permalink)  
Antiguo 27/06/2009, 17:46
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: bloquear formularios externos con php.

Una posible solucion es que en ese script verificaras que el usuario estubiera logueado ultilizando sessiones de usuario.
  #3 (permalink)  
Antiguo 27/06/2009, 18:24
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Respuesta: bloquear formularios externos con php.

hola gracias por responder..
ya compruebo con este codigo si esta logeado.

Código PHP:
<?php  @session_start();

if (isset(
$_SESSION['usuario']))
    {
        echo 
"bienvenido  usted esta logeado";
        echo 
"<form action='logout.php?hash=$key_logout' method='post'>
            <tr>
                <th><input type='submit' value='salir'></tr>
            </tr>
        </form>"
;

    }
else {

    echo 
"usted no esta autentificado.";
   

 echo 
"<td>";
}


?>
lo que quiero es que el script no procese un form si viene externamente.
yo visito www.miweb.com/conexion.php (k contiene un form para el usuario y contraseña) este se envia a www.miweb.com/login.php (k lo procesa) entoncs se haria todo correcto,xro si viene el form de www.otraweb.com/ nose procesen los datos.

podria hacer por cookies o sessiones ?¿
espero haberme explicado bn.

gracias de antemano.
  #4 (permalink)  
Antiguo 27/06/2009, 18:44
Avatar de MilkZoft  
Fecha de Ingreso: junio-2009
Ubicación: Colima, México
Mensajes: 35
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: bloquear formularios externos con php.

Hola Waty90, hice el siguiente código espero y te sirva, el chiste es verificar el Referer de donde proviene la visita, si no es algúno de los que defines, pues no le autoriza el acceso.

Un Saludo!

Código PHP:
<?php

function Referers($Referer) {
    if(
count($Referer) > 0) {
        
$Tmp  explode("/"getenv("HTTP_REFERER"));
        
$Ref  $Tmp[2];
        
$Flag false;
        
        if(
$Ref == null) {
            
$Ref $_SERVER['HTTP_REFERER'];
            list(
$Quitar$Sp)    = split('//'$Ref2);
            list(
$Principal$Sp) = split('/',  $Sp,  2);
            
$Ref $Principal;
        }
        
        for(
$i 0$i count($Referer) - 1$i++) {
            if(
eregi($Referer[$i], $Ref)) $Flag true;            
        }    
        
        if(
$Ref == null or $Flag == false) return false;
        else return 
true;
    }
}


if(
Referers(array('www,milkzoft,com''www,milkzoft,com/''milkzoft,com')) == false) die("Error: Acceso no autorizado");
else echo 
'Acceso autorizado';

?>
NOTA: en el array, en vez de puntos puse comas, por que no me permitía publicarlas, un saludo!
  #5 (permalink)  
Antiguo 28/06/2009, 04:26
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Respuesta: bloquear formularios externos con php.

Cita:
Iniciado por MilkZoft Ver Mensaje
Hola Waty90, hice el siguiente código espero y te sirva, el chiste es verificar el Referer de donde proviene la visita, si no es algúno de los que defines, pues no le autoriza el acceso.

Un Saludo!

Código PHP:
<?php

function Referers($Referer) {
    if(
count($Referer) > 0) {
        
$Tmp  explode("/"getenv("HTTP_REFERER"));
        
$Ref  $Tmp[2];
        
$Flag false;
        
        if(
$Ref == null) {
            
$Ref $_SERVER['HTTP_REFERER'];
            list(
$Quitar$Sp)    = split('//'$Ref2);
            list(
$Principal$Sp) = split('/',  $Sp,  2);
            
$Ref $Principal;
        }
        
        for(
$i 0$i count($Referer) - 1$i++) {
            if(
eregi($Referer[$i], $Ref)) $Flag true;            
        }    
        
        if(
$Ref == null or $Flag == false) return false;
        else return 
true;
    }
}


if(
Referers(array('www,milkzoft,com''www,milkzoft,com/''milkzoft,com')) == false) die("Error: Acceso no autorizado");
else echo 
'Acceso autorizado';

?>
NOTA: en el array, en vez de puntos puse comas, por que no me permitía publicarlas, un saludo!

MilkZoft gracias por el codigo, pero no logro hacer k me funcione.


eh cambiado las (,) por (.) en le array y he guardado el archivo como acceso.php he puesto un link en mi pagina principal a acceso.php.

pero aparece el mensaje, acceso autorizado de todas formas.


nose si falta algo mas..

muxas gracias por tu ayuda.

Código PHP:
<?php

function Referers($Referer) {
    if(
count($Referer) > 0) {
        
$Tmp  explode("/"getenv("HTTP_REFERER"));
        
$Ref  $Tmp[2];
        
$Flag false;
        
        if(
$Ref == null) {
            
$Ref $_SERVER['HTTP_REFERER'];
            list(
$Quitar$Sp)    = split('//'$Ref2);
            list(
$Principal$Sp) = split('/',  $Sp,  2);
            
$Ref $Principal;
        }
        
        for(
$i 0$i count($Referer) - 1$i++) {
            if(
eregi($Referer[$i], $Ref)) $Flag true;            
        }    
        
        if(
$Ref == null or $Flag == false) return false;
        else return 
true;
    }
}


if(
Referers(array('http://www.mundoloko.es/''www.milkzoft.com/''milkzoft.com')) == false) die("Error: Acceso no autorizado");
else echo 
'Acceso autorizado';

?>
  #6 (permalink)  
Antiguo 28/06/2009, 10:08
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: bloquear formularios externos con php.

En un array cada elemento se separa con una coma ( , ) y no con el punto que le colocas.
  #7 (permalink)  
Antiguo 28/06/2009, 10:37
Avatar de MilkZoft  
Fecha de Ingreso: junio-2009
Ubicación: Colima, México
Mensajes: 35
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: bloquear formularios externos con php.

Efectivamente, es ocmo dice el compañero ACOEVIL, las comas solamente las puse en la dirección url, pero tu cambiaste tambien las comas de la separación de cada elemento del array, simplemente, ponle las comas en vez de los puntos (al array no a la URL). y listo.
  #8 (permalink)  
Antiguo 29/06/2009, 08:12
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: bloquear formularios externos con php.

Cita:
Iniciado por MilkZoft Ver Mensaje
Efectivamente, es ocmo dice el compañero ACOEVIL, las comas solamente las puse en la dirección url, pero tu cambiaste tambien las comas de la separación de cada elemento del array, simplemente, ponle las comas en vez de los puntos (al array no a la URL). y listo.
sigue sin funcionar he añadido las comas:

y eh puesto un enlace en la pagina principal a referer.php donde esta este script pero sigue poniendo acceso no autorizado..

estoy haciendo algo mas mal?¿


gracias


Código PHP:
<?php

function Referers($Referer) {
    if(
count($Referer) > 0) {
        
$Tmp  explode("/"getenv("HTTP_REFERER"));
        
$Ref  $Tmp[2];
        
$Flag false;
        
        if(
$Ref == null) {
            
$Ref $_SERVER['HTTP_REFERER'];
            list(
$Quitar$Sp)    = split('//'$Ref2);
            list(
$Principal$Sp) = split('/',  $Sp,  2);
            
$Ref $Principal;
        }
        
        for(
$i 0$i count($Referer) - 1$i++) {
            if(
eregi($Referer[$i], $Ref)) $Flag true;            
        }    
        
        if(
$Ref == null or $Flag == false) return false;
        else return 
true;
    }
}


if(
Referers(array('http://www.mundoloko.es/''www.milkzoft.com/''milkzoft.com')) == false) die("Error: Acceso no autorizado");
else echo 
'Acceso autorizado';

?>
  #9 (permalink)  
Antiguo 29/06/2009, 08:56
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: bloquear formularios externos con php.

Tambien algo asi:
Código PHP:
function generateFormToken($formName)
{
  
$token md5(uniqid(microtime(), true));
  
$_SESSION[$formName.'_token'] = $token;
  return 
$token;
}

function 
verifyFormToken($formName)
{
  
$index $formName.'_token';
  
// There must be a token in the session
  
if (!isset($_SESSION[$index])) return false;
  
// There must be a token in the form
  
if (!isset($_POST['token'])) return false;
  
// The token must be identical
  
if ($_SESSION[$index] !== $_POST['token']) return false;
  return 
true;

y luego en el formulario:
Código PHP:

$newToken 
generateFormToken('loginForm');
  ... 
Display Form ...
echo 
"<input type='hidden' name='token' value='$newToken'>";
  ... 
Rest of Form ... 
y en la action:
Código PHP:
if (!verifyFormToken('loginForm')) {
  die(
'CSRF Attack detected OR External form processing detected');
}
... 
Form Processing ... 
Esto es muy bueno porque es una manera funcional y general para bloquear tambien CSRF ataques.
Chao!
  #10 (permalink)  
Antiguo 29/06/2009, 16:31
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Respuesta: bloquear formularios externos con php.

joer, no consigo que me funcione.

podrias ponerme un ejemplo por favor?¿

yo he echo esto:

tengo 2 archivos login-form.php , login-action.php.

en los 2 eh puesto la funcion que me has dao..


Código PHP:
function generateFormToken($formName)
{
  
$token md5(uniqid(microtime(), true));
  
$_SESSION[$formName.'_token'] = $token;
  return 
$token;
}

function 
verifyFormToken($formName)
{
  
$index $formName.'_token';
  
// There must be a token in the session
  
if (!isset($_SESSION[$index])) return false;
  
// There must be a token in the form
  
if (!isset($_POST['token'])) return false;
  
// The token must be identical
  
if ($_SESSION[$index] !== $_POST['token']) return false;
  return 
true;

en login-form.php eh puesto esto:

Código PHP:
$newToken generateFormToken('loginForm');

####mi formulario####


echo "<input type='hidden' name='token' value='$newToken'>"
y en login-action.php esto:

Código PHP:
if (!verifyFormToken('loginForm')) {
  die(
'CSRF Attack detected OR External form processing detected');

y no funciona por que siempre aparece :CSRF Attack detected OR External form processing detected

gracias por su ayuda..
saludos
  #11 (permalink)  
Antiguo 30/06/2009, 01:18
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: bloquear formularios externos con php.

Mira si has puesto esta linea:
echo "<input type='hidden' name='token' value='$newToken'>";
dentro del formulario, o sea tienes que pasar esa variable hidden junta a todas las otras variables del formulario, por ejemplo
Código PHP:
echo "<form method=\"post\" action=\"login-action.php\">";
echo 
"<input type='hidden' name='token' value='$newToken' />";
echo 
"<input type=\"text\" name=\"username\" />";
echo 
"<input type=\"password\" name=\"password\" />";
echo 
"</form>"
Otra cosa podria ser la sesion, mira si la tienes inizializada en cada archivo, o sea al principio de cada file tienes que haber
session_start();
Hazme saber... ciao!
  #12 (permalink)  
Antiguo 30/06/2009, 08:43
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Respuesta: bloquear formularios externos con php.

Cita:
Iniciado por abidibo Ver Mensaje
Mira si has puesto esta linea:
echo "<input type='hidden' name='token' value='$newToken'>";
dentro del formulario, o sea tienes que pasar esa variable hidden junta a todas las otras variables del formulario, por ejemplo
Código PHP:
echo "<form method=\"post\" action=\"login-action.php\">";
echo 
"<input type='hidden' name='token' value='$newToken' />";
echo 
"<input type=\"text\" name=\"username\" />";
echo 
"<input type=\"password\" name=\"password\" />";
echo 
"</form>"
Otra cosa podria ser la sesion, mira si la tienes inizializada en cada archivo, o sea al principio de cada file tienes que haber
session_start();
Hazme saber... ciao!

he iniciado la sesion en login-form.php y login-action.php

y en el index.php que carga todos los archivos.

ejem: index.php?seccion=login


nose si , dejarlo y buscar otra manera de hacerlo.
por que esto me ralla muxo el coco.

voy a seguir intentando a ver que consigo..

si hay otra forma mas sencilla de hacer esto?

gracias por vuestra ayuda> abidillo,mikelsoft etc..

y a todos en general. jejej.

saludos
  #13 (permalink)  
Antiguo 30/06/2009, 09:23
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: bloquear formularios externos con php.

Hola pon el codigo del formulario si puedes, (todo)
  #14 (permalink)  
Antiguo 30/06/2009, 15:11
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Respuesta: bloquear formularios externos con php.

formulario login-form.php:

Código PHP:
<h1>conexion </h1>

<
form id="loginForm" name="loginForm" method="POST" action="login-action.php">

<
table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
    <
tr>
      <
td width="112"><b>nombre de usuario</b></td>
      <
td width="188"><input name="login" type="text" class="textfield" id="login" /></td>
    </
tr>
    <
tr>
      <
td><b>clave</b></td>
      <
td><input name="password" type="password" class="textfield" id="password" /></td>
    </
tr>
    <
tr>

      <
td>&nbsp;</td>
      <
td><input type="submit" name="Submit" value="entrar" /></td>
    </
tr>
</
table>
</
form>
   
         
        </
div


y el archivo que procesa el login: login-action.php


Código PHP:
<?

//Include database connection details
    
require_once('conf.db.php');
    
    
//Array de errores
    
$errmsg_arr = array();
    
    
//Validation error flag
    
$errflag false;
    
    
//Connect to mysql server
    
$link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    }
    
    
//Function to sanitize values received from the form. Prevents SQL injection
    
function clean($str) {
        
$str = @trim($str);
        if(
get_magic_quotes_gpc()) {
            
$str stripslashes($str);
        }
        return 
mysql_real_escape_string($str);
    }
    

    
//limpiar las variables
    
$login clean($_POST['login']);
    
$password clean($_POST['password']);
    
    
//Input Validations
    
if($login == '') {
        
$errmsg_arr[] = 'Login no valido';
        
$errflag true;
    }
    if(
$password == '') {
        
$errmsg_arr[] = 'error introduzca contraseña';
        
$errflag true;
    }
    
    
//si hay un error en los datos ingresados volver al form
    
if($errflag) {
        
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        
session_write_close();
        
header("location: login-form.php");
        exit();
    }
    
    
//Create query
    
$qry="SELECT * FROM usuarios WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    
$result=mysql_query($qry);
    
    
//Check whether the query was successful or not
    
if($result) {
        if(
mysql_num_rows($result) == 1) {
            
//Login correcto
            
session_regenerate_id();
            
$member mysql_fetch_assoc($result);
            
$_SESSION['SESS_USERID'] = $usuario['user_id'];
            
$_SESSION['SESS_FIRST_NAME'] = $usuario['firstname'];
            
$_SESSION['SESS_EMAIL'] = $usuario['email'];
                                                
$_SESSION['SESS_EDAD'] = $usuario['edad'];
        

        
session_write_close();
header("location: conectado.php");
            exit();
        }else {
            
//Login fallido
            
header("location: login-error.php");
            exit();
        }
    }else {
        die(
"Query failed");
    }
?>
  #15 (permalink)  
Antiguo 30/06/2009, 23:29
Avatar de MilkZoft  
Fecha de Ingreso: junio-2009
Ubicación: Colima, México
Mensajes: 35
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: bloquear formularios externos con php.

Hola waty, se me ocurre una manera más sencilla de hacerlo (no se porque no se me ocurrio antes), simplemente en tu archivo raíz (el que incluye los demás), crea una constante y en los demás archivos pregunta si esta inicializada, con esto obligas a que afuerzas tengan que entrar desde tu web, de lo contrario les marcara un error.

algo así:

index.php:
Código PHP:
<?php
define
("ACCESS"true);

include 
"formulario.php";
.....
?>
formulario.php
Código PHP:
<?php
if(!defined("ACCESS")) die("Error: Acceso no autorizado"));

echo 
'<form...';

?>
Eso no falla, saludos!
  #16 (permalink)  
Antiguo 01/07/2009, 01:22
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 6 meses
Puntos: 49
Respuesta: bloquear formularios externos con php.

los complicaron mucho creo yo, la idea del referer es buena pero solo haciendo un if estaria bien.....

digamos en tu pagina donde procesas pones
Código php:
Ver original
  1. $referido = $_SERVER['HTTP_REFERER'];
  2.  
  3. if (($referido == "http://www.tuweb.com/admin/") OR ($referido == "http://www.tuweb.com/admin/index.php"))
  4. {
  5. //procesamos los datos
  6. }
  7. else
  8. {
  9. //con un header location lo enviamos a una pagina de error.....
  10. }

y eso seria todo, ahora me puse en el caso de que entran por alguna pagina llamada"carpeta" admin, tanto ruta / como si pusieras index.php o como se llame tu archivo....
asi si tratan de entrar de otra parte localhost etc.. con otro nombre de archivo no podrán, saludos...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #17 (permalink)  
Antiguo 01/07/2009, 01:49
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 10 meses
Puntos: 7
Respuesta: bloquear formularios externos con php.

Yo lo haria mas o menos asì (claro que si solo te interesa bloquear quien llega de fuera es demasiado, pero tambien es un buen metodo por hacking ataques)

formulario:
Código PHP:
<?php
function generateFormToken($formName)
{
  
$token md5(uniqid(microtime(), true));
  
$_SESSION[$formName.'_token'] = $token;
  return 
$token;
}

$newToken generateFormToken('loginForm');
?>
<h1>conexion </h1>

<form id="loginForm" name="loginForm" method="POST" action="login-action.php">
<input type="hidden" name="token" value="<?php echo $newToken ?>">
<table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <td width="112"><b>nombre de usuario</b></td>
      <td width="188"><input name="login" type="text" class="textfield" id="login" /></td>
    </tr>
    <tr>
      <td><b>clave</b></td>
      <td><input name="password" type="password" class="textfield" id="password" /></td>
    </tr>
    <tr>

      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="entrar" /></td>
    </tr>
</table>
</form>
action-login.php:

Código PHP:
<?php
function verifyFormToken($formName)
{
  
$index $formName.'_token';
  
// There must be a token in the session
  
if (!isset($_SESSION[$index])) return false;
  
// There must be a token in the form
  
if (!isset($_POST['token'])) return false;
  
// The token must be identical
  
if ($_SESSION[$index] !== $_POST['token']) return false;
  return 
true;
}  

if (!
verifyFormToken('loginForm')) {
  die(
'CSRF Attack detected OR External form processing detected');


//Include database connection details
    
require_once('conf.db.php');
    
    
//Array de errores
    
$errmsg_arr = array();
    
    
//Validation error flag
    
$errflag false;
    
    
//Connect to mysql server
    
$link mysql_connect(DB_HOSTD//Include database connection details
    
require_once('conf.db.php');
    
    
//Array de errores
    
$errmsg_arr = array();
    
    
//Validation error flag
    
$errflag false;
    
    
//Connect to mysql server
    
$link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    }
    
    
//Function to sanitize values received from the form. Prevents SQL injection
    
function clean($str) {
        
$str = @trim($str);
        if(
get_magic_quotes_gpc()) {
            
$str stripslashes($str);
        }
        return 
mysql_real_escape_string($str);
    }
    

    
//limpiar las variables
    
$login clean($_POST['login']);
    
$password clean($_POST['password']);
    
    
//Input Validations
    
if($login == '') {
        
$errmsg_arr[] = 'Login no valido';
        
$errflag true;
    }
    if(
$password == '') {
        
$errmsg_arr[] = 'error introduzca contraseña';
        
$errflag true;
    }
    
    
//si hay un error en los datos ingresados volver al form
    
if($errflag) {
        
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        
session_write_close();
        
header("location: login-form.php");
        exit();
    }
    
    
//Create query
    
$qry="SELECT * FROM usuarios WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    
$result=mysql_query($qry);
    
    
//Check whether the query was successful or not
    
if($result) {
        if(
mysql_num_rows($result) == 1) {
            
//Login correcto
            
session_regenerate_id();
            
$member mysql_fetch_assoc($result);
            
$_SESSION['SESS_USERID'] = $usuario['user_id'];
            
$_SESSION['SESS_FIRST_NAME'] = $usuario['firstname'];
            
$_SESSION['SESS_EMAIL'] = $usuario['email'];
                                                
$_SESSION['SESS_EDAD'] = $usuario['edad'];
        

        
session_write_close();
header("location: conectado.php");
            exit();
        }else {
            
//Login fallido
            
header("location: login-error.php");
            exit();
        }
    }else {
        die(
"Query failed");
    }
B_USERDB_PASSWORD);
    if(!
$link) {
        die(
'Failed to connect to server: ' mysql_error());
    }
    
    
//Select database
    
$db mysql_select_db(DB_DATABASE);
    if(!
$db) {
        die(
"Unable to select database");
    }
    
    
//Function to sanitize values received from the form. Prevents SQL injection
    
function clean($str) {
        
$str = @trim($str);
        if(
get_magic_quotes_gpc()) {
            
$str stripslashes($str);
        }
        return 
mysql_real_escape_string($str);
    }
    

    
//limpiar las variables
    
$login clean($_POST['login']);
    
$password clean($_POST['password']);
    
    
//Input Validations
    
if($login == '') {
        
$errmsg_arr[] = 'Login no valido';
        
$errflag true;
    }
    if(
$password == '') {
        
$errmsg_arr[] = 'error introduzca contraseña';
        
$errflag true;
    }
    
    
//si hay un error en los datos ingresados volver al form
    
if($errflag) {
        
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        
session_write_close();
        
header("location: login-form.php");
        exit();
    }
    
    
//Create query
    
$qry="SELECT * FROM usuarios WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    
$result=mysql_query($qry);
    
    
//Check whether the query was successful or not
    
if($result) {
        if(
mysql_num_rows($result) == 1) {
            
//Login correcto
            
session_regenerate_id();
            
$member mysql_fetch_assoc($result);
            
$_SESSION['SESS_USERID'] = $usuario['user_id'];
            
$_SESSION['SESS_FIRST_NAME'] = $usuario['firstname'];
            
$_SESSION['SESS_EMAIL'] = $usuario['email'];
                                                
$_SESSION['SESS_EDAD'] = $usuario['edad'];
        

        
session_write_close();
header("location: conectado.php");
            exit();
        }else {
            
//Login fallido
            
header("location: login-error.php");
            exit();
        }
    }else {
        die(
"Query failed");
    }
?>
  #18 (permalink)  
Antiguo 01/07/2009, 07:24
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: bloquear formularios externos con php.

asi si me funciona, nose que habria puesto mal antes.

muchas gracias abidibo .

y a todos.

saludos
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 05:01.