Foros del Web » Programando para Internet » PHP »

el metodo echo tiene limite de caracteres?

Estas en el tema de el metodo echo tiene limite de caracteres? en el foro de PHP en Foros del Web. osea en el echo inclui 343712 caracteres para probar pero me mando un mensaje de error cuando quise insertar en la base de datos, pero ...
  #1 (permalink)  
Antiguo 26/09/2012, 16:13
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
el metodo echo tiene limite de caracteres?

osea en el echo inclui 343712 caracteres para probar
pero me mando un mensaje de error cuando quise insertar en la base de datos, pero solo me lo manda cuando trato de insertar algo tan grande como eso.
a que se debera?


INSERT INTO comentariotemas (idtema,comentariotexto,idusuario) VALUES ('59','aaa..hasta llegar 343712 caracteres','197')
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\Noticias\insertarcomentario.php:20 ) in C:\xampp\htdocs\Noticias\insertarcomentario.php on line 24

Y ojo hago un header por que debo regresar al index y mostrar los datos
Recalco, ese error no me sale cuando envio cualquier cantidad de texto como los temas de aqui normales...
pero quisiera saber por que ocurre eso.
de antemano gracias...!


mmm reedito
me imagino que es por que aun sigue la pagina en el index, mientras esta enviando los datos y como ya los envio entonces termina antes de irse a la pagina que los procesa y la pagina que los procesa trata de hacer un header, pero como la pagina ya esta alli, entonces es imposible redireccionar, me imagino que es por eso.. entonces yo creo que debo verificar en que momento redireccionar. esperar unos segundos mas oO
Ojo,. los datos si se insertan en la base de datos

Última edición por minombreesmm; 26/09/2012 a las 16:19
  #2 (permalink)  
Antiguo 26/09/2012, 16:31
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: el metodo echo tiene limite de caracteres?

Warning: Cannot modify header information - headers already sent by

ese error es tipico, habrás usado header por ahi de mala forma.
investiga http://www.php.net/manual/es/function.header.php
  #3 (permalink)  
Antiguo 26/09/2012, 17:15
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por rodrigo791 Ver Mensaje
Warning: Cannot modify header information - headers already sent by

ese error es tipico, habrás usado header por ahi de mala forma.
investiga [url]http://www.php.net/manual/es/function.header.php[/url]
no lo creo, sabes por que?, por que todo funciona perfecto al menos que el textArea tenga un numero de caracteres superior a 5 digitos..
o puede ser.. aun asi investigare mas..! gracias de antemano :D
  #4 (permalink)  
Antiguo 26/09/2012, 17:17
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: el metodo echo tiene limite de caracteres?

Ese error es porque no podes tener nada antes de lo que envias por la cabecera HTTP, olvidate de mostrar algo en pantalla antes de header, espacios en blanco antes de <?php, etc etc...

cita de http://php.net/manual/es/function.header.php

Recuerde que header() debe ser llamado antes de mostrar nada por pantalla, etiquetas HTML, líneas en blanco desde un fichero o desde PHP. Es un error muy común leer código con funciones como include o require, u otro tipo de funciones de acceso de ficheros que incluyen espacios o líneas en blanco que se muestran antes de llamar a la función header(). Sucede el mismo problema cuando se utiliza un solo fichero PHP/HTML.
  #5 (permalink)  
Antiguo 26/09/2012, 17:31
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por rodrigo791 Ver Mensaje
Ese error es porque no podes tener nada antes de lo que envias por la cabecera HTTP, olvidate de mostrar algo en pantalla antes de header, espacios en blanco antes de <?php, etc etc...

cita de [url]http://php.net/manual/es/function.header.php[/url]

Recuerde que header() debe ser llamado antes de mostrar nada por pantalla, etiquetas HTML, líneas en blanco desde un fichero o desde PHP. Es un error muy común leer código con funciones como include o require, u otro tipo de funciones de acceso de ficheros que incluyen espacios o líneas en blanco que se muestran antes de llamar a la función header(). Sucede el mismo problema cuando se utiliza un solo fichero PHP/HTML.

