Foros del Web » Programando para Internet » PHP »

Problema con manejo de variables

Estas en el tema de Problema con manejo de variables en el foro de PHP en Foros del Web. Declaré una variable como global en un script php. $GLOBALS=$privilegio; Pero al verificar los datos en una base de datos, como que no obtiene el ...
  #1 (permalink)  
Antiguo 22/09/2006, 09:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Problema con manejo de variables

Declaré una variable como global en un script php.

$GLOBALS=$privilegio;

Pero al verificar los datos en una base de datos, como que no obtiene el valor :

Indicó por teclado el usuario, el cual tiene asignado "privilegio=1", pero la variable "$privilegio" recibe el valor "0".
$conexion_host_tramites = mysql_connect("localhost", "root", "root");
// Abre una conexión en el mysql con el host de mi maquina ------>
mysql_select_db("tramites_academicos", $conexion_host_tramites);
$consulta_usuarios = mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '%$usuario%' AND clave LIKE '%$clave%'", $conexion_host_tramites);

if ($reg_actual = mysql_fetch_array($consulta_usuarios))
{
$privilegio = "";
$privilegio = $reg_actual["privilegios"];
echo $privilegio;
}
...
Que error he cometido en la declaración de la variable o en alguna operación?

Los campos de la base de datos usuarios son :
usuario VARCHAR(12)
clave VARCHAR(12)
privilegios VARCHAR(1)
  #2 (permalink)  
Antiguo 22/09/2006, 11:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No entendí el objetivo de declarar como "$GLOBAL" una variable así . .en tu contexto.

Cita:
Indicó por teclado el usuario, el cual tiene asignado "privilegio=1", pero la variable "$privilegio" recibe el valor "0".
y "eso" como lo haces .. indica todo el código que uses. Suponemos que usas un formulario (en método?) ..

Recuerda que las variabels debes acederlas por su array asociado:

$_GET['privilegio'] o $_POST['privilegio'] .. (o $_REQUEST .. )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 25/09/2006, 07:28
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Primero se carga el archivo "acceso.php" para leer los datos del usuario registrado.
<?php
echo "<img src='http://www.minuke.com/themes/argenblue/images/logo3.gif'>";
echo "<BR>";
echo "<div align='center'><B>Acceso al Sistema</B></div>";
echo "<table><tr><td width='45%'></td><td width='55%'>";
echo "<FORM name='acceso_tramites' method='POST' action='http://www.minuke.com/verificar_acceso.php'>";
echo "<table><tr><td>";
echo "Usuario</td><td><input name='usuario' type='text' size='12' maxlength='12'></td></tr>";
echo "<tr><td>Clave</td><td><input type='password' name='clave' size='12' maxlength='12'></td></tr></table>";
echo "<input type='submit' value='Entrar' name='Entrar'>";
echo "</FORM></td></tr></table>";
?>

El archivo "verificar_acceso.php" chequea si el usuario esta registrado en el sistema :
<?php
$usuario=$_POST["usuario"];
$clave=$_POST["clave"];
$GLOBALS=$privilegio;

echo "<BR>";
echo "<div align='center'><B>Acceso al Sistema</B></div>";

if (empty($clave) or empty($usuario))
{
echo "<DIV align='center'>Error...No indic&oacute; un nombre de usuario o clave</DIV>";
leer_usuario($clave,$usuario);
}
else
{
$conexion_host_tramites = mysql_connect("localhost", "root", "root");
mysql_select_db("tramites_academicos", $conexion_host_tramites);
$consulta_usuarios = mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '%$usuario%' AND clave LIKE '%$clave%'", $conexion_host_tramites);

if ($reg_actual = mysql_fetch_array($consulta_usuarios))
{
$privilegio = "";
$privilegio = $reg_actual["privilegios"];
echo $privilegio;

echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.minuke.com/tramite.php'>";

}
else
{
echo "<DIV align='center'>Error...usuario o clave incorrecta</DIV>";
leer_usuario($clave,$usuario);
}
}


function leer_usuario(&$clave,&$usuario)
{
echo "<table><tr><td width='45%'></td><td width='55%'>";
echo "<FORM name='registro_tramites' method='POST' action='http://www.minuke.com/verificar_acceso.php'>";
echo "<table><tr><td>";
echo "Usuario</td><td><input name='usuario' type='text' size='12' maxlength='12'></td></tr>";
echo "<tr><td>Clave</td><td><input type='password' name='clave' size='12' maxlength='12'></td></tr></table>";
echo "<input type='submit' value='Entrar' name='Entrar'>";
echo "</FORM></td></tr></table>";
}
?>

Por último, el archivo "tramite.php", registra la operacion del sistema :

<?php
echo "<BR>";
echo $privilegio;
if ($privilegio = "0")
{
echo "<div align='center'><B>Administraci&oacute;n de Tr&aacute;mites</B></div>";
}
else
if ($privilegio = "1")
{
echo "<div align='center'><B>Registro de Tr&aacute;mites</B></div>";
echo "<TABLE width='100%'><tr><td width='90'>";
echo "<A>Registrar Tramite</A></td></tr>";
echo "<tr><td><A>Eliminar Tramite</A></td></tr></table>";
}
echo "<TABLE width='100%'><tr><td width='10%'></td><td width='15%'>";
echo "<FORM action='http://www.minuke.com/tramite.php method='POST'>";
echo "<TABLE><tr><td>";
echo "<DIV align='left'>C&eacute;dula de Identidad";
echo "<DIV align='left'>Tr&aacute;mite";
echo "</td><td>";
echo "<DIV><input name='cedula' type='text' size='12' maxlenght='12'></DIV>";
echo "<DIV><input name='descripcion' type='text' size='60' maxlenght='60'></DIV>";
echo "</DIV>";
echo "<DIV><input name='estatus' type='text' size='12' maxlenght='12'></DIV>";
echo "</TD></TR></table>";
echo "<INPUT type='submit' value='Enviar' name='enviar'>";
echo "</FORM></TD></TR></TABLE>";
?>
  #4 (permalink)  
Antiguo 27/09/2006, 13:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
La variale $privilegio la volví a declarar global de otra manera :

global $privilegio;

Porqué?
Por que luego, cargo el privilegio del usuario en la base de datos :
$privilegio = $reg_actual['privilegios'];

Para después en otro scrip php :
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; url=http://www.zcojedes.me.gob.ve/tramite.php'>";

Realizar otras operaciones de acuerdo al privilegio asignado a dicho usuario.

Será que no envío la variable como parámetro al cargar el script tramite.php, existe otra manera de llamar o cargar dicho archivo y reconozca la variable $privilegio?

O es que al comienzo del script tramite.php, debo recibir dicha variable y declararla de nuevo?
  #5 (permalink)  
Antiguo 27/09/2006, 21:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No sé que concepto tienes de lo que significa "global" (definido como: global $variable) .. Pero eso no implica que el valor de esa variable permanezca para todo script que ejecutes en ese proceso. Eso no es una variable de "sesión".

Las variables de "sesión" son: www.php.net/session ($_SESSION ...)

Las variables de sesión, las defines en script1.php por ejemplo y las tendrás accesibles para todo el resto_scripts.php que lo necesites mientras dure esa sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 28/09/2006, 06:38
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Ok ya entiendo. Mi experiencia en PHP es reciente, y confundo un poco la manera de programar y uso de variables que conozco desde Pascal, Visual Basic, etc.

El problema es que la variable $privilegio declarada en el primer script .php, pierde el valor asignado al pasar al otro script .php.
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 02:16.