Foros del Web » Programando para Internet » PHP »

Problema con una Funcion

Estas en el tema de Problema con una Funcion en el foro de PHP en Foros del Web. Veran, tengo una pagina en la que tiene un menu a la derecha, en la que en ese menu, abajo del todo tiene la opcion ...
  #1 (permalink)  
Antiguo 01/12/2003, 18:55
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Problema con una Funcion

Veran, tengo una pagina en la que tiene un menu a la derecha, en la que en ese menu, abajo del todo tiene la opcion de loguearse, este menu, lo incluyo en todas las paginas con un include en su posicion correspondiente en la tabla de cada pagina (Espero estar explicandome).

Pues verán, hice la siguiente funcion que la incluyo en todas las paginas con otro include:
function loguearse(){
//logearse
if(isset($_POST[txtlogin]) && isset($_POST[txtpassword])){
//$nick=strtolower($_POST[txtlogin]);
$nick="clavicordio50";
//$sqlusuario=mysql_query("select * from tusuarios where nick='".$nick."' and password=PASSWORD('".$_POST[txtpassword]."')",$cn);

$sqlusuario=mysql_query("select * from tusuarios where nick='clavicordio50'",$cn);
//almaceno todo el usuario en este array.
if(mysql_num_rows($sqlusuario)!=0){
$rsusuario=mysql_fetch_assoc($sqlusuario);
echo $rsusuario[nick];
$_SESSION['login']=$rsusuario[nick];
}else{echo "fallo";}
}
}


La cuestion es que asi no me funciona, sin embargo, si opngo el codigo completo en la pagina
sin poner lo de function si que funciona, ¿Saben por que puede ser?

En el menu que es el que incluyo en todas las paginas tengo puesto en el action del form lo siguiente: $_SERVER['PHP_SELF']; para que asi cuando el usuario se identifique en cualqueir
pagina que este, pues que aparezca autentificado en la misma pagina que hizo la autentificacion.

Pues eso, cuando recargo la pagina, si ejecuto la funcion con loguearse(); no me pilla la autentificacion, si pongo el codigo entero si me lo pilla.

NOTA: Cuando pruebo lo del codigo o la llamada a la funcion eso lo estoy poniendo en la pagina
a la que entra el usuario, no lo estoy poniendo en el menu.

Bueno, espero haberme explicado y qeu puedan ayudarme, desde ya muchas gracias.
__________________
Charlie.
  #2 (permalink)  
Antiguo 01/12/2003, 20:38
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Cuando defines una función, esta no se corre por si sola, sino que debes llamarla explicitamente.

Código PHP:
function loguearse() {
    
// contenido de la funcion
}

// Ahora llamas (ejecutas) la función:
loguearse(); 
__________________
Manoloweb
  #3 (permalink)  
Antiguo 02/12/2003, 05:42
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Manoloweb, puede qeu sea un poco tontín, pero tanto . . . . .
Ya sé que tengo que llamarla, pero digo que no me funcina.
__________________
Charlie.
  #4 (permalink)  
Antiguo 02/12/2003, 05:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Existe lo que se llama "ambito" de las variables. Es decir, no puedes acceder directamente desde dentro de una funcion a variables definidas fuera de la funcion. Mas info http://www.php.net/manual/en/languag...bles.scope.php

Asi que revisa las variables que usas dentro de la funcion, y busca las que no estan definidas dentro de la funcion. Pista: una que yo veo empieza por c y acaba por n.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 02/12/2003, 13:06
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
hombre, previamente hago antes de llamar la funcion un:
include("../inc/cn.php");

Que es donde inicializo la $cn, el problema es que sin llamar a la funcion, ejecutando el codigo de dentro de la funcion, funciona, pero si ese ocdigo lo meto dentro de la funcoin y la llamo no funciona, ¿Por que puede ser?
__________________
Charlie.
  #6 (permalink)  
Antiguo 02/12/2003, 13:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
chcma .. y leistes bien con atención lo que te menciona josemi sobre el "ambito" (scope) de las variables en funciones? ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 02/12/2003, 17:22
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Ok, ok, ¿No puedo hacer nada para usar el $cn que tengo en la pagina cn.php?

Si la respuesra es no, ¿Es correcto que vuelva a crear otra conexion dentro de la funcíon aun teniendo previamente el
include("cn.php)?
__________________
Charlie.
  #8 (permalink)  
Antiguo 02/12/2003, 17:32
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
$GLOBALS["cn"];

__________________
Manoloweb
  #9 (permalink)  
Antiguo 03/12/2003, 02:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
chcma, en el link que te puse explicaban como hacerlo. Ademas del $GLOBALS y de 'global', tambien podrias pasar ese valor como parametro a la funcion.

Saludos.

PD: Manoloweb, en tu firma te falta explicar el tercer tipo de personas. Recuerda, nosotros los programadores de pro empezamos a contar en 0
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 03/12/2003, 07:47
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 14 años, 1 mes
Puntos: 13
Y aun te queda sitio para un cuarto tipo de persona
__________________
Jerónimo Cernuda
Wemaster de McAnam.com

Última edición por jercer; 03/12/2003 a las 07:48
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 23:39.