Y es que no muestro nada.. y el error no ocurre al menos que escriba una cantidad enorme de texto, esa cantidad enorme de texto la pague a word y son 99 paginas a arial tamaño 12..
pero si es inferior a 10 hojas o un poquito mas, no pasa ese error. y es por lo que creo que es por que la pagina aun sigue en la misma direccion, ya que es mucho texto y como la pagina no se ha movido entonces la otra pagina queda trabajando en segundo plano y cuando intenta redireccionar no puede.. ya que esta la pagina aun en vista..


mira este es mi codigo
insertarcomentario.php
session_start();
Código PHP:
Ver original
  1. require('../configuracion.php');
  2. if(isset($_POST['id']))
  3. {
  4.     $usuarioseleccionado=$_POST['usuarioseleccionado'];
  5.     $id=$_POST['id'];
  6.    
  7.     if (cleanString($_POST['comentariotexto'])=="")
  8.     {
  9.          header("Location: ../index.php?content=Noticias/opinar_noticias_del_usuario.php&usuarioseleccionado=".$usuarioseleccionado."&comentariotema=".$id."#abajo");
  10.          exit;
  11.     }
  12.     else
  13.    {
  14.         $comentariotexto=cleanString($_POST['comentariotexto']);
  15.    }
  16.      $consulta_insertar = "INSERT INTO comentariotemas (idtema,comentariotexto,idusuario) VALUES ('$id','$comentariotexto','".$_SESSION['idusuario']."')";
  17.      echo $consulta_insertar;
  18. //die($consulta_insertar);
  19. mysql_query($consulta_insertar,$con) or die("No se pudo dar de alta el registro intenta de nuevo mas tarde.");
  20.  mysql_close(); //mando traer la misma pagina
  21.  header("location: ../index.php?content=Noticias/opinar_noticias_del_usuario.php&usuarioseleccionado=".$usuarioseleccionado."&comentariotema=".$id."#abajo");
  22. }


y asi es como la llamo, teniendo este codigo en el index.php
Código HTML:
Ver original
  1. <form name="formcomentar" enctype="multipart/form-data" action="Noticias/insertarcomentario.php" method="post">
  2. <input name="usuarioseleccionado" type="hidden" value="<? echo $usuarioseleccionado; ?>" />
  3. <input name="id" type="hidden" value="<? echo $id; ?>" />
  4.   <textarea name="comentariotexto" id="comentariotexto" cols="72" rows="5"></textarea>
  5.   <div>
  6. <input name="enviarcomentario"id="enviarcomentario" type="Submit" value="Opinar" />
  7.  
  8.  
  9. </div>
  10. </form>
  #6 (permalink)  
Antiguo 26/09/2012, 17:34
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: el metodo echo tiene limite de caracteres?

Código PHP:
Ver original
  1. $consulta_insertar = "INSERT INTO comentariotemas (idtema,comentariotexto,idusuario) VALUES ('$id','$comentariotexto','".$_SESSION['idusuario']."')";
  2. echo $consulta_insertar;
  3.  
  4. ...
  5. ...
  6.  
  7.  header("location: ../index.php?content=Noticias/opinar_noticias_del_usuario.php&usuarioseleccionado=".$usuarioseleccionado."&comentariotema=".$id."#abajo");

estas mostrando texto en pantalla antes de header
  #7 (permalink)  
Antiguo 26/09/2012, 17:43
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por rodrigo791 Ver Mensaje
Código PHP:
Ver original
  1. $consulta_insertar = "INSERT INTO comentariotemas (idtema,comentariotexto,idusuario) VALUES ('$id','$comentariotexto','".$_SESSION['idusuario']."')";
  2. echo $consulta_insertar;
  3.  
  4. ...
  5. ...
  6.  
  7.  header("location: ../index.php?content=Noticias/opinar_noticias_del_usuario.php&usuarioseleccionado=".$usuarioseleccionado."&comentariotema=".$id."#abajo");

estas mostrando texto en pantalla antes de header
tienes razon ya la quite, pero me da otro error...

cuando pongo 1886769 caracteres..
me manda esto
Warning: mysql_query() [function.mysql-query]: MySQL server has gone away in C:\xampp\htdocs\Noticias\insertarcomentario.php on line 22

Warning: mysql_query() [function.mysql-query]: Error reading result set's header in C:\xampp\htdocs\Noticias\insertarcomentario.php on line 22
No se pudo dar de alta el registro intenta de nuevo mas tarde.

y ya me fije, el servidor esta funcionando por que si envio algo mas pequeño si lo agarra..

podria ahorrarme esos problemas validando el numero limite de caracteres pero quisiera saber si es posible dejar que el usuario capture la cantidad de caracteres que quiera, que tal si quiere meter todo un libro :D
  #8 (permalink)  
Antiguo 26/09/2012, 17:48
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: el metodo echo tiene limite de caracteres?

El límite seguramente está en la base de datos.

Normalmente por parte de php el límite está en la cantidad de memoria que le permitas en ejecución.
  #9 (permalink)  
Antiguo 26/09/2012, 17:51
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: el metodo echo tiene limite de caracteres?

solo tenes que explorar un poco http://www.forosdelweb.com/f86/mysql...e-away-492694/

cuando tengas un error, trata de solucionarlo vos primero, si no tenes una respuesta para eso entonces www.google.com si vas y lo pones, vas a ver que a 10000000 usuarios ya le paso lo mismo alguna vez
  #10 (permalink)  
Antiguo 26/09/2012, 18:02
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por ocp001a Ver Mensaje
El límite seguramente está en la base de datos.

Normalmente por parte de php el límite está en la cantidad de memoria que le permitas en ejecución.
No el limite no esta en la base de datos por que cuando recargo la noticia, carga todo lo que habia insertado....
:S

es tipo longtext
  #11 (permalink)  
Antiguo 26/09/2012, 18:03
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por rodrigo791 Ver Mensaje
solo tenes que explorar un poco [url]http://www.forosdelweb.com/f86/mysql-server-has-gone-away-492694/[/url]

cuando tengas un error, trata de solucionarlo vos primero, si no tenes una respuesta para eso entonces [url]www.google.com[/url] si vas y lo pones, vas a ver que a 10000000 usuarios ya le paso lo mismo alguna vez
gracias amigo.. pero pues yo hago eso siempre., exploro primero y si encuentro algo pues ya no lo pregunto XD..
gracias por el enlace :D
  #12 (permalink)  
Antiguo 26/09/2012, 18:06
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: el metodo echo tiene limite de caracteres?

No solo fíjate que sea longtext, sino fíjate cuanto es el limite de caracteres que le asignaste a ese dato en tu tabla, si lo supera habrá problemas.
Y fíjate en lo que te deje, inténtalo vos también.
  #13 (permalink)  
Antiguo 26/09/2012, 18:22
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por rodrigo791 Ver Mensaje
No solo fíjate que sea longtext, sino fíjate cuanto es el limite de caracteres que le asignaste a ese dato en tu tabla, si lo supera habrá problemas.
Y fíjate en lo que te deje, inténtalo vos también.
ah oks, no le asigne limite, supongo que agarra el maximo por default, aun asi no he tenido problemas en almacenar, si no en la cabecera..
habia hecho eso que me dices antes de que lo pusieras, pero yo lo habia hecho asi..
sin tener que abrir el php.ini, por que por alguna extraña razon nunca hace lo que modifico..
asi que use esto en php

Código PHP:
Ver original
  1. <?php ini_set('max_execution_time', 300);// 5 minutos. ?>

Bueno, queria saber si esta opcion siempre es permitida en todos los hostings?
ya que si es compartido dicen que no se puede acceder al archivo php.ini, y dicen que esta es la solucion, pero habra hostings compartidos que restrinjan eso?

aun asi me da el segundo error que puse..

intentare los otros parametros

puse esto en otra seccion donde subo archivos

