Foros del Web » Programando para Internet » PHP »

Ayuda con serialize y unserialize

Estas en el tema de Ayuda con serialize y unserialize en el foro de PHP en Foros del Web. hola estoy tratando de pasar un array por url de esta forma aqui es donde convierto el array y lo paso.... Código: $resul=$busca->loadFolder('../Vista/gran'); $tmp = ...
  #1 (permalink)  
Antiguo 09/03/2010, 13:41
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Ayuda con serialize y unserialize

hola estoy tratando de pasar un array por url de esta forma

aqui es donde convierto el array y lo paso....

Código:
$resul=$busca->loadFolder('../Vista/gran');
$tmp = serialize($resul); 
$tmp = urlencode($tmp); 
header("Location: ../Vista/home.php?resul='.$tmp.'");
aqui es donde lo recivo

Código:
if(isset($_REQUEST['resul'])){
$tmp = stripslashes($_REQUEST['resul']); 
$x = urldecode($tmp); 
$y = unserialize($x); 
}
pero cuando intento imprimir en un for lo que supuestamente tiene el array no sale nada que estoy haciendo mal.

saludos
  #2 (permalink)  
Antiguo 09/03/2010, 13:43
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

Cita:
no sale nada que estoy haciendo mal.
esto estas haciendo mal!

Código PHP:
Ver original
  1. header("Location: ../Vista/home.php?resul='.$tmp.'");

partes con comillas dobles.. y luego concatenas con comillas simples?

dejalo asi

Código PHP:
Ver original
  1. header("Location: ../Vista/home.php?resul=$tmp");

saludos!


PD: como consejo.. si sabes que la informacion la envias por url, utiliza $_GET, el uso de $_REQUEST dejalo exclusivamente para cuando no sepas de donde recibes datos
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 09/03/2010, 13:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Ayuda con serialize y unserialize

Mira el ejemplo que use y funcionó
Código PHP:
Ver original
  1. <?php
  2. $resul = array();
  3. $resul[] = "Primero";
  4. $resul[] = "Segundo";
  5. $resul[] = "Tercero";
  6. $resul[] = "Cuarto";
  7. $tmp = serialize($resul);
  8. $tmp = urlencode($tmp);
  9. var_dump($tmp);
  10. echo "<br /><br />";
  11. $x = urldecode($tmp);
  12. $x = unserialize($x);
Verifica tambien que estas enviando comillas en la consulta.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 09/03/2010, 14:13
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

Muchas gracias por sus respuesta las dos me funcionaron....

pero no entendi el consejo de Hidek1 ojala me pudiera explicar un poco mas sobre lo que me dice..

saludos
  #5 (permalink)  
Antiguo 09/03/2010, 14:23
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

las variables por url tomalas con $_GET["nombreVariable"];
es solo un consejo de seguridad ya que si usas $_REQUEST puedo enviarte un POST por socket y quizá sobrepasar tu seguridad..
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 09/03/2010, 14:26
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

ummm ya entendi muchas gracias por tu consejo , hay algun limite para pasar datos por url....pues cuando paso muchos datos no da respuesta..

saludos.

edit: o seria mejor pasarlos por variables en session

saludos
  #7 (permalink)  
Antiguo 09/03/2010, 14:28
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

la url tiene un limite.. envialos por POST
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 09/03/2010, 14:29
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con serialize y unserialize

Cita:
Iniciado por RIVERMILLOS Ver Mensaje
hay algun limite para pasar datos por url....pues cuando paso muchos datos no da respuesta..
En teoría no debería (no hay tal cosa en la especificación) pero en la práctica sí que la hay y varía de acuerdo al cliente. Son los navegadores quienes imponen sus propios límites.

En general la recomendación es no utilizar más allá de 250 caracteres.
__________________
I ♥ The Music!
  #9 (permalink)  
Antiguo 09/03/2010, 14:29
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

sacado de este mismo foro

Cita:
En Junio de 1999, se publicó la especificación del protocolo HTTP, una especificación bastante completa pero sin una definición exacta con respecto al tamaño máximo que puede tener una URL, debido a esto, los diferentes navegadores han tenido que interpretarlo de la mejor manera y cada uno de ellos tiene una logitud máxima diferente.

* Internet Explorer: 2.083 carácteres
* Firefox: 65.536 carácteres
* Safari: 80.000 carácteres
* Opera: 190.000 carácteres

