Buenas! os voy a poner lo que he hecho en este rato para que, si voy por buen camino, pueda servir de inicio para mas gente.
Necesitaremos 3 archivos: uno para las funciones, uno para procesar los datos que se envien en un form cualkiera que mande user y pass, y otro que se colocaria en la plataforma central que comprueba si existe el user y pass. Aunque yo en el ejemplo no voy a poner la sql por que para el ejemplo es una tonteria.
Primero estan las funciones, lo he hecho así para que quede mas limpio luego :P
Código PHP:
//Funcion de encriptado para passwords, super passwords :P
function super_pass($string){
return sha1(md5($string)); // xD tantos md5 y shas como se kiera
}
// Funcion para obtener el login
function login_externo($usuario,$pass){
include('conf.php');
$usuario=trim(strip_tags(addslashes($usuario)));
$pass=trim(strip_tags(addslashes($pass)));
$pass=super_pass($pass);
$ch = curl_init($url_login_externo); // la url puede ser por ejemplo localhost/proyecto/login_secretisimo .php
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "user=$usuario&pass=$pass");
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);
$datos=curl_exec ($ch);
curl_close ($ch);
return $datos;
}
Ahora el archivo que procesará en la web central los datos
Código PHP:
if($_POST['user'] && $_POST['pass']){
echo 'OK||'.$_POST['user'].'||valencia||leif ferreira ponce||[email protected]';
/*
//Consultaria a la BD
if($mysql_result($q,0)>0){
// Está logueado
echo 'OK||'.$_POST['user'].'||valencia||leif ferreira ponce';
}else{
// No se ha logueado
echo 'ERROR';
}
*/
}else{
header("HTTP/1.0 404 Not Found", true, 404);
echo '<html><head><title>404 Not Found</title></head><body bgcolor=white><h1>404 Not Found</h1>The requested URL does not exist.</body></html>';
}
Despues el fichero que procesa el form
Código PHP:
include('funciones.php');
$res=login_externo('leifsk8er','123456');
if(eregi('OK',$res)){
// Se logueó correctamente
$partes=explode('||',$res);
$estado=$partes[0];
$usuario=$partes[1];
$provincia=$partes[2];
$nombre=$partes[3];
$email=$partes[4];
// Ejemplo tonto ;)
echo 'ESTADO='.$estado;
echo '<br>USUARIO='.$usuario;
echo '<br>PROVINCIA='.ucwords($provincia);
echo '<br>USUARIO='.ucwords($nombre);
echo '<br>USUARIO='.$email;
}else{
// No se logueó
}
Mas o menos eso puede servir para orientaros. Se necesitan conocimientos un poco avanzados para comprenderlo, almenos un poquito :P
UN saludo
PD: Si sabeis las IP´s de los servidores que aceptas para recibir post puedes hacer una condicion sacando la ip de quien visita, puedes usar este codigo que te crea una variable de session si quieres con la ip del visitante.
Código PHP:
session_start();
if($_SESSION['REALIP']==''){
if ($_SERVER) {
if ( $_SERVER[HTTP_X_FORWARDED_FOR] ) {
$_SESSION['REALIP'] = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif ( $_SERVER["HTTP_CLIENT_IP"] ) {
$_SESSION['REALIP'] = $_SERVER["HTTP_CLIENT_IP"];
} else {
$_SESSION['REALIP'] = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$_SESSION['REALIP'] = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$_SESSION['REALIP'] = getenv( 'HTTP_CLIENT_IP' );
} else {
$_SESSION['REALIP'] = getenv( 'REMOTE_ADDR' );
}
}
}