problema al modificar archivo con php

Iniciado por soru13, 11 Junio 2011, 14:47 PM

0 Miembros y 1 Visitante están viendo este tema.

soru13

Hola, tengo el siguiente código que sirve para modificar/crear un archivo dentro del servidor con php

Código (php) [Seleccionar]
<form id="form1" name="form1" method="post" action="index.php">
  <label for="textarea"></label>
  <p align="center">
    <label for="textfield"></label>
    <input name="file" type="text" id="textfield" style="background:#000; border:#0F0; border:dashed; color:#0F0;" value="Nombre del archivo a crear o modificar..." size="80" />
  </p>
  <p align="center">
    <textarea name="source" cols="150" rows="20" id="textarea" style="background:#000; border:#0F0; border:dashed; color:#0F0;">Introduce aquí el código fuente...</textarea>
  </p>
  <p align="center">
    <input type="submit" name="button" id="button" value="Go!" style="background:#000; border:#0F0; border:dashed; color:#0F0;" />
  <?php
$archivo
=$_POST['file'];
$codigo=$_POST['source'];
#////////////////////////////////
if (!empty($archivo)) {
$fp=fopen($archivo,"w+");
fwrite($fp,$codigo);
fclose($fp);
#////////////////////////////////
echo '<h1 align="center">Guardado correctamente</h1>';
 } else {
 }
?>
</p>
</form>


Funciona casi a la perfección,el único fallo que le encuentro es que si introduzco en el Textarea un código php,por ejemplo:

Código (php) [Seleccionar]
<?php echo "prueba"?>

me lo pone así en el archivo modificado/creado

<?php echo \"prueba\"; ?>

y entonces, me da error al ejecutarlo por las barras "\"

¿Porque pasa esto y como puedo solucionarlo?

Gracias


cassiani

Revisa tu archivo php.ini debes tener la directiva magic_quotes_gpc activa, debes cambiar su valor a OFF:
magic_quotes_gpc = Off; valor recomendado

Debería estar en OFF por defecto o.O y lo recomendado es justamente eso.

[opcional] Siempre puedes deshacerte de las barras invertidas desde el mismo código, por si lo deseas, modificas está parte:
$fp=fopen($archivo,"w+");
fwrite($fp,$codigo); # <-- aca
fclose($fp);


por esta otra:
      $fp=fopen($archivo,"w+");
fwrite($fp,stripslashes($codigo));
fclose($fp);


http://php.net/manual/en/function.stripslashes.php