acceso desde una pagina a otra, a traves de metodo POST

Rodrigo Fuentealba darkprox en gmail.com
Mie Feb 15 18:30:17 CLST 2006


Jose Felipe Sanhueza Paredes wrote:
> buenas, resulta que tengo el sigiuente dilema...me encargaron que 
> desde una intranet acceder a un sistema oracle cuando el usuario lo 
> necesite (es decir, puede navegar por muchas partes, y al final 
> acceder al oracle)..asi de sencillo..
No entendí mucho la pregunta... pero a ver si te sirve esto:

--- la página de donde está el botón ---
Esta página será la que te lleve a tu otra aplicación, con una pequeña 
función en javascript que haga por ti la recarga. Podría no funcionar 
con algún navegador, pero a mí me ha funcionado en todos hasta ahora.

function recarga(url,formulario)
{
        str1='window.document.'+formulario+'.action='+'"'+url+'"';
        str2='window.document.'+formulario+'.submit()';
        eval(str1);
        eval(str2);
}

<html>
<...>
<form name="formlogin" method="post">
<input type='hidden' name='user' value=<?php echo($usuarioIngresado); ?>>
<input type='hidden' name='pass' value=<?php echo($pass); ?>>
<input type='button' value='Sist. Oracle' 
onClick="recarga('pagina.oracle', 'formlogin');">
</form>
<...>
</html>

--- la página de inicio de sesión (pagina.oracle) ---
Esta página deberá estar en alguna parte de tu otra aplicación Oracle, 
sea cual sea, en el servidor web que sea. Tendrás que crear la sesión y 
utilizarla en la aplicación, haciendo referencia a $_SESSION['username'] 
y $_SESSION['password'] cada vez que necesites. La sesión deberá 
cerrarse explícitamente en la página de logout con $_SESSION=array(); 
session_destroy(); y deberías comprobar que los cookies estén 
habilitados para que la sesión sea persistente. Para un poco más de 
seguridad, conviene mirar en pear.php.net el package pear/HTTP_Session, 
que permite simplificar el proceso de sesiones, agregando un idle o algo 
así.

<?php
    session_start();

    if(validar_post_login($_POST['user'],$_POST['pass']))
    {
       $_SESSION['username'] = $_POST['user'];
       $_SESSION['password'] = $_POST['pass'];
       header('Location: pagina.oracle.inicio');
       exit();
    }
    else
    {
       die('Error: nombre de usuario y pass no válidos');
    }
?>

> cual es la solucion que pienso...
> centralizar todas las contraseñas a traves de un directorio ldap (ya 
> esta listo y verificado)..
> si tiene acceso al sistema de oracle (verificando si existe en arbol 
> correspondiente en el ldap), le habilito un link hacia el sistema, 
> PERO el logeo del oracle esta por metodo post (si fuese por get seria 
> armar el url hacia el programa q verifica sesion)...alguna idea de 
> como hacerlo?...podria llegar y hacer algo asi de directo?
Comentario al margen: usar GET para pasar contraseñas de una página a 
otra es --->demasiado<--- inseguro.
>
> <form action='pagina.algo.del-.oracle' method='post'>
> <input type='hidden' name='user' value='$usuarioIngresado'>
> <input type='hidden' name='pass' value='$pass'>
> <input type=submit value='Sist. Oracle'>
> </form>
Sí, las sesiones en sí mismas... si quieres usar datos de una sesión en 
otra, es bueno y fácil (no sé si lo mejor, a decir verdad lo dudo y 
desconfío mucho de los métodos POST y GET, quizás alguien más en la 
lista podría aportar más métodos de seguridad) pasarlas de esta forma. 
Validar, validar y más validar, esa es la clave.
> se entiende la pregunta??..hay algo como persistencia de sesiones?..
> gracias..


Más información sobre la lista de distribución PHP