Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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:
<!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:

<!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.

<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 (php) [Seleccionar]

.....
<textarea name="area1" id="area1" cols="60" rows="20">
<?
$variable = $_POST
......
[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.

Cita de: дٳŦ٭ en  6 Octubre 2009, 19:21 PM
Tus archivos tienen permisos?
Si los tienen.

Cita de: 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?
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:
$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 (PHP) [Seleccionar]

<form name="menu_fich" method="post" action="index2.php">
 <select name="opcion">
   <option value="menu1">fichero1</option>
   <option value="menu2">fichero2</option>
   <option value="menu3">fichero3</option>
 </select>
 <input name="enviar" type="submit" value="enviar" />
</form>


index2.php:
Código (PHP) [Seleccionar]

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

if ($variable == "menu1"){
$fichero = "archivo.txt";
$bba = "menuuno";
}
if ($variable == "menu2"){
$fichero = "archivo2.txt";
$bba = "menudos";
}
if ($variable == "menu3"){
$fichero = "archivo3.txt";
}

$fp = fopen($fichero,"r");
fpassthru($fp);
fclose($fp);
?>
 </textarea>
<input type="hidden" name="menux" maxlength="6" value="<?php echo $bba?>" />
 <input name="enviar" type="submit" value="enviar" />
</form>


index3.php:
Código (PHP) [Seleccionar]

<?PHP
$menu22 = $_POST[menux];
$menu = (string) $menu22;

if (strcmp($menu, 'menuuno') == 0){
$fp = fopen("archivo.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}elseif (strcmp($menu, 'menudos') == 0){
$fp = fopen("archivo2.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}else{
$fp = fopen("archivo3.txt","w+");
fwrite($fp,$_POST["area1"]);
fclose($fp);
}
?>


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