PHP - Editor de archivos

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

Editor de archivos

Publicado por Pablo (4 intervenciones) el 16/05/2019 13:35:26
Buenas tardes a todos.

Estoy intentando desarrollar un editor de archivos para una página web. Quiero abrir un archivo .sh, mostrar su contenido en la página, editarlo en ella, y guardar la edición en el archivo de nuevo.

Leo el archivo con PHP y luego muestro su contenido con JS con lo que hago además que este sea editable en la propia página con contenteditable = 'true', sin embargo, no consigo guardar dicho contenido de nuevo en el archivo.

Si alguien tiene alguna idea sería de muy gran ayuda.

Un saludo, gracias por su atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Editor de archivos

Publicado por Mauro (1036 intervenciones) el 16/05/2019 14:49:03
¿Cómo quieres que el contenido llegue de nuevo al usuario?

Si buscas que lo descargue deberías usar algo como:

1
2
3
4
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=archivo.sh');
header('Pragma: no-cache');
readfile("/path/al/archivo.sh");

Otra opción es guardarlo en tu servidor y simplemente poner un link para su descarga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

Editor de archivos

Publicado por Pablo (4 intervenciones) el 16/05/2019 17:29:58
Buenas Mauro, gracias por tu respuesta.

Lo que trato de hacer es como un editor de texto con JavaScript como el que utilizamos para escribir los post en el foro. Que ahí salga el contenido del archivo, poder modificarlo y después sobreescribir el contenido del dicho archivo.

Por internet he encontrado cómo hacer el editor de texto y la parte del contenido del archivo ya la tenía hecha de antes. Para que al recargar no se pierda lo escrito lo guardo en la memoria local. Al final meto el valor de lo escrito en la variable $textedition de PHP, al mostrarla con echo se ve perfectamente, sin embargo, más adelante trato de a través de un formulario POST pasarlo y ahí ya hacer la escritura del archivo, sin embargo, no se porqué cuando hago la comunicación POST no llega nada con esa variable. Con otras variables en el mismo formulario va todo correcto. He pensado que puede ser porque el texto que va dentro de la variable es muy largo y me imagino que habrá un limite, lo que pasa es que entonces no se como puedo hacer lo que me propongo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<button id="editBtn" type="button">Editar documento</button>
 
<div id="editor">
    <h1 id="title"><?php include "nombre.php"?></h1>
    <p>Ultima modificacion por - <span id="author"><?php echo $_SESSION['usuario'];?></span></p>
    <p id="content"><?php include "contenido.php"?></p>
</div>
 
<script>
    var editBtn = document.getElementById('editBtn');
    var editables = document.querySelectorAll('#title, #author, #content')
 
    editBtn.addEventListener('click', function(e){
        if (!editables[0].isContentEditable){
            editables[0].contentEditable = 'true';
            //editables[1].contentEditable = 'true';
            editables[2].contentEditable = 'true';
            editBtn.innerHTML = 'Guardar cambios';
            editBtn.style.backgroundColor = '#6F9';
        } else {
            // Desactivar la edicion
            editables[0].contentEditable = 'false';
            //editables[1].contentEditable = 'false';
            editables[2].contentEditable = 'false';
            editables[1].innerHTML = '<?php echo $_SESSION['usuario']?>';
            // Cambiar el boton de texto y el color
            editBtn.innerHTML = 'Activar edición';
            editBtn.style.backgroundColor = '#F96';
            // Guardar datos en el localStorage
            for (var i = 0; i < editables.length; i++){
                localStorage.setItem(editables[i].getAttribute('id'), editables[i].innerHTML);
            }
        }
    });
</script>
 
<script>
    if (typeof(Storage) !== "undefined") {
 
        if (localStorage.getItem('title') !== null) {
            editables[0].innerHTML = localStorage.getItem('title');
        }
 
        if (localStorage.getItem('author') !== null) {
            editables[1].innerHTML = localStorage.getItem('author');
        }
 
        if (localStorage.getItem('content') !== null) {
            editables[2].innerHTML = localStorage.getItem('content');
        }
    }
</script>
 
<?php
    $textedition = "<script>document.write(editables[2].innerHTML); </script>";
    echo $textedition;
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Editor de archivos

Publicado por Mauro (1036 intervenciones) el 16/05/2019 21:13:05
¿Podrías mostrar el form?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

Editor de archivos

Publicado por Pablo (4 intervenciones) el 17/05/2019 10:02:59
Paso la variable con Type hidden.

1
2
3
<form action="escribe.php" method="post">
   <input type="hidden" value="<?php echo $textedition; ?>" name="archivo">
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar