Como dice el título, tengo un array (o vector) que necesito pasar de un script a otro a través de un formulario por $_POST.
En mi servidor local la programación es perfecta y hace lo que quiero, pero al subirlo a webcindario y probarlo solo pasa el primer valor del array o eso creo, dado que tampoco da fallos específicos.
He mirado por si hay alguna función desactivada de las que uso pero creo que no. Dejo aquí la función con la que convierto el array para luego pasarlo al formulario y la función con la que lo vuelvo a pasar a array
Función para poder pasarlo por POST:
Cita:
function array_envia($participantes) { $tmp = serialize($participantes); $tmp = urlencode($tmp);
de ahi $participantes es mandada por el formulario. $participantes es un array con esta estructura: $participantes[valor]["campo interno"] es decir es bidimensional, pero aún asi localmente lo recorre y lo pasa bien con esta función
Luego para devolver el array a su estado natural tras pasarlo de un script a otro lo hago con esta otra función
¿Hay algo desactivado de esas funciones en miarroba/webcindario?
NO
Cuando mi@ desactiva funciones, los códigos dan errores.
Respecto porque en local te funciona y en remoto no, tendrás que mirarlo, lo más seguro es que en local tengas configurado el php con menos restricciones... yo empezaría por meter unos print_r para asegurarte que antes de pasar el array, esta como crees que esta...
Despues de hacer varias pruebas, lo serializa antes de pasarlo correctamente, pero al pasarlo de un script a otro por post, en el scrpit que lo recibe aparece totalmente en blanco, es decir, como si pasara un valor nulo por POST, por tanto al des-serializar da error porque no hay valor alguno.
No se que restricción que en modo local tenga activa puede estar dando el problema en el remoto. Es verdad que no hay acceso a vuestra php.ini pero si esas funciones no están desactivadas..... hay algo en concreto que pueda ser?
Es que veo algo jodido el tener que cambiar toda la programación y pasar ese array de otra forma (que no se si la habrá) de script a script, aunque si no hay mas remedio tendré que hacerlo asi.
Aún asi espero tu respuesta, gracias de nuevo
Edito mi mensaje: he intentado que en vez de serialize sea a través de una variable de sesión pero esa variable se pasa como un valor vacío. He intentado que en vez de usar un array bidimensional sea unidimensional, pero tampoco, también da un valor vacio ese array. No se, hay algo desactivado con los arrays? es digamos la duda que me queda, o si la variable supera X tamaño, no se pasa? Gracias de nuevo
//-->DES-SERIALIZAMOS PARA COMPROBAR QUE LO HACE BIEN ANTES DE ENVIAR function array_recibe($url_array) { $tmp = unserialize($url_array); return $tmp; }//fin funcion $ejemplo=array_recibe($ejemplo);
//-->VOLVEMOS A RECORRERLO PARA VER SI EXACTAMENTE DA EL MISMO RESULTADO echo"<br><br><br>"; $n = count($ejemplo); $j = 0; while($j<$n) { echo"Posicion $j: $ejemplo[$j]<br>"; $j++; }//fin while echo"<br><br>Hacemos lo propio con PRINT R:<br>"; print_r ($ejemplo);
}//fin existe enviar else { echo"<big><big><strong>RESULTADO DESPUES DE ENVIAR POR FORMULARIO<br></strong></big></big>"; //-->RECIBIMOS POR POST EL ARRAY $ejemplo=$_POST['ejemplo']; //-->DES-SERIALIZAMOS PARA COMPROBAR QUE LO HACE BIEN TRAS RECIBIR function array_recibe($url_array) { $tmp = unserialize($url_array); return $tmp; }//fin funcion $ejemplo=array_recibe($ejemplo);
//-->VOLVEMOS A RECORRERLO PARA VER SI EXACTAMENTE DA EL MISMO RESULTADO echo"<br><br><br>"; $n = count($ejemplo); $j = 0; while($j<$n) { echo"Posicion $j: $ejemplo[$j]<br>"; $j++; }//fin while echo"<br><br>Hacemos lo propio con PRINT R:<br>"; print_r ($ejemplo); print_r ("<br>El valor de count es: " . $n); ?><br /><br /><input type="button" value="Volver" onClick=" window.location.href='arrayejemplop1.php' "><?php
}//fin no existe enviar
?>
Decir que por $_Session este mismo ejemplo si funciona en remoto, asi que alguna cagada tendré que tener en mi código cuando probé a hacerlo por $_Session que no consigo ver, pero aún asi serializando, si es verdad que seguro que tengo otra cagada que aún no he visto pero con este ejemplo, espero poder salir de dudas
No se si te has dado cuenta, pero en ningún momento estás pasando un array por POST, estás pasando una variable con un array serializado como contenido... dícese, una variable normal y corriente que si no te está llegando es porque tienes algo mal al enviarla.
Mira el formulario de envío, que casi seguro el resultado del serialize te está rompiendo el formulario
No se si te has dado cuenta, pero en ningún momento estás pasando un array por POST, estás pasando una variable con un array serializado como contenido... dícese, una variable normal y corriente que si no te está llegando es porque tienes algo mal al enviarla.
Mira el formulario de envío, que casi seguro el resultado del serialize te está rompiendo el formulario
Gracias tambien por tu respuesta
Claro la mando serializada porque por alguna razon que si que se que algo hago mal, al mandarla por $_Session da también valor nulo.
El formulario debe estar bien o eso creo, porque en modo local no da error ninguno, es mas este sería el resultado de Serialize antes de enviar y despues de enviar en modo local:
Mete \ y creo que eso hace que como bien dices lo meta todo en una variable y no en array, pero no entiendo el por qué dado que como digo en local si lo interpreta perfectamente.
Soy consciente de que algo hay mal o al menos mejorable, pero la verdad que estoy perdido o cegado ahora mismo y no lo veo. Sino creo que no he entendido bien lo que me has querido decir en tu respuesta
Intenta usar stripslashes($str) antes de des-serializar.
Gracias por la respuesta!
En el mensaje primero que puse, lo usaba, pero viendo que tampoco cumplia supuestamente su función, lo quise simplificar quitandolo, pero tampoco...... la verdad que no se ya por donde tirar.
@JoaoTeamm, perdona pero no puedo estar a revisar códigos.
En un principio mi consejo es que para enviar hagas un htmlspecialchars del serialize y al recogerlo, un stripslashes antes del unserialize ya que webcindario tiene el magic_quotes activado.
Aquí te dejo un código muy simple (sin comprobaciones ni nada) para que te hagas una idea y puedas partir de ahí:
TU NO PUEDES Escribir nuevos temas en este foro TU NO PUEDES Responder a los temas en este foro TU NO PUEDES Editar tus propios mensajes en este foro TU NO PUEDES Borrar tus propios mensajes en este foro