Problemas con editor de archivos en php

  • Autor Autor marlonj26
  • Fecha de inicio Fecha de inicio
marlonj26

marlonj26

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola chicos llevo días buscando un editor de archivo .html , mi idea es hacer un blog sin base de datos

encontré este código para editar archivos en php, funciona bien en el servidor local de mi pc, pero en el hosting modifica los link y no se por qué

les dejo el codigo

<?php if(!isset($_SESSION)){ session_start(); }
// comprobamos si el formulario
// ha sido enviado correctamente
if(isset($_POST['abrir']) && $_POST['abrir'] == 'Abrir archivo')
{ if (!empty($_POST['archivo'])){ $archivo = $_POST['archivo'];
// creamos la variable de sesion
$_SESSION['archivo'] = $archivo;
// comprobamos que existe el archivo
if (!file_exists($archivo) && !is_file($archivo)){ $msg = "El archivo no existe"; }
else { if($archivo){
// mediante file_get_contents
// mostramos el contenido del archivo en forma de cadena
$codigo = htmlentities(file_get_contents($archivo)); } $msg = "La ruta del archivo es <b>$archivo</b>"; } } else { $msg = "Debe introducir la diraccion del archivo a editar"; } }
// vamos a editar el archivo
if(isset($_POST['editar']) && $_POST['editar'] == 'Editar archivo'){ $archivo = $_SESSION['archivo']; $archivo_editado = $_POST['archivo_editado'];
// comprobamos si podemos escribir en el
if(is_writable($archivo)){ if(!$gestor = fopen($archivo, 'w')){ $msg = "No se puede abrir el archivo <b>$archivo</b>"; exit; }
// escribimos en el archivo
// el contenido de $archivo_editado
if(fwrite($gestor, html_entity_decode($archivo_editado)) === false){ $msg = "No se puede escribir en el archivo $archivo"; }
// Exito...!
$msg = "El archivo <b>$archivo</b> se edito con exito"; if($archivo){
// otra vez mostramos el contenido del archivo
$codigo = htmlentities(file_get_contents($archivo)); } fclose($gestor); }else{ $msg = "No se peude escribir en el archivo <b>$archivo</b>"; } }
// guardamos el archivo
// y destruimos todas las variables
if(isset($_POST['guardar']) && $_POST['guardar'] == 'Guardar'){ unset($archivo); unset($_SESSION['archivo']); } ?> <!-- el formulario --> <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST"> <p>URL: <input type="text" name="archivo" value="" size="50" /> <input type="submit" name="abrir" value="Abrir archivo" /></p> <?php echo "<p>".$msg."</p>"; ?> <textarea name="archivo_editado" rows="25" cols="100"> <?php
// mostramos el codigo
// o el texto del archivo a editar
echo $codigo; ?> </textarea> <p> <input type="submit" name="editar" value="Editar archivo" /> <input type="submit" name="guardar" value="Guardar" /> <input type="reset" value="Restablecer" /> </p> </form>
Algunas anotaciones y fuente

por ejemplo quiero guardar esto
<img src="https://marielaingrid.files.wordpress.com/2014/06/chrome-firefox-internet-explorer1.jpg" />

me lo guarda asi

HTML:
 <img src=\"https://marielaingrid.files.wordpress.com/2014/06/chrome-firefox-internet-explorer1.jpg\" />

me pone \ al principio y al final de la url

espero que me puedan ayudar gracias de antemano
 
Última edición:
Eso pasa cuando pasas unas comillas ( " ) via POST, se soluciona fácilmente con stripslashes(), simplemente en la línea 5 hazlo así:

PHP:
$archivo = stripslashes( $_POST['archivo'] );

Saludos! 🙂
 
como indico, esto lo ponen para contar las comillas ' " ' dentro del array que esta definiendose entre comillas, lo hacen para poder ingresar comillas dentro de comillas y no genere errores
 
Atrás
Arriba