Foros del Web » Programando para Internet » PHP »

problemas con variable $_GET

Estas en el tema de problemas con variable $_GET en el foro de PHP en Foros del Web. Amigos. Saludos. Este es mi problema: Tengo un formulario llamado nuevo_cliente.php donde guardo a un nuevo cliente. Para evitar hacer un nuevo script php. Al ...
  #1 (permalink)  
Antiguo 19/10/2006, 00:00
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
problemas con variable $_GET

Amigos.

Saludos.

Este es mi problema:

Tengo un formulario llamado nuevo_cliente.php donde guardo a un nuevo cliente. Para evitar hacer un nuevo script php. Al momento de presionar el boton "guardar" del formulario voy a un javascript que tengo y hago esto..
Código PHP:
document.registro.action="nuevo_cliente.php?accion=guardar";
document.registro.method="POST";
document.registro.submit(); 
Obviamente tengo en la misma página un
Código PHP:
if (isset($_GET['accion'])){ 
   if (
$_GET['accion']=="guardar"){
    echo 
"llegue a la sección para guadar en bd";
   }

Y aqui esta el problema, supuestamente deberia llegar a ese mesaje del echo, pero no llego, en paralelo estoy usando el script de cluster el autentificator y en mi página nuevo_cliente.php agregue el motor de autentificacion de usuarios conocido como "aut_verifica.inc.php"

El tema es que cuando se carga nuevamente la pagina (nuevo_cliente.php)despues del click del boton me sale este error en la barra
intranet/nuevo_cliente.php?error_login=2 en vez de salir algo como intranet/nuevo_cliente.php?accion=guardar

Ya le di su buen par de vueltas, haber si me dan un aventón que se me puede estar quedando en el tintero de las soluciones...muchas gracias ¡¡¡
  #2 (permalink)  
Antiguo 19/10/2006, 02:13
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
El botón guardar es tipo submit? Si es asi deberias ejecuutar la funcion en el evento onsubmit de la etiqueta form y debería ser algo tal q así:

Código HTML:
<form _atributos_ onsubmit="return nombrefuncion(argumentos);"> 
Y en el javascript en lugar de document.registro.submit(); pon return true;

Ahora si es un tipo button el código parece correcto aunque como muxos aconsejan es mejor hacer validaciones en el evento submit de la etiqueta form. Espero haberme explikado bien.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 19/10/2006, 10:38
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Hola denuevo, he verificado y la cosa no va por ahi...

como les mencione estoy utilizando el autentificator de "cluster". ahora bien dentro del motor de validacion de usuario existe la siguiente linea.

Código PHP:
session_name("Admin");
session_start();
session_cache_limiter('nocache,private');

        
$_SESSION['nombre']=$usuario_datos['nombre'];
        
$_SESSION['nick']=$usuario_datos['username'];
        
$_SESSION['pass']=$usuario_datos['clave'];

    
// 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 { 
// CASO EN QUE NO EXISTA O NO ENCUENTRE EL USUARIO
      // 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"); //Erro2 Password o Usuario no Existe
      
exit;}
} else { 
en cada página estoy colocando el motor de validacion usuarios, pero cuando envio el formulario me envia ese error (asterisco)¿que puede ser? segun veo dice que el password o usuario no existe, pero como si ya se valido ??
  #4 (permalink)  
Antiguo 19/10/2006, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías indicar el código completo que usas para ve tu "flujo" de procesos ...

Autentificator (el código original .. por qué lo que pusistes extremadamente resumido y fuera de contexto confunde ..) lo único que hace es un pequeño "if()" para ver si tus variables en $_POST del usuario/password existen (user y pass concretamente).. así se validan. El mismo "if()" hace un "else" y va a mirar las variables de sesión.

De esta forma .. si llegas a tu script de un formulario de "login" con esas variables en $_POST['user'] y $_POST['pass'] .. entra a ese "if()" y se validan .. sino, se vén las variables de sesión.

Tu llegas a ese script/página con alguna variable en $_POST con esos nombres? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/10/2006, 10:58
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por Cluster Ver Mensaje
Deberías indicar el código completo que usas para ve tu "flujo" de procesos ...
Lo incluire altiro...por mientras te confirmo que llego a través de $_POST con esas variables
  #6 (permalink)  
Antiguo 19/10/2006, 11:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por under_ground Ver Mensaje
Lo incluire altiro...por mientras te confirmo que llego a través de $_POST con esas variables
Pues entonces es -normal- que el código se comporte de esa manera (digo el de "Autentificator").

Ahora .. la pregunta es "por qué llegas con esas variables en POST" cuando no deberías?

El proceso lógico sería:

formulario_login.php (pides tu usuario password) -> script_aplicacion.php (aquí al terminar un proceso debes -redireccionar- a si mismo .. tal vez sea este el problema)

Fijate en los ejemplos de "Autentificator" en su "aut_gestion_usuarios.php" .. ahí están todas las acciones típicas con la BBDD de usuarios sobre -un- sólo script .. en ningún momento se plantea ese problema. Los procesos están separados por "peticiones" (al terminar un proceso PHP .. se redirecciona a si mismo).

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 19/10/2006, 11:18
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
aca esta el desgloce...

1º el aut_verifica.php
Código PHP:
// Cargar datos conexion y otras variables.
require ("BDConn/datosConn.php");
// chequear página que lo llama para devolver errores a dicha página. en esta caso Index & aut_gestio_usuarios
$url explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;

if (isset(
$_POST['txt_user']) && isset($_POST['txt_pass'])) {

$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die("Imposible Conectar");
mysql_select_db($sql_db,$db_conexion)or die("Error en la base de datos seleccionada");
// realizamos la consulta a la BD para chequear datos del Usuario.
$str="SELECT nombre,username,clave FROM deoz.sac_admin WHERE username='".$_POST['txt_user']."'";

$usuario_consulta=mysql_query($str)or die("La siguiente consulta contiene algún error:".nSQL.":".$str);

 if (
mysql_num_rows($usuario_consulta) != 0) {
 
    
$login stripslashes($_POST['txt_user']);
    
$password =$_POST['txt_pass'];
    
$usuario_datos mysql_fetch_array($usuario_consulta);
    
mysql_free_result($usuario_consulta);
    
mysql_close($db_conexion);

    if (
$login != $usuario_datos['username']) { // username campo de la BD
           
Header ("Location: $redir?error_login=4"); // Error 4 Password Incorrecto
        
exit;}
    if (
$password != $usuario_datos['clave']) { // clave campo de la BD
        
Header ("Location: $redir?error_login=3"); // Error 3, Usuario No existe
        
exit;}
        
    unset(
$login);
    unset(
$password);
    
// Inicializamos Sessiones
        
session_name("Admin");
        
session_start();
        
session_cache_limiter('nocache,private');
    
// 3 variables de sesión: RUT/ACCESO/NOMBRE_LOGIN/
        
$_SESSION['nombre']=$usuario_datos['nombre'];
        
$_SESSION['nick']=$usuario_datos['username'];
        
$_SESSION['pass']=$usuario_datos['clave'];
    
// 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 { 
// CASO EN QUE NO EXISTA O NO ENCUENTRE EL USUARIO
      // 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"); //Erro2 Password o Usuario no Existe
      
exit;}
} else {
// -------- Chequear sesión existe -------

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

if (!isset(
$_SESSION['nick']) && !isset($_SESSION['pass'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
header("location: Fin_sesion.php"); // acceso incorrecto deriba a sesion.php
exit;
}

2º Mi página con el formulario llamado "nuevo_cliente.php", (al principio obviamente coloco el aut_verifica.php )esta tiene un botón que envia el formulario a un javascript donde primero se valida y cuando esta todo OK se envía
Código HTML:
<input name="boton" src="Ima/guardar.png" type="image" alt="Guardar Cliente" onClick="return campos_vacios()"> 
Código PHP:
function campos_vacios()
{
document.registro.action="funciones.php?accion=guardar";
document.registro.method="POST";
document.registro.submit();

y Finalmente llego a este punto donde se envía el formulario y se generaba el error que les comentaba

Revisare lo que acabas de plantear en el post de arriba..

Lo curioso es que si va hacia funciones.php?accion=guardar (que es una página en blanco con un mensaje) pero se quede en "nuevo_cliente.php?error_login=2"

Última edición por under_ground; 19/10/2006 a las 11:36
  #8 (permalink)  
Antiguo 19/10/2006, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Justamente lo que más interesa aquí es ver como implementas tus N procesos que hace tu único script.

Podrías a modo de prueba ver que contiene un array $_POST en todo momento:

Código PHP:
echo "<pre>";
print_r($_POST);
echo 
"</pre>"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 19/10/2006, 13:53
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
vaya problema ... ya se soluciono, me parecia muy extraño todo esto porque todo el tema de validacion de usuario estaba OK....el problema estaba en el formulario en las cajas de texto

Código HTML:
<input name="txt_user2" type="text" id="txt_user2"> 
y debian quedar

Código HTML:
<input type="text" name="txt_user2" id="txt_user2">>
Eso me provoca el error tan raro...

Valgame ... Gracias Cluster como siempre
  #10 (permalink)  
Antiguo 19/10/2006, 17:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por under_ground Ver Mensaje
vaya problema ... ya se soluciono, me parecia muy extraño todo esto porque todo el tema de validacion de usuario estaba OK....el problema estaba en el formulario en las cajas de texto

Código HTML:
<input name="txt_user2" type="text" id="txt_user2"> 
y debian quedar

Código HTML:
<input type="text" name="txt_user2" id="txt_user2">>
Eso me provoca el error tan raro...

Valgame ... Gracias Cluster como siempre
mm Te refieres a que "el orden de los productos" en este caso "afectó al resultado"? o algo más?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 19/10/2006, 17:13
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
si, es bastante extraño lo que ocurrio, tenia que ver con el orden del html

en un principio estaba asi

Código HTML:
<input name="txt_user2" type="text" id="txt_user2"> 
como puedes ver el type="text" estaba después de el name, bueno como sabia que lo demas estaba en orden empece a mirar el formualrio, luego de sacar y colocar textbox descubrí que DEBIA dejar primero el type="text" y luego el name="txt_user2"

segui con la programación, pero quede
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:57.