Foros del Web » Programando para Internet » PHP »

Error con las comillas en un script de noticias

Estas en el tema de Error con las comillas en un script de noticias en el foro de PHP en Foros del Web. Tengo un par de problemas con un código en php que utilizo como gestor de noticias en mi web... El caso esq al mandar una ...
  #1 (permalink)  
Antiguo 08/06/2004, 17:49
 
Fecha de Ingreso: junio-2004
Ubicación: Demasiado lejos
Mensajes: 52
Antigüedad: 19 años, 10 meses
Puntos: 0
Error con las comillas en un script de noticias

Tengo un par de problemas con un código en php que utilizo como gestor de noticias en mi web... El caso esq al mandar una noticia desde un form no me muestra bien las comillas ya que si yo escribo '"hola"' me devuelve '\"hola\"'.

Tambien quiero solucionar que al darle a la tecla "Enter" me salga un error y me descoloque todo el script...

Bueno, aqui mismo dejo el código de todos los ficheros:

admin.php
------------------------------
Código:
<table width="93%" align="center"><tr><td>
<? include("index/noticias/config.php");
	switch($accion) {
	case panel:

	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {
?>
<form name="form" action="index.php?page=Admin" method="post"><input type="hidden" name="user" value="<?= $user ?>">
    <input type="hidden" name="pass" value="<?= $pass ?>"><table width="1%" align="center" cellpadding="5">
            <tr> 
              <td><div align="center"><select size="1" name="accion" class="form">
                <option value="nuevo">Insertar</option>
                <option value="borrar">Borrar</option>
              </select></div></td>
              <td><div align="center"><input name="submit" type="submit" class="form" value="Entrar"></div></td>
            </tr>
          </table>
        </form>
		<? } else { ?>
      <div align="center"><font size="2">Error: Nombre o contraseña incorrectos.<br>
<br><b><a href="index.php?page=Admin">Volver</a></b></font></div>
<? } break; case nuevo: if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) { ?>
<form name="form" action="index.php?page=Admin" method="post"><div align="center"><input type="hidden" name="accion" value="publicar">
<input type="hidden" name="user" value="<?= $user ?>"><input type="hidden" name="pass" value="<?= $pass ?>"><font size="2">Nombre:</font>
<br><br><input name="nombre" type="text" class="form" size="80"><br><br><font size="2">Titulo:</font><br><br><input type="text" name="titulo" size="80" class="form">
<br><br><font size="2">Contenido:</font><br><br><textarea rows="10" name="contenido" cols="77" class="form"></textarea>
          <br></div><br>
        <font size="2"><strong>Notas</strong>:<br>
        - No se pueden utilizar comillas; si quieres usar c&oacute;digo HTML tendr&aacute;s 
        que hacerlo de la siguiente manera: &quot;<strong>&lt;a href=WEB&gt;WEB&lt;/a&gt;</strong>&quot; 
        o &quot;<strong>&lt;img src=IMAGEN&gt;</strong>&quot; (por ejemplo).<br>
        - Para 
        cambiar de l&iacute;nea hay que usar la etiqueta &quot;<strong>&lt;br&gt;</strong>&quot; 
        ya que si lo haces normalmente se producir&aacute; un error.</font><br>
        <br><div align="center"><input type="submit" value="Enviar" color: "#505F71" class="form"></div></form><? } else { ?><div align="center">
<font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php">Volver</a></b></font></div>
<?
	}
	break;
	case publicar:

	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {

	$fecha = date("d/m/Y");
	$nombre = trim($nombre); $titulo = trim($titulo);
$contenido = trim($contenido);
if(empty($nombre)) { $error[] = "Nombre."; }
if(empty($titulo)) { $error[] = "Título."; }
if(empty($contenido)) { $error[] = "Contenido."; } if($error) { ?>
<div align="center"><font size="2">Error, faltan los siguientes datos:<br><br>
<? for($i = 0; $i < sizeof($error); $i++) { echo "- $error[$i]<br>"; } ?><br><b>
<a href="index.php?page=Admin">Volver</a></b></font></div><? } else { $fp = fopen($FicheroId,"r"); $id = fread($fp, filesize($FicheroId)); $id ++; fclose($fp); $fp = fopen($FicheroId, "w");
fwrite($fp, $id); fclose($fp); $firma = "$id|@|$nombre|@|$titulo|@|$contenido|@|$fecha|@|\n"; $fp = fopen($FicheroBase, "a");
fwrite($fp, $firma); fclose($fp); ?><div align="center"><font size="2">&iexcl;La noticia ha sido publicada con &eacute;xito!<br><br>
<b><a href="index.php?page=Noticias">Volver</a></b></font></div><? } } else { ?><div align="center">
<font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php?page=Noticias">Volver</a></b></font></div>
<?
	}
	break;
	
	case borrar:

	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {

	if($idmensaje) {

	$Base = file($FicheroBase);

	for ($i = 0; $i < count($Base); $i++) {
	$dato = explode("|@|", $Base[$i]);

	if ($dato[0] == $idmensaje) {
	$Base[$i] = "";
	
	$fp = fopen("$FicheroBase", "w+");
	for ($i = 0; $i < count($Base); $i++) {
	fwrite($fp, $Base[$i]);
	}
	fclose($fp);
?>
<div align="center">
<font size="2">&iexcl;La noticia ha sido eliminada con &eacute;xito!<br><br><b><a href="index.php?page=Noticias">Volver</a></b>
</font></div>
<?
	}
	}
	} else {
?>
<form action="index.php?page=Admin" method="post"><div align="center"><input type="hidden" name="accion" value="borrar">
<input type="hidden" name="user" value="<?= $user ?>"><input type="hidden" name="pass" value="<?= $pass ?>">
<font size="2">Número de la noticia:</font><br><br><input type="text" name="idmensaje" size="80" class="form"><br><br></div>
        <font size="2"><strong>Nota</strong>: No se pueden borrar varias noticias 
        a la vez.</font><br>
        <br>
<div align="center"><input type="submit" value="Borrar" class="form"></div></form><hr width="100%" size="2" color="#3E0E0E" noshade></td></tr>
</table><table width="93%" align="center">
<?
	$Base = file($FicheroBase);

	for ($i = 0; $i < count($Base); $i++) {
	$dato = explode("|@|", $Base[$i]);

	$dato[4] = str_replace("<br>", " - ", $dato[4]);
?>
  <tr><td><strong><font size="2">Nº <?= $dato[0] ?></font></strong>:<font size="2"> <?= $dato[2] ?></font></td></tr><tr><td>
  </td></tr><? } ?><table><? } } else { ?></table><table width="93%" align="center"><div align="center">
  <font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php?page=Admin">Volver</a></b></font></div>
  <?
	}
	break;
	default:
