Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/07/2009, 18:43
leif_sk8er
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Problema login multiweb

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 ($chCURLOPT_POST1); 
curl_setopt ($chCURLOPT_POSTFIELDS"user=$usuario&pass=$pass"); 
curl_setopt($chCURLOPT_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"true404); 
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' );
                            }
                        }


Última edición por leif_sk8er; 17/01/2010 a las 00:46