Pero no solo los navegadores usan URL’s, los servidores web tambien las gestionan y ellos han tenido que interpretar el estandar a su manera.

* Apache: 4.000 carácteres
* Microsoft Internet Information Server (IIS): 16.384 carácteres.
* Perl HTTP::Daemon: 8.000 carácteres.

Así que ya sabemos que no deberíamos hacer uso de URL’s mayores a 2.000 carácteres para que funcionen en todos los navegadores y servidores.
__________________
More about me...
~ @rhyudek1
~ Github
  #10 (permalink)  
Antiguo 09/03/2010, 14:33
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con serialize y unserialize

Cita:
Iniciado por Hidek1 Ver Mensaje
sacado de este mismo foro
Buena información. ¿Tendrás la fuente?
__________________
I ♥ The Music!
  #11 (permalink)  
Antiguo 09/03/2010, 14:41
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

claro

http://www.boutell.com/newfaq/misc/urllength.html
__________________
More about me...
~ @rhyudek1
~ Github
  #12 (permalink)  
Antiguo 09/03/2010, 14:42
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

por post como seria la verdad no sabia que se podia enviar datos por post en url:..

saludos
  #13 (permalink)  
Antiguo 09/03/2010, 15:17
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con serialize y unserialize

pues generas un formulario ? o lo envias por socket..
pero es mas facil el formulario x3
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 09/03/2010, 21:18
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

um que pena ser insistente me podrias dar un ejemplo no se seria algo asi

<form action="pagin.php?$array" >
</form>

saludos
  #15 (permalink)  
Antiguo 09/03/2010, 23:51
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con serialize y unserialize

Cita:
Iniciado por RIVERMILLOS Ver Mensaje
por post como seria la verdad no sabia que se podia enviar datos por post en url:..
No lo hace. Se te sugirió el envío por POST precisamente porque comentaste había un problema con el límite de la URL (al pasar el valor por GET), la solución obvia es, evitar dicha URL.

Pero igual tienes las sesiones que tratarías como arreglos comunes y corrientes en varios archivos, sin preocuparse más allá de iniciar la sesión. ¿Cuál es el propósito de todo esto?; me parece esto, sea lo que sea, es complicarse innecesariamente.


Ah, y para enviar el valor por POST, solo tienes que crear otro componente en tu formulario --un campo oculto--, darle un "name" y asignarle el valor resultante de la serialización. Bastante simple.
__________________
I ♥ The Music!
  #16 (permalink)  
Antiguo 10/03/2010, 07:05
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

muchas gracias por tu respuesta , decidi hacerlo por sesiones pero tambien me lie. no se que que hago mal mira le codigo reformado con sesione.

<?php
session_start();
require '../Logic/BuscaMedia.php';

$año=$_REQUEST['ano'];
$mes=$_REQUEST['mes'];
$dia=$_REQUEST['dia'];
$horai=$_REQUEST['horai'];
$horaf=$_REQUEST['horaf'];
$inicio=$año.$mes.$dia.$horai;
$fin=$año.$mes.$dia.$horaf;
$busca = new BuscaMedia();
$busca->ini($inicio,$fin);
$resul=$busca->loadFolder('../Vista/gran');
$_SESSION['array']=$resul;
header("Location: ../Vista/home.php?resul=resul");
session_write_close();
?>

y aca lo saco

<div class="galeria">
<?php
if(isset($_GET['resul'])){

$tmp =$_SESSION['array'];
if(count($tmp)==0){
echo "NO HAY REGISTRO";
}else{
?>
<div id="fotos"></div>
<div class="foto">
<ul>
<?php
$gale = new gallery();
$gale->loadFolder('gran');
sort($gale->files);
for($i=0; $i<count($tmp);$i++){
echo'<li><img width="100" height="100" id="'.$tmp[$i].'" border="4px" class="thumb" src="'.$gale->path.'/'.$tmp[$i].'" /></li>';
}
?>
</ul>
</div>

pero no funciona XD

saludos
  #17 (permalink)  
Antiguo 10/03/2010, 08:38
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Ayuda con serialize y unserialize

ya lo solucione muchas gracias me fueron de mucha ayuda..

saludos

edit: lo solucione pasando el array por session XD

Etiquetas: serialize, unserialize
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 23:01.