Estoy tratando de escribir en un archivo txt desde un formulario ... la idea es que el usuario presione el botón de registro y eso guardará en un archivo txt y volverá a la página de índice.

Este es mi archivo php:

<?php
            if(!empty($_POST)){
                $rut = $_POST['rut'];
                $dv = $_POST['dv'];
                $pnom = $_POST['pnom'];
                $snom = $_POST['snom'];
                $pape = $_POST['pape'];
                $mape = $_POST['mape'];
                $sex = $_POST['sex'];
                $dir = $_POST['dir'];
                $comu = $_POST['comu'];
                $pais = $_POST['pais'];
                $fono = $_POST['fono'];
                $movil = $_POST['movil'];
                $mail = $_POST['mail'];
                $user = $_POST['user'];
                $pass = $_POST['pass'];
                $rpas = $_POST['rpas'];

                $usuarios = fopen("usuarios.txt", "a");
                fwrite($usuarios, $rut);
                fwrite($usuarios,$dv,";");
                fwrite($usuarios,$pnom,";");
                fwrite($usuarios,$snom,";");
                fwrite($usuarios,$pape,";");
                fwrite($usuarios,$mape,";");
                fwrite($usuarios,$sex,";");
                fwrite($usuarios,$dir,";");
                fwrite($usuarios,$comu,";");
                fwrite($usuarios,$pais,";");
                fwrite($usuarios,$fono,";");
                fwrite($usuarios,$movil,";");
                fwrite($usuarios,$mail,";");
                fwrite($usuarios,$user,";");
                fwrite($usuarios,$pass,";");
                fwrite($usuarios,$rpas,"\r\n");
                fclose($usuarios);  
            }
?>

Y este es el archivo html de formulario:

<html>
<head>
    <title>E1Formulario</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="diseno/diseno.css">
</head>
<script language="JavaScript" src="funciones.js"></script>
<body>
    <form name="formulario" action="generar_txt.php" method="POST">
        <table border="2" align="center" width="50%">
            <th colspan="2">FORMULARIO DE INGRESO</th>
            <tr>
                <td align="left">
                    Rut:<input name="rut" type="text" size="8">
                    <select name="dv">
                        <option value = 0>0</option>
                        <option value = 1>1</option>
                        <option value = 2>2</option>
                        <option value = 3>3</option>
                        <option value = 4>4</option>
                        <option value = 5>5</option>
                        <option value = 6>6</option>
                        <option value = 7>7</option>
                        <option value = 8>8</option>
                        <option value = 9>9</option>
                        <option value = K>K</option>
                    </select>
                    <br><label name="lrut" style="color:#cc0000">*(Campo Obligatorio)</label>
                </td>
                <td align="left">Primer Nombre:* <input name="pnom" type="text"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>

            </tr>
            <tr>
                <td align="left">Segundo Nombre: <input name="snom" type="text"></td>
                <td align="left">Apellido Paterno: <input name="pape" type="text"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>   
            </tr>
            <tr>
                <td align="left">Apellido Materno: <input name="mape" type="text"></td>
                <td align="left">
                    Sexo<br>
                    Masculino <input name="sex" type="radio" value="Masculino"><br>
                    Femenino  <input name="sex" type="radio" value="Femenino">
                    <br><label style="color:#cc0000">*(Campo Obligatorio)</label>
                </td>
            </tr>
            <tr>
                <td align="left">Dirección: <input name="dir" type="text" size="50"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
                <td align="left">Comuna: <input name="comu" type="text"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
            </tr>
            <tr>
                <td align="left">País: <input name="pais" type="text" size="15"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
                <td align="left">Teléfono: <input name="fono" type="text" size="9" onkeypress="JavaScript: return isNumber(event);"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td> 
            </tr>
            <tr>
                <td align="left">Movil: <input name="movil" type="text" onkeypress="JavaScript: return isNumber(event);"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
                <td align="left">Email: <input name="mail" type="text" size="25"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
            </tr>
            <tr>
                <td align="left">Usuario: <input name="user" type="text"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
                <td align="left">Contraseña: <input name="pass" type="password"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
            </tr>
            <tr>
                <td align="left" colspan="2">Repetir Contraseña: <input name="rpas" type="password" size="9"><br><label style="color:#cc0000">*(Campo Obligatorio)</label></td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input class="boton" name="reg" type="button" value="REGISTRAR" onclick="JavaScript: verificar_datos();"/>
                </td>   
            </tr>
        </table>
    </form> 
