Foros del Web » Programando para Internet » PHP »

Autenficator no corre en mi maquina pero en servidor remoto si

Estas en el tema de Autenficator no corre en mi maquina pero en servidor remoto si en el foro de PHP en Foros del Web. Q tal, creo q me he leido todos los mensajes del foro relacionados con sesiones, y aun no encuentro la respuesta a mi problema q ...
  #1 (permalink)  
Antiguo 11/10/2005, 12:27
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 12 años, 2 meses
Puntos: 0
Autenficator no corre en mi maquina pero en servidor remoto si

Q tal, creo q me he leido todos los mensajes del foro relacionados con sesiones, y aun no encuentro la respuesta a mi problema q espero me puedan ayudar..

estoy usando windows xp con IIS
php version 4.4.0
quiero trabajar con sesiones y de hecho estoy usando el autentificator de Cluster (eres un buenaso !!!! he aprendido mucho con tu script )
ahora, el asunto es el siguiente, cuando lo corro en mi maquina, entro al index.php, ingreso el nombre de usuario, contraseña... y de ahi no pasa.. le doy click en enviar y en vez de dirigirme a la siguiente pagina me manda el error en IE de "no se encuentra la pagina" y con Firefox me dice "el documento no contiene datos"
No se q datos deba de modificar en el php.ini, y es mas, no se si por ahi vaya el problema...
si pruebo el script en un servidor remoto todo corre sin problemas, pero si lo hago en mi laptop nomas no funciona..
espero me puedan ayudar.. Gracias.
  #2 (permalink)  
Antiguo 11/10/2005, 12:31
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Preguntar si apache y php estan corriendo sobra no?
Tienes bien puestos los datos de acceso a la base en el file de configuración?
No habrás cambiado las rutas de los links?

Sigo pensando que mas puede ser...
  #3 (permalink)  
Antiguo 11/10/2005, 12:47
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 12 años, 2 meses
Puntos: 0
Hola, gracias por la respuesta, uso IIS y si esta corriendo, y php tambien corre bien, todos mis scrips funcionan bien, en los datos del file configuracin supongo q te refieres al del autentificator y si, estan correctos, de hecho, por ejemplo si pongo mal el login el autentificator me devuelve bien los errores, solo es cuando escribo bien el login y pass cuando se queda pasmado...
ahora....
aqui estan mis configuraciones del php.ini referentes a las sessiones, espero q vaya por alli el problema...

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
; As of PHP 4.0.1, you can define the path as:
; session.save_path = "N;/path"
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
session.save_path = C:/WINDOWS/TEMP

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

session.gc_probability = 1
session.gc_divisor = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, albeit register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled.

session.bug_compat_42 = 1
session.bug_compat_warn = 1

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0

; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields et="
;session.save_path= C:\PHP\sessiondata
; argument passed to save_handler
  #4 (permalink)  
Antiguo 11/10/2005, 13:37
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
No lo he revisaod al 100% pero así por encima diría que tengo el php.ini como tu.

Si fuera un problema de sesiones, no debería lanzarte los errores del propio script o darte un error desde php...

Los archivos que tienes en local son exactamente los mismos que en el remoto? Lo digo porque en una ocasión me pasó pasó algo así y resultó ser un problema del archivo causado por haberlo editado con un editor que lo guardó con otra codificación.

Si puedes poner la pagina que "da error"...

Saludos
  #5 (permalink)  
Antiguo 11/10/2005, 14:22
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 12 años, 2 meses
Puntos: 0
si, los archivos son exactamente los mismos, el unico q cambia es del configuracion para accesar a la base de datos, pero en ese esta bien...
Ahora, el unico error q puedo referir es q cuando me valida como usuario, simplemente no me direcciona a la siguiente pagina...
se queda pasmadao el internet explorer y despues de un rato me dice q no se pudo encontrar la pagina... o si uso el firefox se tarda igual solo q al final me dice q "el documento no contiene datos..."
No me devuelve ningun error propio de php.. simplemente no puedo continuar a la pagina siguiente...

Aqui estan los codigos....

Pagina "INICIO.PHP"
Código PHP:
<?php
phpinfo
();
?>
//... esto lo use para ver la configuracion de mi php.ini con la configuracion del php.ini del servidor remoto y ambos estan igual...

