Save form data in TXT (PHP)

Asked

Viewed 1,307 times

0

Hello, good afternoon, sir! I have the following code:

    <?php

if (isset($_POST['texto'])) {
   $texto = $_POST['texto'];

   $arquivo = fopen('msg.txt', 'w');
   fwrite($arquivo, $texto);
   fclose($arquivo);
}
?>

That should work together with this:

<form method="post">
             <span style="font-family:lucida sans unicode,lucida grande,sans-serif">login:</span>
               <input type="text" name="texto" style="height: 40px">
             </span>Senha:</span>
            <input type="password" name="texto" style="height: 40px"><br></font>
            <button style="width:90px, height:40px">Enviar</button></center>
         </form>

Why, it doesn’t write the password also in TXT?? it only saves a form field in TXT.

I would like the code to save all the form fields in TXT, and I would also like to do the following, it will save msg.txt ... when the next person will make him identify that there is already a msg.txt and create an msg2.txt not to overwrite the first one, as it does??

  • Take a tour to get a quick look at https://answall.com/tour

  • If any answers solved your problem mark it as accepted, see https://i.stack.Imgur.com/evLUR.png

2 answers

1

Why, it does not write password also in TXT??

To get all input values that have the same name you need to add brackets in the attribute name example name="texto[]", this way when you arrive in PHP these fields will arrive as an array.

<input type="text" name="texto[]" style="height: 40px">
<input type="password" name="texto[]" style="height: 40px">

You can also give names different for fields, example: login and senha

<input type="text" name="login" style="height: 40px">
<input type="password" name="senha" style="height: 40px">

In the first case retrieves values sent from the form and creates the content in this way

// cria conteúdo para escrever no arquivo de texto
$textoPublicar = "login: ".$_POST['texto'][0]. " Senha: ".$_POST['texto'][1];

In the second case so

// cria conteúdo para escrever no arquivo de texto
$textoPublicar= "login: ".$_POST['login']." senha: ".$_POST['senha'];

Full commented code for the first case

<?php

    //mesma pasta
    $dir="";
    
    //outra pasta, caminho da pasta, exemplo
    $dir="textos/";
    
    // glob() - Retorna um array contendo todos os arquivos (*) com extensão .txt do diretorio indicado
    $array = glob($dir."*.txt");
    
    // se for um array e não vazio
    if ( is_array($array) && !empty($array) ) {
        $numeros=[];
            foreach ( $array as $val) {
                //cria um array somente com a parte numérica dos nomes dos arquivos
                $numeros[] = preg_replace("/[^0-9]/", "", $val);
            }
        
        // max() recupera o maior valor do array $numeros
        // cria o numero do proximo nome do arquivo de texto
        $numArquivo = max($numeros)+1; 
    
    }
    
    //cria o nome do arquivo de texto
    $filename = "msg".($numArquivo).".txt";
    
    
    if ( isset($_POST['texto']) && !empty($_POST['texto']) ) {
    
        // cria conteudo para escrever no arquivo de texto
        $textoPublicar = "login: ".$_POST['texto'][0]. " Senha: ".$_POST['texto'][1];
       
       //cria o arquivo e grava
       $arquivo = fopen($dir.$filename, 'w');
       fwrite($arquivo, $textoPublicar);
       fclose($arquivo);
       
    }

?>

<form method="post">
    <span style="font-family:lucida sans unicode,lucida grande,sans-serif">login:</span>
    <input type="text" name="texto[]" style="height: 40px">
    </span>Senha:</span>
    <input type="password" name="texto[]" style="height: 40px"><br></font>
    <button style="width:90px, height:40px">Enviar</button></center>
</form>

Full commented code for the second case

<?php

    //mesma pasta
    $dir="";
    
    //outra pasta, caminho da pasta, exemplo
    $dir="textos/";
    
    // glob() - Retorna um array contendo todos os arquivos (*) com extensão .txt do diretorio indicado
    $array = glob($dir."*.txt");
    
    // se for um array e não vazio
    if ( is_array($array) && !empty($array) ) {
        $numeros=[];
            foreach ( $array as $val) {
                //cria um array somente com a parte numérica dos nomes dos arquivos
                $numeros[] = preg_replace("/[^0-9]/", "", $val);
            }
        
        // max() recupera o maior valor do array $numeros
        // cria o numero do próximo nome do arquivo de texto
        $numArquivo = max($numeros)+1; 
    
    }
    
    //cria o nome do arquivo de texto
    $filename = "msg".($numArquivo).".txt";

    if ( isset($_POST['login']) && isset($_POST['senha']) ) {
        
       // cria conteudo para escrever no arquivo de texto
        $textoPublicar= "login: ".$_POST['login']." senha: ".$_POST['senha'];
       
       //cria o arquivo e grava
       $arquivo = fopen($dir.$filename, 'w');
       fwrite($arquivo, $textoPublicar);
       fclose($arquivo);
       
    }
    
?>

<form method="post">
    <span style="font-family:lucida sans unicode,lucida grande,sans-serif">login:</span>
    <input type="text" name="login" style="height: 40px">
    </span>Senha:</span>
    <input type="password" name="senha" style="height: 40px"><br></font>
    <button style="width:90px, height:40px">Enviar</button></center>
</form>

0

Good afternoon,

In case you are saving only one data, because the two fields are with the tag name="text" changes the tag of the password field Ex:name="password";

and change the php file to

   $texto = $_POST['texto'];
   $senha = $_POST['senha'];

if you want the visible password remove the password from the field and change it to text even.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.