0 votos
por (20 puntos) en PHP

Tengo que mandar los datos que recibo de un formulario a un archivo de texto para descargarlo. El código que hice funciona correctamente pero de manera local, cuando lo subí al servidor NO se escriben los datos en el archivo, sin embargo, el archivo sí se puede descargar.

Muestro lo que hice para realizar todo este proceso. 
En index.html, cuando se manda al formulario entra en acción el archivo "envio.php" el cuál contiene la creación y escritura del archivo. En envio.php tengo esto:

//Guardar datos//

$file = "datos_ilustradores.txt";

$datos = @fopen($file, "rw");

//$datos = @fopen("datos_ilustradores.txt", "a");

@fwrite($datos, "Folio: " . $aleatorio . " |");

@fwrite($datos, " Titulo: " . $titulo . " |");

@fwrite($datos, " Fecha: " . $fecha . " |");

@fwrite($datos, " Tecnica: " . $tecnica . " |");

@fwrite($datos, " Medidas Alto: " . $medidas_alto . " |");

@fwrite($datos, " Medidas Base: " . $medidas_base . " |");

@fwrite($datos, " Seudonimo: " . $seudonimo . " |");

@fwrite($datos, " Edad: " . $edad . " |");

@fwrite($datos, " Ciudad: " . $ciudad . " |");

@fwrite($datos, " Telefono: " . $telefono . " |");

@fwrite($datos, " Celular: " . $celular . " |");

@fwrite($datos, " Correo: " . $correo . " |");

@fwrite($datos, " Sitio: " . $sitio . "\n \n");

@fclose($datos);

En otra vista, en descargar_registros.php simplemente hago referencia al enlace de descarga:

<a href="descargar.php">Descargar registros</a>

Y en descargar.php tengo lo siguiente:

<?php

$file = "datos_ilustradores.txt";

if(!file_exists($file)) die("I'm sorry, the file doesn't seem to exist.");

$type = filetype($file);

// Get a date and timestamp

// Send file headers

header("Content-type: $type");

header("Content-Disposition: attachment;filename=datos_ilustradores.txt");

header("Content-Transfer-Encoding: binary");

header('Pragma: no-cache');

header('Expires: 0');

// Send the file contents.

set_time_limit(0);

readfile($file);

?>

Como mencionaba, esto funciona localmente. Cuando lo pruebo en el servidor, el archivo sí se descarga pero está vacío.  En envio.php he intentando con lo siguiente:

$datos = @fopen("datos_ilustradores.txt", "a");

$datos = fopen("datos_ilustradores.txt", "a");

$datos = fopen("formatos/datos_ilustradores.txt", "a");

$datos = @fopen("./formatos/datos_ilustradores.txt", "a"); 

Pero no logró escribir los datos en el archivo. ¿Qué estoy haciendo mal? 

1 Respuesta

0 votos
por (1.8k puntos)
Para empezar, quita las @ del comienzo de cada instrucción... de otro modo nunca verás los errores y será muy complejo entender lo que sucede.

Luego de eso publica los errores que encuentras y veremos qué pasa.
por (100 puntos)
Coincido con mchojrin. Debes quitar las arrobas y ver que errores está arrojando. Por otro lado debes recordar que cuando cambias de server, la dirección del archivo puede estar cambiando o los datos que intentas escribir en él, y tener mucho cuidado. No sé cómo trates esa parte. Aún así te daré una idea mejor, aunque probablemente ya hayas encontrado una solución desde Julio hasta hoy. Utiliza codeigniter. Es un framework muy eficaz en el tratamiento de archivos. No uses todo un framework sólo por tratar un archivo, úsalo en todo el software.

Preguntas relacionadas

0 votos
1 respuesta
+1 voto
0 respuestas
0 votos
0 respuestas
preguntado por polos (20 puntos) Ago 7, 2019 en PHP
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...