?>
<table width="93%" align="center"><form name="form" action="index.php?page=Admin" method="post"><tr><td><div align="center">
<input type="hidden" name="accion" value="panel"><font size="2">Nombre:</font><br><br>
<input type="text" name="user" size="80" class="form"><br><br><font size="2">Contraseña:</font><br><br>
<input type="password" name="pass" size="80" class="form"><br><br><input type="submit" value="Entrar" class="form"></div></td></tr>
</form></table><? } ?></table>
config.php
------------------------------
Código:
<?
	$NombreAdmin = "user";
	$ContraseñaAdmin = "pass";
	$LimiteNoticias = 10;
	$FicheroBase = "index/noticias/noticias/noticias.php";
	$FicheroId = "index/noticias/noticias/id.php";
?>
index.php
------------------------------
Código:
<? include("config.php");

	$Base = file($FicheroBase);
	$Orden = array_reverse($Base);

	if(empty($page2)) {$page2 = 0;}
	$Mostrar = $page2 + $LimiteNoticias;

	for ($i = $page2; $i < count($Orden) AND $i < $Mostrar; $i++) {$dato = explode("|@|", $Orden[$i]);

 	$nombre = $dato[1];
	$titulo = $dato[2];
	$contenido = $dato[3];
	$fecha = $dato[4];
	
	include("noticias.php");}

	function Antiguas() {global $LimiteNoticias, $Base; if($LimiteNoticias < count($Base))
	{$Paginas = count($Base) / $LimiteNoticias; echo "<font size='2'><b>Noticias antiguas: </b>";
	for($i = 0; $i < $Paginas; $i++) {echo "<a href=index.php?page2=". $i * $LimiteNoticias .">". ( $i + 1 ) ."</a> \n";}
	return;}} ?>

<hr width="93%" size="2" color="#3E0E0E" noshade><br><table cellpadding="5" cellspacing="1" width="96%" align="center"><tr><td><div align="justify"><? Antiguas(); ?></div></font></td></tr></table>
noticias.php
------------------------------
Código:
<table width="93%" align="center"><tr><td> <div align="center"><strong><font size="2"><?= $titulo ?></font></strong></div></td></tr><tr><td><div><font size="2"><?= $contenido ?></font></div></td></tr><tr><td align="center"><div align="right"><font size="2">Por <b><a href="index.php?page=Email"><?= $nombre ?></a></b> el <b> <?= $fecha ?></b></font></div></td></tr></table><br><br>
Los ficheros id.php y noticias.php que estan en la carpeta noticias/ no los pongo porque estan vacíos (ya que es ahí donde se almacenan los datos).

Se que es mucho código a revisar pero por más que lo miro yo sólo no consigo arreglarlo y estaría bien que alguien de este foro que controlase del tema le echase un vistazo.

Muchas gracias!
__________________
I'll be here..., Why...?, I'll be 'waiting'...here..., For what?, I'll be waiting...for you...so..., If you come here..., You'll find me, I promise.
  #2 (permalink)  
Antiguo 08/06/2004, 18:13
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
De acuerdo

loading..........


Justo aqui
Código PHP:
$fecha date("d/m/Y");
    
