Foros del Web » Programando para Internet » PHP »

Sintaxis incorrecta o php caprichoso?

Estas en el tema de Sintaxis incorrecta o php caprichoso? en el foro de PHP en Foros del Web. Tengo un problema. Cambie mi método de sintaxis y ahora tengo problemas. Nose bien si es por ello o por otro motivo. La cuestión es ...
  #1 (permalink)  
Antiguo 23/07/2011, 17:39
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Sintaxis incorrecta o php caprichoso?

Tengo un problema.
Cambie mi método de sintaxis y ahora tengo problemas. Nose bien si es por ello o por otro motivo.

La cuestión es que el sitio me lee algunos if y otros no.
Los if que tienen else, los toma y los que nó los salta, como si fuesen irrelevantes.

Cambie mi método de sintaxis para que me sea más facil trabajar.
En ves de hacer un if para verificar si una afirmación es positiva, lo hago al reves, verifico si una afirmación es negativa, tomandolo como "true" y luego hago lo que corresponda para esa verificación. Así me ahorro el "ELSE".

Otra posibilidad es que me esté jugando una mala pasada $_SERVER['HTTP_REFERER'] y me haga confundir.

¿Que es?

Gracias desde ya!

Código PHP:

session_start
();

include(
"../../logindb/conectar.php");
include(
"../vercion.php");
include(
"../getip.php");

if(
$_SESSION["para"] == "" || $_SESSION["posicion"] == "" || $_SESSION["tipodemensaje"] == "" || $_SESSION["ApodoLogeado"] == ""){
header ("Location: ".$_SERVER['HTTP_REFERER']);
}

// Validar si el formulario está lleno
    
if (strlen($_POST["Texto"]) == 0){
        
header ("Location: ".$_SERVER['HTTP_REFERER']."&msg=vacio");
// Validar tamaño de texto
    
}elseif (strlen($_POST["Texto"]) > 100){
        
header ("Location: ".$_SERVER['HTTP_REFERER']."&msg=carmax");
    }elseif (
strlen($_POST["Texto"]) <= 6){
        
header ("Location: ".$_SERVER['HTTP_REFERER']."&msg=corto");
    }
////

// Validar Lenguaje Adulto
    
function Filtro ($texto) {
    
// Agregar posteriormente si es necesario...
    // Devuelve cantidad de palabras censuradas.
    
return 0;
    }
    
    if (
Filtro($_POST["Texto"]) >= 2){
        
header ("Location: ".$_SERVER['HTTP_REFERER']."&msg=lengadu");
    }
//

// Verificar si no tiene este slot ocupado (por algun intruso) && Verif. si el slot que indicó calza con la cantidad máxima de mensajes que dispone. Ej slot 13, máximo 10 = INVALIDO
    
$contador mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM Tablon WHERE POSICION = '".$_SESSION["posicion"]."' AND PARA = '".$_SESSION["para"]."'"));
    
$slotmaximos mysql_fetch_array(mysql_query("SELECT MaxTablon FROM Usuarios WHERE Apodo = '".$_SESSION["para"]."'"));
    if (
$contador[0] != || $slotmaximos["MaxTablon"] < $_SESSION["posicion"]){
        
header ("Location: ".$_SERVER['HTTP_REFERER']."&msg=ine");
    }else{
//


$uuid md5(uniqid(""));
$_SESSION["uuidsinestilo"] = $uuid;
mysql_query("INSERT INTO Tablon (UUIDsMensaje, State, DE, PARA, POSICION, TIPO, DURACIONDIAS, Texto, FechaCreacion, IPAlCrear) VALUES ('".$uuid."', '1', '".$_SESSION["ApodoLogeado"]."', '".$_SESSION["para"]."', '".$_SESSION["posicion"]."', 'TEXTO', '".$duraciontabtexto."', '".$_POST["Texto"]."', '".date("Y-m-d")."', '".getRealIP()."')");

header ("Location: estilo.php");

// cierra el if
    
}
// 
  #2 (permalink)  
Antiguo 23/07/2011, 18:31
Avatar de perryjr  
Fecha de Ingreso: julio-2010
Ubicación: Granada, Spain, Spain
Mensajes: 190
Antigüedad: 13 años, 8 meses
Puntos: 27
Respuesta: Sintaxis incorrecta o php caprichoso?

$_SERVER['HTTP_REFERER'] no siempre está definido, no sé si será por eso o no. Es mejor que pases la URL a la que tiene que volver mediante un parámetro más, y lo recojas con algo tipo $_POST['volver'];

Un consejo, cuando llegas a la línea que dice

strlen($_POST["Texto"]) == 0

quien te asegura que el navegador haya enviado un campo "Texto" y php lo haya guardado en $_POST["Texto"]? Porque si alguien toquetea lo que sea en el lado del cliente o ocurre un error, la aplicación fallará estrepitosamente. Comprueba antes isset($_POST["Texto"]), antes de lanzarte a recoger el valor =)
__________________
I (L) Google
  #3 (permalink)  
Antiguo 23/07/2011, 18:34
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Sintaxis incorrecta o php caprichoso?

Cita:
Iniciado por perryjr Ver Mensaje
$_SERVER['HTTP_REFERER'] no siempre está definido, no sé si será por eso o no. Es mejor que pases la URL a la que tiene que volver mediante un parámetro más, y lo recojas con algo tipo $_POST['volver'];

Un consejo, cuando llegas a la línea que dice

strlen($_POST["Texto"]) == 0

quien te asegura que el navegador haya enviado un campo "Texto" y php lo haya guardado en $_POST["Texto"]? Porque si alguien toquetea lo que sea en el lado del cliente o ocurre un error, la aplicación fallará estrepitosamente. Comprueba antes isset($_POST["Texto"]), antes de lanzarte a recoger el valor =)
$_POST lo recibe por medio de un formulario en otra web.
Igualmente agregaré el Isset, no sabia sobre eso jejej.
Ahora voy a cenar, vuelvo, pruebo cambiar el REFERER y cuento aver que pasa.


Gracias
  #4 (permalink)  
Antiguo 23/07/2011, 19:18
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Sintaxis incorrecta o php caprichoso?

Lamentablemente tuve que reestructurar todo.
Pero igualmente creo que me juega a favor más que encontra.
Lastima que uno se pierde con los else si es que no tabula.

Código PHP:

session_start
();

include(
"../../logindb/conectar.php");
include(
"../vercion.php");
include(
"../getip.php");

if(
$_SESSION["para"] == "" || $_SESSION["posicion"] == "" || $_SESSION["tipodemensaje"] == "" || $_SESSION["ApodoLogeado"] == ""){
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]);
}

// Validar si el formulario está lleno
    
if (strlen($_POST["Texto"]) != 0){
        if (
strlen($_POST["Texto"]) < 100){
            
// Validar tamaño de texto
            
if (strlen($_POST["Texto"]) >= 6){
                
// Validar Lenguaje Adulto
                
function Filtro ($texto){return 0;}
                if (
Filtro($_POST["Texto"]) <= 2){
                
                        
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
                
                        // Verificar si no tiene este slot ocupado (por algun intruso) && Verif. si el slot que indicó calza con la cantidad máxima de mensajes que dispone. Ej slot 13, máximo 10 = INVALIDO
                            
$contador mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM Tablon WHERE POSICION = '".$_SESSION["posicion"]."' AND PARA = '".$_SESSION["para"]."'"));
                            
$slotmaximos mysql_fetch_array(mysql_query("SELECT MaxTablon FROM Usuarios WHERE Apodo = '".$_SESSION["para"]."'"));
                            if (
$contador[0] != || $slotmaximos["MaxTablon"] < $_SESSION["posicion"]){
                                
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]."&msg=ine");
                            }else{
                        
//
                        
                        
                        
$uuid md5(uniqid(""));
                        
$_SESSION["uuidsinestilo"] = $uuid;
                        
mysql_query("INSERT INTO Tablon (UUIDsMensaje, State, DE, PARA, POSICION, TIPO, DURACIONDIAS, Texto, FechaCreacion, IPAlCrear) VALUES ('".$uuid."', '1', '".$_SESSION["ApodoLogeado"]."', '".$_SESSION["para"]."', '".$_SESSION["posicion"]."', 'TEXTO', '".$duraciontabtexto."', '".$_POST["Texto"]."', '".date("Y-m-d")."', '".getRealIP()."')");
                        
                        
header ("Location: estilo.php");
                        
                        
// cierra el if
                            
}
                        
//
                        
                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
                
}else{
                
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]."&msg=lengadu");
                }
            }else{
            
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]."&msg=corto");
            }
        }else{
        
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]."&msg=carmax");
        }
    }else{
    
header ("Location: ../agregaraltablon.php?mt=t&to=".$_SESSION["para"]."&pos=".$_SESSION["posicion"]."&msg=vacio");
    }