</body>

Esta es la función que envía el formulario al archivo php y luego va al archivo html de índice:

Función verificar_datos () {

var f = document.formulario;

//Validar que el usuario ingrese todos los campos obligatorios
if(f.rut.value === ""){
    alert("El Rut es un campo obligatorio!");
    f.rut.focus();
    return 0;
}
if(revisarRut(f.rut.value.concat(f.dv.value)) === 0){
    return 0;
}

if(f.pnom.value === ""){
    alert("El Nombre es un campo obligatorio!");
    f.pnom.focus();
    return 0;
}
if(f.pape.value === ""){
    alert("El Apellido Paterno es un campo obligatorio!");
    f.pape.focus();
    return 0;
}
if(f.sex.value === ""){
    alert("El Sexo es un campo obligatorio!");
    f.sex.focus();
    return 0;
}
if(f.dir.value === ""){
    alert("La Dirección es un campo obligatorio!");
    f.dir.focus();
    return 0;
}
if(f.comu.value === ""){
    alert("La Comuna es un campo obligatorio!");
    f.comu.focus();
    return 0;
}
if(f.pais.value === ""){
    alert("El País es un campo obligatorio!");
    f.pais.focus();
    return 0;
}

if(revisarTelefonos() === 0){
    return 0;
}

if(verificarEmail() === 0){
    return 0;
}

if(f.user.value === ""){
    alert("Favor ingresar su Usuario");
    f.user.focus();
    return 0;
}
if(f.pass.value === ""){
    alert("Favor Ingrese su Contraseña");
    f.pass.focus();
    return 0;
}
if(f.rpas.value === ""){
    alert("Favor repetir su contraseña en el campo repetir");
    f.rpas.focus();
    return 0;
}
if(f.rpas.value !== f.pass.value){
    alert("La Segunda Contraseña no concuerda");
    f.rpas.value = "";
    f.rpas.focus();
    return 0;
}
f.submit();
alert("DATOS DE USUARIO INGRESADOS EXITOSAMENTE");
window.location= 'index.html';

}

Sería feliz si alguien pudiera guiarme porque creo que tengo todo correcto, pero todavía no consigo el php para escribir en el archivo txt.

0
Joshe Oñate 29 ago. 2014 a las 18:41

2 respuestas

La mejor respuesta

Primero, agregue la siguiente línea, para comenzar su archivo PHP

error_reporting(E_ALL);

Ahora, cambie la siguiente línea:

$usuarios = fopen("usuarios.txt", "a");

Para:

$usuarios = fopen("usuarios.txt", "a+");

El a + creará un archivo si no existe.

Y verifique si el archivo está abierto.

$ usuarios = fopen ("usuarios.txt", "a +");

if (!$usuarios) {
   die("Could not open file");
} else {
    fwrite($usuarios, $rut);
    fwrite($usuarios,$dv,";");
    fwrite($usuarios,$pnom,";");
    fwrite($usuarios,$snom,";");
    fwrite($usuarios,$pape,";"); 
    fwrite($usuarios,$mape,";");
    fwrite($usuarios,$sex,";");
    fwrite($usuarios,$dir,";");
    fwrite($usuarios,$comu,";");
    fwrite($usuarios,$pais,";");
    fwrite($usuarios,$fono,";");
    fwrite($usuarios,$movil,";");
    fwrite($usuarios,$mail,";");
    fwrite($usuarios,$user,";");
    fwrite($usuarios,$pass,";");
    fwrite($usuarios,$rpas,"\r\n");
    fclose($usuarios);
}

Ahora, todo funcionará como se esperaba.

0
Vitor Villar 29 ago. 2014 a las 14:49

También debe verificar que el archivo "usuarios.txt" se puede escribir desde el usuario de su servidor web en un sistema como apache o www-user, etc. simplemente verifique el chmod del archivo y el directorio

0
Santa's helper 29 ago. 2014 a las 14:55