Problemas al leer $_POST

Hasta ayer funcionaba lo siguiente:

Desde un fichero origen tenia la siguiente línea:

$('#capaAEscribir').load('acciones.php',{datos:parámetros};

Explicación:

En el <div> capaAEscribir, se volcaba la información de acci

1 Respuesta

Respuesta
1

No completaste tu pregunta amigo!

No es que no la completara, es que hubo un error a la hora de enviarla y se ha enviado lo que se ha enviado ...

La pregunta completa:

Hola.
Te explico, hasta ayer funcionaba lo siguiente:

Desde un fichero origen tenia la siguiente línea:
$('#capaAEscribir').load('acciones.php',{datos:parámetros};

Explicación, en el <div> capaAEscribir, se volcaba la información de acciones.php ...
El tema es que en acciones, simplificándolo mucho, tenía esto:

<?php
$parámetros=$_POST["datos"];
echo "datos leídos: " . $parámetros . "<br>";
?>

Explicación: vuelca la información. Ya digo no es el código que había pero es que haciendo pruebas este tampoco funciona.

Resulta que investigando, he leído que por temas de seguridad $_POST no se puede leer directamente, que hay que utilizar "filter_input" (ni que decir que hasta ayer todo funcionaba sin "filter_input"). Así pues miro "filter_input' y veo que hay que usarlo de la siguiente manera:

<?php
$parámetros=filter_input(INPUT_POST,"datos", FILTER_SANITIZE_STRING);
echo "datos leídos: " . $parámetros . "<br>";
?>

Ahora si que vuelca la información en el "echo", pero con un inconveniento las comillas simples (que utilizo para indicar los valores) me las convierte a secuencias de escape (comilla simple igual a &#39;) ... por lo que evidentemente todo el código que viene después no vale para nada ... peta o no funciona ...

El parámetro "FILTER_SANITIZE_STRING", lo cambio por otros, y el resultado es o bien que no hace nada del resto del código, o convierte las comillas en los caracteres que he comentado ...

¿Qué solución le puedes encontrar?, Ya que quisiera no haber de tocar nada y que siguiese funcionando como ayer ...

Gracias.

Veamos: Hay una confusión...

Si se puede leer la variable $_POST directamente, el uso de filtros por lo que tengo entendido es para sanitizar los valores enviados por formulario (por esta razón te modifica las comillas y las escapa).

Sinceramente no hay problemas en la primera ejecución que planteas, quizá en ese momento equivocaste la sintaxis lo cual provocaba que no se ejecutara el código. La forma en la cual estabas trabajando está correcta.

Para probar si hay problemas con la variable "datos" haz lo siguiente (ya que puede ser que hayas equivocado el indice del arreglo $_POST)

en el archivo acciones.php

¿

<?php
var_dump($_POST);

?>
DE ESTA FORMA veras todos los datos que trae la variable post y su contenido.

Con eso puedes llamar el valor que desees como corresponde $_POST["indice"]

Que si, que te doy la razón ... es más antes de enviarlo, de pasarlo a acciones, visualizo los parámetros mediante un alert(parámetros); y ahí los veo, todo ok.

Es al ir a acciones.php cuando lo recojo con $parametros=$_POST["datos"]; cuando me dad ese problema.

El netbeans, no sé si lo utilizas, al inicio de la línea, te muestra unos simbolitos, indicando "warning" o "error" o "puntos de interrupción", y en la línea en que se lee el POST, sale el mensaje que te he comentado, el no se puede leer directamente, cosa que hasta ayer si que lo podia hacer ...

El tema de utilizar el filter_input, según he leido es tambien para que un listillo, p.ej en un campo texto (textarea), no pueda meter un script, y pueda liarla de alguna manera ...pero ya te digo, ahora probaré lo del var_dump, ... a ver que pasa

Saludos y gracias

Te comento, de nuevo "fallo" mio ...

Resulta que cuando se llama a "acciones.php":

$('#capaAEscribir').load('acciones.php',{datos:parametros};

la variable parámetros, como su nombre indica contiene parametros que luego se separan, se hace así porque no hay un número limitado sino que pueden haber 5 parametros o bien 500, por eso lo hice así, el tema, es que los valores que pertenecen al parámetro "x", va entre comillas simples, y es eso lo que hacia que fallase:

parametros="nombre:'Pedro',edad='28',ciudad='Estocolmo', ..."

Son esas comillas las que hacian que fallasen, ha sido cambiar las comillas por otro caracter y funcionar:

parametros="nombre:%Pedro%,edad=%28%,ciudad=%Estocolmo%, ..."

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas