Foros del Web » Programando para Internet » PHP »

Como hacer que el usuario establezca donde hacer fwrite();

Estas en el tema de Como hacer que el usuario establezca donde hacer fwrite(); en el foro de PHP en Foros del Web. Hola. Estoy haciendo un trabajito por satisfacción personal para que los usuarios puedan crear sus propios artículos en el sitio web. No quiero usar MYSQL, ...
  #1 (permalink)  
Antiguo 19/07/2011, 04:09
 
Fecha de Ingreso: abril-2011
Ubicación: España, Mdrid
Mensajes: 89
Antigüedad: 13 años
Puntos: 1
Como hacer que el usuario establezca donde hacer fwrite();

Hola. Estoy haciendo un trabajito por satisfacción personal para que los usuarios puedan crear sus propios artículos en el sitio web. No quiero usar MYSQL, ese es el reto.

Código PHP:
<?php
$mensaje_error 
"";
$base_datos ""
if ($_SERVER['REQUEST_METHOD'] == 'POST')

{
    
   
$accion = isset($_POST['accion']) ? $_POST['accion'] : '';

    
   if (
$accion == 'crear_archivo')
   {
   
           
$base_datos $_POST['titulo']
       
   }
   if (
$accion == 'crear_articulo')
   {

        
$nuevo_articulo $_POST['articulo'];
        
        
    }
    if (empty(
$mensaje_error))
   {
         
$archivo fopen($base_datos'a');
         
fwrite($archivo$nuevo_articulo);
   }
   }
         
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" >
<link rel="stylesheet" type="text/css" href="../estilos/estiloarticulos.css"></link>
<title>Musicaendo - Nuevo artículo</title>
</head>
<body>
<!-- CABEZA -->
<div id="cabecero">
<div id="menu">
<div id="tabla">
    <ul>
<li><a href="../opciones/index.php" >Opciones</a></li>    
<li><a href="estadisticas.php" >Estadísticas</a></li>    
    </ul>
</div>
</div>
<div id="menu2">
<div id="tabla2">
    <ul>
<li><a href="login.php" id="especial">Iniciar sesión</a></li>     
    </ul>
</div>
</div>
</div>
<div id="contenido">
<div id="herramienta">
<div class="margen">
<div id="div_registro">
<form name="crear_articulo" method="post" action="<?php echo basename(__FILE__); ?>" id="crear_articulo">
<input type="hidden" name="accion" value="crear_articulo">
<input type="hidden" name="accion" value="crear_archivo">
<input type="text" name="titulo">
<textarea name="articulo">

</textarea>
<input type="submit" name="crear_archivo" value="Crear archivo" id="crear_archivo">
<input type="submit" name="crear_articulo" value="¡Enviar!" id="crear_articulo">
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Esta muy verde solo llevo muy poquito tiempo haciéndolo como vereís no esta ni acabado. Mi pregunta es que como podría que los usuarios establecieran la variable $base_datos . Se que es peligroso que puedan establecer rutas pero es solo temporal ya tengo pensado como evitar eso. De momento, eso ¿Como pueden los usuarios mediante un campo de texto establecer la variable base_datos para que puedan poner el nombre a su artículo? es decir.

../articulos/miarticulo.php <- esto tendrían que poner y que luego por supuesto se imprimiese el texto del textarea.
  #2 (permalink)  
Antiguo 19/07/2011, 05:23
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Como hacer que el usuario establezca donde hacer fwrite();

Buenas,

Si lo que te refieres es que el usuario pudiera poner la ruta que él quisiera para almacenar el fichero de texto, la cosa no es tribial ni mucho menos. Por ejemplo, suponemos que en el servidor tienes ya una carpeta creada para los artículos, llamada "articulos" y, a partir de dicha carpeta quieres añadir todos los artículos que los usuarios quieran en la ruta que ellos elijan. De esta forma, el destino final del fichero sería articulos/ruta/titulo.php

Tal y como lo tienes ahora mismo, sólo solicitas el título, así que tendrías que añadir un nuevo campo al formulario, Ruta (suponemos que va a $_POST['ruta'], esto lo haces tú).

En el php en el que tratas el formulario, deberías trocear la ruta introducida, ya que tendrás que crear todas las carpetas que no existan ya. Por ejemplo, si el usuario pone "pepito/amor/secreto/novia/Inma" tendrás que crear todas esas carpetas, para una vez dentro de Inma, crear el fichero con el título. Yo te recomiendo que hagas un explode a un array de la siguiente forma:
$carpetas = explode("/", $_POST['ruta']);

Así, en $carpetas tendrás cada una de las carpetas, en orden de profundidad, que tienes que crear. Una vez hecho esto, ya sólo tienes que ir creándolas con mkdir y, una vez llegues a crear la más profunda, crear el fichero en modo escritura ($mode = "x+") con fopen dándole el título que eligió el usuario. Escribes y cierras.

De todas formas, me parece un poco tedioso e innecesario todo esto, ya que, por ejemplo, tendrás que almacenar en algún lado los usuarios y las carpetas y ficheros que les pertenecen. Sinceramente, si las bases de datos se crearon precisamente para no tener que tratar archivos para temas de este tipo, no entiedo por qué quieres volver al pasado oscuro en que los ficheros dominaban el mundo de la informática.

Un saludo y espero que te sirva.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 19/07/2011, 06:11
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Como hacer que el usuario establezca donde hacer fwrite();

agregar que solamente podrás trabajar desde la raíz de tu sitio para adentro
es decir esto no lo podrás hacer
/home/usuario/carpeta
__________________
aconcaguaestudio.com
  #4 (permalink)  
Antiguo 19/07/2011, 06:25
 
Fecha de Ingreso: abril-2011
Ubicación: España, Mdrid
Mensajes: 89
Antigüedad: 13 años
Puntos: 1
Respuesta: Como hacer que el usuario establezca donde hacer fwrite();

Muchas gracias. Por vuestras respuestas sobre todo a ti vgonga1986 me habéis ayudado mucho. Sinceramente, lo propio sería que únicamente pudiese crear el documento con el titulo y el contenido del mismo. Lo de la ruta lo decía por hacerlo más fácil (parece que me equivoqué). Porque en el mes que llevo con PHP no he salido de las sesiones y usuarios con MYSQL y todo ese rollo. Quería probar suerte con el manejo de archivos.
Gracias de nuevo. Por supuesto ahí va karma.
  #5 (permalink)  
Antiguo 19/07/2011, 06:40
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Como hacer que el usuario establezca donde hacer fwrite();

Hombre, si las bases de datos relacionales son desde hace más de tres décadas las bases de la gran mayoría de aplicaciones, ya no sólo web, sino cualquier aplicación, no es por casualidad. Las bases de datos relacionales supusieron una auténtica revolución en el mundo de la informática y la programación, dejando atrás precisamente el tedio de los ficheros.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: fwrite, input, textarea, titulo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.