$nombre trim($nombre); $titulo trim($titulo);
$contenido trim($contenido);
if(empty(
$nombre)) { $error[] = "Nombre."
ponle


Stripslashes
http://bo.php.net/manual/es/printwn/...ripslashes.php
osea
Código PHP:
$fecha date("d/m/Y");
    
$nombre trim($nombre); $titulo trim($titulo);
$contenido stripslashes($contenido);
if(empty(
$nombre)) { $error[] = "Nombre."
trim no creo que sea necesario porque si pones espacio en un formulario este no te devolverá --> &nbsp;
y como vas a pegar lo que mandas en el formulario como noticia en HTML

asi ponga 1000 espacios esto nunca se mostrará
chekate todo sobre cadenas.
http://bo.php.net/manual/es/printwn/ref.strings.php



connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 09/06/2004, 03:09
 
Fecha de Ingreso: junio-2004
Ubicación: Demasiado lejos
Mensajes: 52
Antigüedad: 19 años, 10 meses
Puntos: 0
Muy bien, ya he cambiado lo que me has dicho y funciona :D

Ahora el problema de las comillas no esta pero el otro si... Que cuando le das al "Intro" te produce un error.

He mirado un poco los ficheros y creo que esto lo hace porque almacena las noticias asi:

|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo

Se supone que si le das al intro se escribiría de esta manera:

|@|nombre|@|conte

nido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo
|@|nombre|@|contenido|@|titulo

No se si me explico... por lo visto lo que hace el script es cojer cada linea como una noticia diferente asi que al darle al enter te contabiliza unas cuantas noticias de más.

Gracias por la ayuda
__________________
I'll be here..., Why...?, I'll be 'waiting'...here..., For what?, I'll be waiting...for you...so..., If you come here..., You'll find me, I promise.
  #4 (permalink)  
Antiguo 09/06/2004, 12:29
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading.........


porque no usas

nl2br

osea supongo que el salto se dá (aunque lo dudo mucho porque lo que te coje ahi es una variable y en el archivo te texto ya se escribe lo que agarró la variable) en el cuerpo de la noticia.

Código PHP:
$contenido stripslashes(nl2br($contenido)); 
asi cada --


<- enter
<--enter

<--enter

lo convierta en un <BR>




connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 09/06/2004, 14:49
 
Fecha de Ingreso: junio-2004
Ubicación: Demasiado lejos
Mensajes: 52
Antigüedad: 19 años, 10 meses
Puntos: 0
Acabo de probar eso y no me ha servido de nada, sorry...

Hay alguna manera de hacer que se sustituyan todos los saltos de linea por un <br>? Supongo que eso es más o menos lo que intentaba explicarme MaBoRaK pero ya veis que no va jejej

Thx
__________________
I'll be here..., Why...?, I'll be 'waiting'...here..., For what?, I'll be waiting...for you...so..., If you come here..., You'll find me, I promise.
  #6 (permalink)  
Antiguo 09/06/2004, 14:54
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
www.php.net/nl2br

$contenido = stripslashes($contenido);
$conenido = nl2br($contenido);

Asi deberia funcionar!
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #7 (permalink)  
Antiguo 09/06/2004, 16:39
 
Fecha de Ingreso: junio-2004
Ubicación: Demasiado lejos
Mensajes: 52
Antigüedad: 19 años, 10 meses
Puntos: 0
Cita:
Iniciado por Gerald
www.php.net/nl2br

$contenido = stripslashes($contenido);
$conenido = nl2br($contenido);

Asi deberia funcionar!
Sigue sin funcionar...
__________________
I'll be here..., Why...?, I'll be 'waiting'...here..., For what?, I'll be waiting...for you...so..., If you come here..., You'll find me, I promise.
  #8 (permalink)  
Antiguo 10/06/2004, 05:01
 
Fecha de Ingreso: junio-2004
Ubicación: Demasiado lejos
Mensajes: 52
Antigüedad: 19 años, 10 meses
Puntos: 0
Ya he arreglado el error!!!

Lo que he hecho ha sido incluir la linea "$contenido = ereg_replace("\r\n","<br>", $contenido);" antes de que abriese el fichero para escribirlo.

Aqui dejo el código entero del admin.php por si le interesa a alguien:


Código:
<table width="93%" align="center"><tr><td>
<? include("index/noticias/config.php");
	switch($accion) {
	case panel:
	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {
?>
<form name="form" action="index.php?page=Admin" method="post"><input type="hidden" name="user" value="<?= $user ?>">
    <input type="hidden" name="pass" value="<?= $pass ?>"><table width="1%" align="center" cellpadding="5">
            <tr> 
              <td><div align="center"><select size="1" name="accion" class="form">
                <option value="nuevo">Agregar</option>
                <option value="borrar">Borrar</option>
              </select></div></td>
              <td><div align="center"><input name="submit" type="submit" class="form" value="Entrar"></div></td>
            </tr>
          </table>
        </form>
		<? } else { ?>
      <div align="center"><font size="2">Error: Nombre o contraseña incorrectos.<br>
<br><b><a href="index.php?page=Admin">Volver</a></b></font></div>
<? } break; case nuevo: if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) { ?>
<form name="form" action="index.php?page=Admin" method="post"><div align="center"><input type="hidden" name="accion" value="publicar">
<input type="hidden" name="user" value="<?= $user ?>"><input type="hidden" name="pass" value="<?= $pass ?>"><font size="2">Nombre:</font>
<br><br><input name="nombre" type="text" class="form" size="80"><br><br><font size="2">Titulo:</font><br><br><input type="text" name="titulo" size="80" class="form">
<br><br><font size="2">Contenido:</font><br><br><textarea rows="10" name="contenido" cols="77" class="form"></textarea>
          <br></div><br><strong>ETIQUETAS HTML:</strong><font size="2"><br>
        &lt;a href=javascript:Popup('index/enlaces/enlaces.php?<em>WEB'</em>)&gt;<em>TEXTO</em>&lt;/a&gt;<em><br>
        </em>&lt;img src=&quot;<em>IMAGEN</em>&quot;&gt;<br>
        &lt;center&gt;<em>TEXTO</em>&lt;/center&gt;<br>
        &lt;strong&gt;<em>TEXTO</em>&lt;/strong&gt;<br>
        &lt;em&gt;<em>TEXTO</em>&lt;/em&gt;</font><br>
        <br><div align="center"><input type="submit" value="Enviar" color: "#505F71" class="form"></div></form><? } else { ?><div align="center">
<font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php">Volver</a></b></font></div>
<?
	}
	break;
	case publicar:

	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {

	$fecha = date("d/m/Y");
	$nombre = stripslashes($nombre); $titulo = stripslashes($titulo);
	$contenido = stripslashes($contenido);
if(empty($nombre)) { $error[] = "Nombre."; }
if(empty($titulo)) { $error[] = "Título."; }
if(empty($contenido)) { $error[] = "Contenido."; } if($error) { ?>
<div align="center"><font size="2">Error, faltan los siguientes datos:<br><br>
<? for($i = 0; $i < sizeof($error); $i++) { echo "- $error[$i]<br>"; } ?><br><b>
<a href="index.php?page=Admin">Volver</a></b></font></div><? } else { $contenido = ereg_replace("\r\n","<br>", $contenido); $fp = fopen($FicheroId,"r"); $id = fread($fp, filesize($FicheroId)); $id ++; fclose($fp); $fp = fopen($FicheroId, "w");
fwrite($fp, $id); fclose($fp); $firma = "$id|@|$nombre|@|$titulo|@|$contenido|@|$fecha|@|\n"; $fp = fopen($FicheroBase, "a");
fwrite($fp, $firma); fclose($fp); ?><div align="center"><font size="2">&iexcl;La noticia ha sido publicada con &eacute;xito!<br><br>
<b><a href="index.php?page=Noticias">Volver</a></b></font></div><? } } else { ?><div align="center">
<font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php?page=Noticias">Volver</a></b></font></div>
<?
	}
	break;
	
	case borrar:

	if($NombreAdmin == $user AND $ContraseñaAdmin == $pass) {

	if($idmensaje) {

	$Base = file($FicheroBase);

	for ($i = 0; $i < count($Base); $i++) {
	$dato = explode("|@|", $Base[$i]);

	if ($dato[0] == $idmensaje) {
	$Base[$i] = "";
	
	$fp = fopen("$FicheroBase", "w+");
	for ($i = 0; $i < count($Base); $i++) {
	fwrite($fp, $Base[$i]);
	}
	fclose($fp);
?>
<div align="center">
<font size="2">&iexcl;La noticia ha sido eliminada con &eacute;xito!<br><br><b><a href="index.php?page=Noticias">Volver</a></b>
</font></div>
<?
	}
	}
	} else {
?>
<form action="index.php?page=Admin" method="post"><div align="center"><input type="hidden" name="accion" value="borrar">
<input type="hidden" name="user" value="<?= $user ?>"><input type="hidden" name="pass" value="<?= $pass ?>">
<font size="2">Número de la noticia:</font><br><br><input type="text" name="idmensaje" size="80" class="form"><br><br></div>
        <font size="2"><strong>Nota</strong>: No se pueden borrar varias noticias 
        a la vez.</font><br>
        <br>
<div align="center"><input type="submit" value="Borrar" class="form"></div></form><hr width="100%" size="2" color="#3E0E0E" noshade></td></tr>
</table><table width="93%" align="center">
<?
	$Base = file($FicheroBase);

	for ($i = 0; $i < count($Base); $i++) {
	$dato = explode("|@|", $Base[$i]);

	$dato[4] = str_replace("<br>", " - ", $dato[4]);
?>
  <tr><td><strong><font size="2">Nº <?= $dato[0] ?></font></strong>:<font size="2"> <?= $dato[2] ?></font></td></tr><tr><td>
  </td></tr><? } ?><table><? } } else { ?></table><table width="93%" align="center"><div align="center">
  <font size="2">Error: Identifícate de nuevo.<br><br><b><a href="index.php?page=Admin">Volver</a></b></font></div>
  <?
	}
	break;
	default:
?>
<table width="93%" align="center"><form name="form" action="index.php?page=Admin" method="post"><tr><td><div align="center">
<input type="hidden" name="accion" value="panel"><font size="2">Nombre:</font><br><br>
<input type="text" name="user" size="80" class="form"><br><br><font size="2">Contraseña:</font><br><br>
<input type="password" name="pass" size="80" class="form"><br><br><input type="submit" value="Entrar" class="form"></div></td></tr>
</form></table><? } ?></table>
Salu2
__________________
I'll be here..., Why...?, I'll be 'waiting'...here..., For what?, I'll be waiting...for you...so..., If you come here..., You'll find me, I promise.

Última edición por Dahn; 10/06/2004 a las 05:05
  #9 (permalink)  
Antiguo 03/01/2012, 14:51
 
Fecha de Ingreso: noviembre-2010
Ubicación: argentina
Mensajes: 1
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta preguntamos

hoLa no veo rn la portada del sitio web limitenoticias.com.ar - su contenido- A QUE SE DEBE??
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 11:06.