ini_set ( 'max_execution_time' , 500 );
ini_set ('max_input_time' , 500);
ini_set ('memory_limit' , '500M');
ini_set ('post_max_size' , '200M');
ini_set ('upload_max_filesize' , '200M');
ini_set ('upload_tmp_dir' , '/xyz');

pero no sube archivos de mas de 10Mb no se por que.. mmm
el primer párametro max_exec time
si lo agarra...

Última edición por minombreesmm; 26/09/2012 a las 18:57
  #14 (permalink)  
Antiguo 26/09/2012, 22:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: el metodo echo tiene limite de caracteres?

Yo he recibido el mensaje de "MySQL server has gone away" sólo al enviar gran cantidad de inserts al restaurar una base de datos muy grande, sólo tuve que separar las consultas para evitar el problema.

Será posible ver la estructura de tu tabla y el código que tienes en cleanString()?

Ahora, me parece que un sistema de comentarios donde permitas tantos caracteres te va a generar muchos problemas, un límite entre 500 y 1,000 caracteres generalmente es suficiente, porque son sólo comentarios.

En un foro, como FDW, el límite es de 20,000 caracteres.

Finalmente, hay ciertas cosas que no se pueden modificar en tiempo de ejecución y se deben hacer directamente desde php.ini, como tamaño máximo de archivos y contenido en POST y la explicación es muy sencilla:

PHP recibe primero la petición y después procesa el script y si se sobrepasan los límites de post_max_size o upload_max_filesize, sólo obtienes una página el blanco.

Y, efectivamente, en hosting compartidos no podrás modificar php.ini, por lo que si tu proyecto tiene esos requerimientos, deberás pensar en un VPS como mínimo.
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 27/09/2012, 10:15
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: el metodo echo tiene limite de caracteres?

Cita:
Iniciado por Triby Ver Mensaje
Yo he recibido el mensaje de "MySQL server has gone away" sólo al enviar gran cantidad de inserts al restaurar una base de datos muy grande, sólo tuve que separar las consultas para evitar el problema.

Será posible ver la estructura de tu tabla y el código que tienes en cleanString()?

Ahora, me parece que un sistema de comentarios donde permitas tantos caracteres te va a generar muchos problemas, un límite entre 500 y 1,000 caracteres generalmente es suficiente, porque son sólo comentarios.

En un foro, como FDW, el límite es de 20,000 caracteres.

Finalmente, hay ciertas cosas que no se pueden modificar en tiempo de ejecución y se deben hacer directamente desde php.ini, como tamaño máximo de archivos y contenido en POST y la explicación es muy sencilla:

PHP recibe primero la petición y después procesa el script y si se sobrepasan los límites de post_max_size o upload_max_filesize, sólo obtienes una página el blanco.

Y, efectivamente, en hosting compartidos no podrás modificar php.ini, por lo que si tu proyecto tiene esos requerimientos, deberás pensar en un VPS como mínimo.
Debe haber una lista de cosas del php que se puedan modificar en tiempo de ejecucion verdad..
Orales un vps que es? disculpa mi ignorancia...
un servidor dedicado?

bueno aqui mi funciona clean

Código PHP:
Ver original
  1. <? function cleanString($string)
  2. {
  3. * * $string=trim($string);
  4. * * $string=mysql_escape_string($string);
  5. * * $string=htmlspecialchars($string);
  6. * * $string=htmlspecialchars($string, ENT_QUOTES);
  7. * * $string=htmlentities($string);
  8. * * $string = strip_tags($string);
  9. * * return $string;
  10. }
  11. ?>
  #16 (permalink)  
Antiguo 27/09/2012, 13:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: el metodo echo tiene limite de caracteres?

Sí hay una lista de cosas que se pueden modificar en tiempo de ejecución, consulta el manual.

VPS = Virtual Private Server, en palabras sencillas: Un servidor dedicado se divide en varias partes que se les asignan recursos específicos: Procesador, memoria, disco, ancho de banda; y lo manejas como si fuera un "servidor dedicado pequeño", con acceso a panel de control, consola, etc.

Ya te comenté lo que pienso de esa función en el otro tema.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: echo, limite, metodo, 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 23:30.