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ódigo HTML tendrás
que hacerlo de la siguiente manera: "<strong><a href=WEB>WEB</a></strong>"
o "<strong><img src=IMAGEN></strong>" (por ejemplo).<br>
- Para
cambiar de línea hay que usar la etiqueta "<strong><br></strong>"
ya que si lo haces normalmente se producirá 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">¡La noticia ha sido publicada con é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">¡La noticia ha sido eliminada con é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!