Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: i-Charlie en 6 Octubre 2009, 17:52 pm



Título: Editar y guardar ficheros [Solucionado]
Publicado por: i-Charlie en 6 Octubre 2009, 17:52 pm
Hola

Mi idea es hacer un pequeño script en php que me permite elegir entre 3 ficheros del server, leerlos y posteriormente volver a guardarlos.

Fichero html para elegir el fichero a editar:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<center>
<form id="form2" name="form2" method="post" action="index.php">
  <label>
  <select name="opcion" id="opcion">
    <option value="menu1">fich1</option>
    <option value="menu2">fich2</option>
    <option value="menu3">fich3</option>
  </select>
  </label>
<br />
  <input name="enviar" type="submit" value="enviar" />
</form>
</center>

</body>
</html>

Fichero2, recibe la opción anterior con POST y dependiendo del valor elegido carga un fichero u otro y posteriormente (con el submit) llamada a index3.php que es quien se encarga de guardarlo:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<form name="area" method="post" action="index3.php">
<textarea name="area1" id="area1" cols="60" rows="20">
<?  
$variable = $_POST[opcion];

if ($variable == "menu1")
$fichero = "archivo.txt";

if ($variable == "menu2")
$fichero = "archivo2.txt";

if ($variable == "menu3")
$fichero = "archivo3.txt";

$fp = fopen($fichero,"r");
fpassthru($fp);
fclose($fp);

?>

  </textarea><br />
      <textarea name="menux" id="menux" cols="10" rows="1">
<?  
echo $variable;
?>
      </textarea>
<input name="enviar" type="submit" value="enviar" />
</form>
</body>
</html>

Aqui en el index3.php he probado de todo, pero no sale. Lo último fue cargar el valor del menú a editar en otro textarea (que luego ya lo ocultaría con css) pero esto es muy chapuza. He intentado comparar con condiciones if y strcmp ($var1, $var2) pero tampoco tiraba.

Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba para mi script</title>
</head>

<body>

<?
$menu2 = $_POST["menux"];
echo $menu2;

switch($menu2){
case ("menu1"):
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
case ("menu2"):
$fp = fopen("archivo2.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
case ("menu3"):
$fp = fopen("archivo3.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
break;
default:
echo "tus padres son hermanos, esto dá error";
break;
}

?>

</body>
</html>

Alguna ayuda? Sugerencia? Otra forma de plantear mi problema?

Gracias de antemano
Un saludo! ;-)


Título: Re: Editar y guardar ficheros
Publicado por: дٳŦ٭ en 6 Octubre 2009, 19:21 pm
Tus archivos tienen permisos?


Título: Re: Editar y guardar ficheros
Publicado por: WHK en 6 Octubre 2009, 20:12 pm
Citar
<form id="form2" name="form2" method="post" action="index.php">
Te estás enviando la petición al mismo archivo 1 y se supone que lo deberías enviar hacia el archivo 2 no?

además...
Código
  1. .....
  2. <textarea name="area1" id="area1" cols="60" rows="20">
  3. <?
  4. $variable = $_POST
  5. ......
  6. [opcion];

Decir <? no es lo mismo a decir <?php ya que lo que haces tu es una forma de abreviar el tag de apertura y eso es opcional en una configuración de php desde php.ini y no todos lo soportan por lo tanto ese script puede que se ejecute en algunos servidores webs como puede que no se ejecute y no verás su código... vee el código fuente desde tu explorador del archivo y fijate si te aparece el código fuente del php (si usas firefox de ve de color rosa), si no te aparece entonces todo bién pero te recomiendo que te acostumbres a usar <?php en ves de <?

saludos.


Título: Re: Editar y guardar ficheros
Publicado por: i-Charlie en 6 Octubre 2009, 21:36 pm
Gracias por vuestas respuestas.

Tus archivos tienen permisos?
Si los tienen.

Citar
<form id="form2" name="form2" method="post" action="index.php">
Te estás enviando la petición al mismo archivo 1 y se supone que lo deberías enviar hacia el archivo 2 no?
Es que el segundo fichero se llama index.php

Mi servidor lee la etiqueta jeje

El caso es que cuando lo hago con un solo menú y en el tercer y último archivo solamente pongo:
Código:
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
Me funciona correctamente. Por tanto mi problema está en que el segundo fichero le tiene que pasar al index3.php que menú está editando y dependiendo de eso index3.php deberá sobreescribir en un fichero o en otro.


Gracias!


Título: Re: Editar y guardar ficheros
Publicado por: WHK en 7 Octubre 2009, 01:38 am
porque no haces un solo php donde le des las tres rutas y abra tres textareas? despues le das en guardar y guarde los tres archivos


Título: Re: Editar y guardar ficheros
Publicado por: i-Charlie en 7 Octubre 2009, 07:17 am
Si es una posibilidad, de hecho esa me funciona sin problemas pero me resulta una solución poco estética porque ¿qué pasaría si tuviera 10 ficheros? pongo 10 textarea...



Título: Re: Editar y guardar ficheros
Publicado por: i-Charlie en 7 Octubre 2009, 23:51 pm
index.php: se elige el fichero a editar
index2.php: abre el fichero y llama a index3.php para guardarlo
index3.php: compara los valores del input y guarda el fichero correspondiente

SOLUCIÓN:

index.php:
Código
  1. <form name="menu_fich" method="post" action="index2.php">
  2.  <select name="opcion">
  3.    <option value="menu1">fichero1</option>
  4.    <option value="menu2">fichero2</option>
  5.    <option value="menu3">fichero3</option>
  6.  </select>
  7.  <input name="enviar" type="submit" value="enviar" />
  8. </form>

index2.php:
Código
  1. <form name="area_editar" method="post" action="index3.php">
  2. <textarea name="area1" id="area1" cols="60" rows="20">
  3.  
  4. <?PHP  
  5. $variable = $_POST[opcion];
  6. $bba = "";
  7.  
  8. if ($variable == "menu1"){
  9. $fichero = "archivo.txt";
  10. $bba = "menuuno";
  11. }
  12. if ($variable == "menu2"){
  13. $fichero = "archivo2.txt";
  14. $bba = "menudos";
  15. }
  16. if ($variable == "menu3"){
  17. $fichero = "archivo3.txt";
  18. }
  19.  
  20. $fp = fopen($fichero,"r");
  21. fpassthru($fp);
  22. fclose($fp);
  23. ?>
  24.  </textarea>
  25. <input type="hidden" name="menux" maxlength="6" value="<?php echo $bba; ?>" />
  26.  <input name="enviar" type="submit" value="enviar" />
  27. </form>

index3.php:
Código
  1. <?PHP
  2. $menu22 = $_POST[menux];
  3. $menu = (string) $menu22;
  4.  
  5. if (strcmp($menu, 'menuuno') == 0){
  6. $fp = fopen("archivo.txt","w+");
  7. fwrite($fp,$_POST["area1"]);
  8. fclose($fp);
  9. }elseif (strcmp($menu, 'menudos') == 0){
  10. $fp = fopen("archivo2.txt","w+");
  11. fwrite($fp,$_POST["area1"]);
  12. fclose($fp);
  13. }else{
  14. $fp = fopen("archivo3.txt","w+");
  15. fwrite($fp,$_POST["area1"]);
  16. fclose($fp);
  17. }
  18. ?>

Es muy fácil añadir o quitarle ficheros y bastante limpio.

Gracias por vuestros comentarios/ayudas

Un saludo!


Título: Re: Editar y guardar ficheros
Publicado por: дٳŦ٭ en 8 Octubre 2009, 19:45 pm
Gracias por compartir la solución. Saludos