Foros del Web » Programando para Internet » PHP »

Error al intentar restringir una pagina a usuarios

Estas en el tema de Error al intentar restringir una pagina a usuarios en el foro de PHP en Foros del Web. Hola buenas!! Que tal, mirar tnego un script que me hace el registro/login de los users, y para que accedieran a las paginas con restriccion ...
  #1 (permalink)  
Antiguo 25/10/2007, 16:15
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Error al intentar restringir una pagina a usuarios

Hola buenas!! Que tal, mirar tnego un script que me hace el registro/login de los users, y para que accedieran a las paginas con restriccion de usuarios logeados, uso esto:

Edificios:

Código PHP:
 <?php
 
 
if (is_logged_in($user)) {
     include(
"menu.edificios.php");}
 else {echo
"No estas logeado, debes estar logeado para poder acceder al juego";}
 
 
?>[
Lo que nose porque pero a veces me aparece este error:


Fatal error: Cannot redeclare is_logged_in() (previously declared in /home/www/termop.awardspace.com/login/functions.php:105) in /home/www/termop.awardspace.com/login/functions.php on line 105


La funcion is_logged_in() en question es esta:


Código PHP:
//global function for checkig whethar user is logged in or not.
//you will notice we will use it everwhere in the script.
function is_logged_in($user) {
    global 
$db,$prefix;

    if(!
is_array($user)) {
    
$read_cookie explode("|"base64_decode($user));
        
$userid $read_cookie[0];
    
$passwd $read_cookie[2];
    } else {
        
$userid $read_cookie[0];
    
$passwd $read_cookie[2];
    }
    
$userid addslashes($userid);
        
$userid intval($userid);
    if (
$userid != "" AND $passwd != "") {
        
$result $db->sql_query("SELECT password FROM ".$prefix."_users WHERE userid='$userid'");
    
$row $db->sql_fetchrow($result);
        
$pass $row['password'];
    if(
$pass == $passwd && $pass != "") {
           return 
1;
    }
    }
    return 
0;


Alguien sabe a que se debe el error? Cabe la posibilidad de restringir las paginas a usuarios logeados de otra forma, Gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 25/10/2007, 16:26
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Error al intentar restringir una pagina a usuarios

function is_logged_in()


colocala asi en la parte donde tienes la funcion me paso algo parecido con una clase
  #3 (permalink)  
Antiguo 25/10/2007, 16:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Error al intentar restringir una pagina a usuarios

Ufff no no asi me peta todo xDDD.

Lo que es curioso es que el script funciona bien protege el modificado de pasword y tal usando la funcion como aqui:
Código PHP:
if (is_logged_in($user)) {
          
//this function will check fields incase of javascript not working.
          
if(trim(empty($email))){
             
//print the error message and load the form.
             
include("header.php");

             
EditMyInfo_form();
             echo 
"<center><font class=\"error\">"._ERROR_PLEASE_FILL_FIELDS."</font></center>\n";
             include(
"footer.php");
             exit();
          } 
Pero en cambio cuando yo abro una pagina y la restringo con esa sentencia me saca el error arriba mencionado, no entiendo nada, ayuda por favor
  #4 (permalink)  
Antiguo 25/10/2007, 18:03
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Error al intentar restringir una pagina a usuarios

Alguien me ayuda por favor?
  #5 (permalink)  
Antiguo 25/10/2007, 18:15
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: Error al intentar restringir una pagina a usuarios

Tu error dice que estas creando mas de una vez a la funcion en la misma pag.

Por lo tanto es un error fatal y te mata la interpretacion.

Trata de ver si en alguna otra parte de esas paginas estas llamandola con function is_logged_in ya que al declarar esto estas creando una funcion y no llamandola.

Suerte y nos comentas !
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 25/10/2007, 18:44
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Error al intentar restringir una pagina a usuarios

Vale quizas se duplica, pero yo juraria que los tengo en paginas diferentes, lo tengo metido en:


Juego.php:

Código PHP:
<?php
//include ("functions.php");
//include("header.php");

//if (is_logged_in($user)) {
include("general.html");
//}
//else {echo"No estas logeado, debes estar logeado para poder ver esta pagina";}
?>
Y en Edificios.php:

Código PHP:
<?php
//include ("functions.php");
//if (is_logged_in($user)) {
include("menu1_edificios.html");
//}
//else {echo"No estas logeado, debes estar logeado para poder acceder al juego";}
?>
El codigo donde sale la sentencia esta comentado porque sino me da errores.

Veis algo mal en ese codigo? Gracias
  #7 (permalink)  
Antiguo 25/10/2007, 18:50
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: Error al intentar restringir una pagina a usuarios

Nop... hasta ahora no veo nada mal... lo que si me interesaria saber si el archivo functions.php tiene la funcion solo una vez o si llama a una pagina que tenga tambien la funcion o si llamas en una pagina interior otra vez a functions....

Me tinca q por ahi va la cosa.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 25/10/2007, 18:57
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Error al intentar restringir una pagina a usuarios

En el archivo funtions se define toda la funcion, lo ke no entiendo es ke el fichero user, usa esa funcion mas de 3 o 4 veces en la misma pagina y no ocurre nada, funciona a la pefeccion, espera te pongo codigo, gracias por ayudarme tio

functions.php

Código PHP:
//skip the config file if somebody call it from the browser.
if (eregi("functions.php"$_SERVER['SCRIPT_NAME'])) {
    
Header("Location: index.php"); die();
}

if (!
ini_get("register_globals")) {
    
import_request_variables('GPC');
}

$phpver phpversion();
if (
$phpver '4.1.0') {
    
$_GET $HTTP_GET_VARS;
    
$_POST $HTTP_POST_VARS;
    
$_SERVER $HTTP_SERVER_VARS;
}
$phpver explode("."$phpver);
$phpver "$phpver[0]$phpver[1]";
if (
$phpver >= 41) {
    
$PHP_SELF $_SERVER['PHP_SELF'];
}


if(isset(
$admin)){
$admin base64_decode($admin);
$admin addslashes($admin);
$admin base64_encode($admin);
}
if(isset(
$user)){
$user base64_decode($user);
$user addslashes($user);
$user base64_encode($user);
}

foreach (
$_GET as $sec_key => $secvalue) {
    if ((
eregi("<[^>]*script*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*object*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*iframe*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*applet*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*meta*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*style*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*form*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*img*\"?[^>]*>"$secvalue)) ||
    (
eregi("<[^>]*onmouseover*\"?[^>]*>"$secvalue)) ||
    (
eregi("\([^>]*\"?[^)]*\)"$secvalue)) ||
    (
eregi("\""$secvalue))) {
        die (
"not allowed");
    }
}
foreach (
$_POST as $secvalue) {
    if ((
eregi("<[^>]*onmouseover*\"?[^>]*>"$secvalue)) || (eregi("<[^>]script*\"?[^>]*>"$secvalue)) || (eregi("<[^>]style*\"?[^>]*>"$secvalue))) {
        die (
"not allowed");
    }
}

include (
"config.php");

include(
"mysql.class.php");
$db = new sql_db($dbhost$dbuname$dbpass$dbnamefalse);
if(!
$db->db_connect_id) {
      include(
"header.php");

      echo 
"<br><font color=\"red\"><h5><br><center>Error:</b><br><hr><br>
            <b>Connection to database has faild!<br>
            check mysql server/database name/username/password </center>
            <br><br><br><br><br><br><br><br><br>"
;
              echo 
mysql_error();
      include(
"footer.php");
      die();
}
//load the site info from db.
$setup_sql $db->sql_query("SELECT * FROM ".$prefix."_setupme");
$setup_row $db->sql_fetchrow($setup_sql);

$site_name stripslashes($setup_row['site_name']);
$site_emailstripslashes($setup_row['site_email']);
$site_url stripslashes($setup_row['site_url']);
$site_info stripslashes($setup_row['site_info']);
$language stripslashes($setup_row['language']);
$tmp_header stripslashes($setup_row['tmp_header']);
$tmp_footer stripslashes($setup_row['tmp_footer']);
//load the language
include ("lang/$language.php");

//global function for checkig whethar user is logged in or not.
//you will notice we will use it everwhere in the script.
function is_logged_in($user) {
    global 
$db,$prefix;

    if(!
is_array($user)) {
    
$read_cookie explode("|"base64_decode($user));
        
$userid $read_cookie[0];
    
$passwd $read_cookie[2];
    } else {
        
$userid $read_cookie[0];
    
$passwd $read_cookie[2];
    }
    
$userid addslashes($userid);
        
$userid intval($userid);
    if (
$userid != "" AND $passwd != "") {
        
$result $db->sql_query("SELECT password FROM ".$prefix."_users WHERE userid='$userid'");
    
$row $db->sql_fetchrow($result);
        
$pass $row['password'];
    if(
$pass == $passwd && $pass != "") {
           return 
1;
    }
    }
    return 
0;
}

function 
is_logged_in_admin($admin) {
    global 
$db,$prefix;

    if(!
is_array($admin)) {
    
$read_cookie explode("|"base64_decode($admin));
        
$adminid $read_cookie[0];
    
$passwd $read_cookie[2];
    } else {
        
$adminid $read_cookie[0];
    
$passwd $read_cookie[2];
    }
    
$adminid addslashes($adminid);
        
$adminid intval($adminid);
    if (
$adminid != "" AND $passwd != "") {
        
$result $db->sql_query("SELECT password FROM ".$prefix."_admin WHERE adminid='$adminid'");
    
$row $db->sql_fetchrow($result);
        
$pass $row['password'];
    if(
$pass == $passwd && $pass != "") {
           return 
1;
    }
    }
    return 
0;
}


function 
msg_redirect($msg,$url,$seconds){
         global 
$site_name$site_url;

         echo 
"<html dir=\""._LTR_RTL."\">\n"
              
."<head>\n"
              
."<title>$site_name</title>\n"
              
."<meta http-equiv=\"Refresh\" content=\"$seconds; URL=$url\">\n"
              
."<meta http-equiv=\"Content-Type\" content=\"text/html; charset="._CHARSET."\">\n"
              
."<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">\n"
              
."</head>\n\n"
              
."<body>\n"
              
."<br />\n"
              
."<br />\n"
              
."<br />\n"
              
."<br />\n\n\n"
              
."<div align=\"center\">\n"
              
."<table cellpadding=\"6\" cellspacing=\"1\" border=\"0\" width=\"70%\" bgcolor=\"#E1E1E1\">"
              
."<tr>"
          
."<td bordercolor=\"#808080\">"._REDIRECTING."</td>"
              
."</tr> "
              
."<tr> "
          
."<td align=\"center\" bgcolor=\"#FFFFFF\">"
          
."<blockquote> "
              
."<p>&nbsp;</p>"
          
."<p><h3>$msg</h3></p>"
              
."<p><a href=\"$url\"> "
          
.""._CLICK_HERE_BROWSER_REDIRECT."</a></p><br />"
              
."</blockquote>"
          
."</div>\n"
          
."</td>\n"
              
."</tr>\n"
              
."</table>\n\n\n"
              
."</body>\n"
              
."</html>";
}


?> 

Un trozo del archivo user.php:


Código PHP:
function EditMyInfo_form(){
         global 
$user$db$prefix$username$password$email$fullname$user_taken_err$email_taken_err;

  if (
is_logged_in($user)) {
         
navigation_menu();
         
         
$cookie_read explode("|"base64_decode($user));
         
$userid $cookie_read[0];
         
$result $db->sql_query("SELECT * FROM ".$prefix."_users WHERE userid='$userid'");
         
$row $db->sql_fetchrow($result);
         
         echo 
"<center><font class=\"title\">"._CHANGE_MY_INFORMATION."</font></center><br>\n";
         echo 
"<center>"._FILED_STAR_REQUIRED."
               <form name=\"EditMyInfoForm\" method=\"POST\" action=\"users.php\">
               <table align=\"center\" border=\"1\" width=\"500\" id=\"table1\" cellpadding=\"2\" bordercolor=\"#C0C0C0\">
        <tr>
            <td  width=\"100\" align=\"right\">"
._USERNAME." :</td>
            <td><input type=\"text\" disabled=\"true\" name=\"username\" size=\"18\" value=\"$row[username]\"></td>
        </tr>
        <tr>
            <td align=\"right\">"
._EMAIL." :</td>
            <td><input type=\"text\" name=\"email\" size=\"27\" value=\"$row[email]\">  * $email_taken_err</td>
        </tr>
        <tr>
            <td align=\"right\">"
._FULLNAME." :</td>
            <td><input type=\"text\" name=\"fullname\" size=\"27\" value=\"$row[fullname]\"></td>
        </tr>
        <tr>
            <td align=\"right\">"
._WEBSITE." :</td>
            <td><input type=\"text\" name=\"site\" size=\"27\" value=\"$row[site]\"> "
._EG." http://www.site.com</td>
        </tr>
                <tr>
            <td align=\"right\">"
._COUNTRY." :</td>
            <td><input type=\"text\" name=\"country\" size=\"27\" value=\"$row[country]\"></td>
        </tr>
        <tr>
            <td align=\"right\">"
._CITY.":</td>
            <td><input type=\"text\" name=\"city\" size=\"27\" value=\"$row[city]\"></td>
        </tr>
        <tr>
            <td align=\"right\">"
._TEL_MOBILE." :</td>
            <td><input type=\"text\" name=\"tel\" size=\"27\" value=\"$row[tel]\"></td>
        </tr>
        <tr>
            <td align=\"right\">"
._PROFILE.":</td>
            <td><textarea rows=\"5\" name=\"profile\" cols=\"30\">$row[profile]</textarea></td>
        </tr>
                <tr>
            <td>&nbsp;</td>
            <td> <input type=\"hidden\" name=\"maa\" value=\"do_EditMyInfo\">
                             <input type=\"submit\" value=\""
._SAVE_CHANGES."\"></td>
        </tr>
           </table></form>"
;

  }else{
        echo 
"<br /><center><font class=\"title\">"._NOT_AUTHORIZED."</font>";
  }
  
}
function 
do_EditMyInfo(){
          global 
$user$db$prefix$email$fullname$email_taken_err;
          global 
$site$country$city$tel$profile;
          global 
$site_name$site_email$site_url;

  if (
is_logged_in($user)) {
          
//this function will check fields incase of javascript not working.
          
if(trim(empty($email))){
             
//print the error message and load the form.
             
include("header.php");

             
EditMyInfo_form();
             echo 
"<center><font class=\"error\">"._ERROR_PLEASE_FILL_FIELDS."</font></center>\n";
             include(
"footer.php");
             exit();
          } 

He puesto el users pa que se vea como se repite sin error alguno
  #9 (permalink)  
Antiguo 25/10/2007, 19:14
 
Fecha de Ingreso: octubre-2007
Mensajes: 203
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Error al intentar restringir una pagina a usuarios

No entiendo NADA, ahora lo acabo de probar y ya no me da problemas O.o, bueno pues mejor... xD nose si durara mucho pero que le vamos a hacer.

Gracias Marvin
  #10 (permalink)  
Antiguo 25/10/2007, 19:22
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: Error al intentar restringir una pagina a usuarios

Los archivos header.php y footer.php no llaman a functions.php cierto ?...

Lo otro que puedes hacer es encapsular la funcion en una clase y llamarla desde un include... y acceder a ella instanciando la clase y llamandola cuando la necesitas.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #11 (permalink)  
Antiguo 25/10/2007, 19:23
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: Error al intentar restringir una pagina a usuarios

xD
mientras tu respondias yo respondia xD...

Weno... suerte toncs !
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 21:26.