<?php
// Mostrar error de Autentificación.
include ("sesion/aut_mensaje_error_inc.php");
if (isset(
$_GET['error_login'])){
$error=$_GET['error_login'];
echo 
"Error: $error_login_ms[$error]";
}
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form action="pagina1.php" method="post">
Usuario: <input type="text" name="user">
Password: <input type="password" name="pass">
  <input type="submit" name="Submit" value="Enviar">
</form>

</body>
</html>
:::::::::::::::::::::::::::::::::::::::::::::

Pagina PAGINA1.PHP


Código PHP:
<?php
require ("Sesion/aut_verifica_inc.php");
$nivel_acceso=0;
if (
$nivel_acceso $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>
:::::::::::::::::::::::::::::::::::::::
Como la pagina anterior manda llamar a aut_verifica_inc.php aqui esta el codigo de la misma...

AUT_VERIFICA_INC.PHP

Código PHP:

// Cargar datos conexion y otras variables.
require ("aut_config_inc.php");


// chequear página que lo llama para devolver errores a dicha página.

$url explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
die (
"Error cod.:1 - Acceso incorrecto!");
exit;
}


// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['user']) && isset($_POST['pass'])) {

// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta mysql_query("SELECT ID,usuario,pass,nivel_acceso FROM $sql_tabla WHERE usuario='".$_POST['user']."'") or die(header ("Location:  $redir?error_login=1"));

 
// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
 
if (mysql_num_rows($usuario_consulta) != 0) {

    
// eliminamos barras invertidas y dobles en sencillas
    
$login stripslashes($_POST['user']);
    
// encriptamos el password en formato md5 irreversible.
    
$password md5($_POST['pass']);

    
// almacenamos datos del Usuario en un array para empezar a chequear.
     
$usuario_datos mysql_fetch_array($usuario_consulta);
  
    
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
    
mysql_free_result($usuario_consulta);
    
// cerramos la Base de dtos.
    
mysql_close($db_conexion);
    
    
// chequeamos el nombre del usuario otra vez contrastandolo con la BD
    // esta vez sin barras invertidas, etc ...
    // si no es correcto, salimos del script con error 4 y redireccionamos a la
    // página de error.
    
if ($login != $usuario_datos['usuario']) {
           
Header ("Location: $redir?error_login=4");
        exit;}

    
// si el password no es correcto ..
    // salimos del script con error 3 y redireccinamos hacia la página de error
    
if ($password != $usuario_datos['pass']) {
        
Header ("Location: $redir?error_login=3");
        exit;}

    
// Paranoia: destruimos las variables login y password usadas
    
unset($login);
    unset (
$password);

    
// En este punto, el usuario ya esta validado.
    // Grabamos los datos del usuario en una sesion.
    
     // le damos un mobre a la sesion.
    
session_name($usuarios_sesion);
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');
    
    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['usuario_id']=$usuario_datos['ID'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_nivel']=$usuario_datos['nivel_acceso'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_login']=$usuario_datos['usuario'];

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usuario_password']=$usuario_datos['pass'];


    
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
    // las variables de session en el array asociado $HTTP_...
    
$pag=$_SERVER['PHP_SELF'];
    
Header ("Location: $pag?");
    exit;
    
   } else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
Header ("Location: $redir?error_login=2");
      exit;}
} else {

// -------- Chequear sesión existe -------

// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
"Error cod.: 2 - Acceso incorrecto!");
exit;
}
}
?> 

Última edición por pato_volador; 11/10/2005 a las 22:49
  #6 (permalink)  
Antiguo 11/10/2005, 23:36
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 12 años, 2 meses
Puntos: 0
Aja!!!! aun no resuelvo esto, pero he dado cuenta de algo q no habia notado...
el error devuelto por el Internet Explorer es "No se encuentra el servidor" ... "No se puede mostrar la pagina.. no se encuentra disponible..."
Creen q pueda ser por el IIS????