//// 
Al final no entendí igualmente.
Si existe un if el cual no tiene un else, su ejecución es opcional?
Que hay de diferente ahora con el código de antes (aparte de la ejecución tipo "box in box" y el header...?

Probé primero editando el header y no dio resultado, pero cuando lo volví a estructurar así si funcionó.

Saludos, EL MISTERIO CONTINUA
  #5 (permalink)  
Antiguo 23/07/2011, 19:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sintaxis incorrecta o php caprichoso?

¿Que sentido tiene esta función?
Código PHP:
function Filtro ($texto){return 0;} 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 23/07/2011, 19:30
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Sintaxis incorrecta o php caprichoso?

En primer lugar, PHP no es ni será "caprichoso", simplemente se ejecuta de la forma en que se programa.

Cita:
Si existe un if el cual no tiene un else, su ejecución es opcional?
Claro que no, me parece que no conoces la ejecución de condicionales. Si un IF da true, ejecutará lo de las llaves, si da false, intentará entrar a un else. Si no hay else, simplemente continúa la ejecución
Te dejo un ejemplo:
Código PHP:
Ver original
  1. $foo = 5;
  2. if ($foo == 6) {
  3.    echo 'Foo es igual a 6';
  4. }
  5. //Lo anterior no imprimirá nada
  6. /***********************/
  7. $foo = 5;
  8. if ($foo == 6) {
  9.    echo 'Foo es igual a 6';
  10. }else{
  11.    echo 'Foo no es 6';
  12. }
  13. // Imprimirá Foo no es 6
  14. /*****************/
  15. $foo = 5;
  16. if ($foo != 6) {
  17.    echo 'Foo es diferente de 6';
  18. }
  19. // Imprimirá Foo es diferente de 6

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 23/07/2011, 19:38
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Sintaxis incorrecta o php caprichoso?

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Que sentido tiene esta función?
Código PHP:
function Filtro ($texto){return 0;} 
Una "futura" función para filtrar lenguaje adulto. Simplemente eso.
Una "ayuda a la memoria".
  #8 (permalink)  
Antiguo 23/07/2011, 19:40
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Sintaxis incorrecta o php caprichoso?

Cita:
Iniciado por Sourcegeek Ver Mensaje
En primer lugar, PHP no es ni será "caprichoso", simplemente se ejecuta de la forma en que se programa.


Claro que no, me parece que no conoces la ejecución de condicionales. Si un IF da true, ejecutará lo de las llaves, si da false, intentará entrar a un else. Si no hay else, simplemente continúa la ejecución
Te dejo un ejemplo:
Código PHP:
Ver original
  1. $foo = 5;
  2. if ($foo == 6) {
  3.    echo 'Foo es igual a 6';
  4. }
  5. //Lo anterior no imprimirá nada
  6. /***********************/
  7. $foo = 5;
  8. if ($foo == 6) {
  9.    echo 'Foo es igual a 6';
  10. }else{
  11.    echo 'Foo no es 6';
  12. }
  13. // Imprimirá Foo no es 6
  14. /*****************/
  15. $foo = 5;
  16. if ($foo != 6) {
  17.    echo 'Foo es diferente de 6';
  18. }
  19. // Imprimirá Foo es diferente de 6

Saludos!
Si, obviamente se de esto.
Pero justamente es por ello es post, me parece raro que no ejecute la acción correspondiente,
en casi todos los casos es la funcion "header".

Ahora, que lo ordené, le puse else, y lo puse tipo "box in box" (así lo llamo yo...) funciona perfectamente.

Cosa que me entra en duda el "porque" de lo que pasaba.

Etiquetas: incorrecta, mysql, sintaxis, sql, formulario, usuarios
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 15:13.