Saludos y gracias por ayudar a este pato torpe e inexperto.. :(
  #7 (permalink)  
Antiguo 12/10/2005, 05:20
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Hombre yo no creo que sea un problema del navegador, este script de cluster nos funciona bien a todos, en cualquier navegador, por lo menos a mi en mis pruebas.

En tu codigo, yo, no veo nada susceptible de darte ese error, lo único que yo no suelo hacer es incluir phpinfo(); en mis scripts, lo uso en un archivo aparte y solito, no se hasta que punto esto puede dar el error pero creo que no es correcto, ya imagino que lo habrás puesto para testear la configuración y tal y el error ya lo daba antes...

Yo de ti lo primero que haría es empezar viendo si envia las variables bien desde el form, te creas un archivo aparte que reciba el form y comprueba que son bien enviadas, luego crea las consultas "manuales" a la base, paso a paso y así, quizás encuentres una pista de donde se atasca, siguiendo la info desde que la envias desde el form.

A mi me suena a algún problema de archivos.

Saludos
  #8 (permalink)  
Antiguo 12/10/2005, 05:22
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Quizás los permisos?
  #9 (permalink)  
Antiguo 12/10/2005, 22:38
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 12 años, 2 meses
Puntos: 0
Solucionado!!!!!!

Aqui va donde esta el error...
en el archivo "aut_verifica.inc.php" q es el motor verificador y el q genera las sesiones en la linea 126 y 127 estan estos codigos...
Código PHP:
$pag=$_SERVER['PHP_SELF'];
Header ("Location: $pag?"); 
q se encargan de recargar el script para q esten disponiblas las varibales de sesion (o al menos eso entiendo...) el caso es que la variable "$pag" toma como valor una direccion relativa y no absoluta, q es precisamente lo que no me dejaba continuar ya que mi IIS (y no se q tenga de raro o especial..) no admite ese tipo de redireccionamientos, segun lei en la documentacion de php.net la funcion "header.. location" requiere para su correcto funcionamiento una direccion absoluta del tipo "http://www.soyunpato.com/autentificador/pagina_restringida.php"
Es por eso q cuando corria el script realmente me direccionaba a "/autentificador/pagina_restringida.php" y alli es cuando el IIS me decia "no se puede mostrar la pagina..."

lo q hice fue generar una direccion absoluta con el siguiente codigo y direccionar...

Código PHP:
$pag='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?';
Header ("Location: $pag"); 
y Voila!!!! funciono!!!! espero q esto le sirva a cualquier otra ave despistada como yo y muchas gracias TRALARA por darme luz en este camino...

Cuuuack!!!
  #10 (permalink)  
Antiguo 13/10/2005, 01:47
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 14 años
Puntos: 0
Ya te lo dije, seguro que es cosa del PHP_SELF.

Saludos
  #11 (permalink)  
Antiguo 13/10/2005, 07:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gracias pato_volador, por indentificar el problema .. Realmente en Cualquier otro servidor HTTP (Apache, Xitami y alguno más que me han informado que lo han probado) no plantea esos problemas header().

Lo tendré encuenta para modificar el script (aunque tengo el proyecto abandonado hace tiempo ..)

Un saludo,
  #12 (permalink)  
Antiguo 19/11/2005, 08:29
 
Fecha de Ingreso: julio-2005
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta

A mi me pasa lo contrario q a Pato Volador.
El autentificator corre bien en mi máquina con appserv pero me da problemas en el servidor remoto. He aislado el problema y es tb cosa del PHP_SELF
He probado con la solución que proponía él, pero sigo sin conseguirlo.
Mi estructura d directorios es:
-dominio.net
_-carpeta
__-carpeta
___-admin
___-autentificator_v201
___-...

Como no controlo mucho de cariables tipo $_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF'] pense q quiza entre estas dos tendria q meter ".'carpeta/carpeta/'." pero ni con esas doy con la solucion
El formulario d entrada para administradores me lleva a la pagina q le mando pero la muestra en blanco, pq no se llegan a ejecutar las siguientes líneas de codigo
Código:
$pag='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'; 
Header ("Location: $pag");
A alguien se le ocurre cual puede ser el problema?
He comprobado la gran utilidad del trabajo de Cluster en local y espero poder seguir usandolo en el servidor remoto.
  #13 (permalink)  
Antiguo 19/11/2005, 19:43
 
Fecha de Ingreso: julio-2005
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 0
Olvidad lo que he he dicho.
Me ha costado un buen rato pq no estoy acostumbrado a usar el comando Header, pero al fin me di cuenta de que el problema era que se me habá colado una línea antes de esta secuencia.
Disculpad y gracias por leerme.
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 07:51.