Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [PHP]Consiglio su script inserisci commento

    Ho da chiedervi qualche consiglio su questo script:
    Codice PHP:
    <?php
    //file dove memorizzare i dati
    $datafile "comments.txt";

    //verifico se il modulo è stato inviato
    if(isset($_POST['submit'])){

        
    //
        
    $name $_POST['name'];
            if(
    $name == "")
                
    $nameError 1;
            else
                
    $nameError 0;

        
    $comments $_POST['comments'];
            if(
    $comments == "")
                
    $commentsError 1;
            else
                
    $commentsError 0;

        
    //se i campi "name" e "comments" non sono vuoti inserisco i dati
        
    if($name != "" && $comments != "")
        
    $new_content "$name::$comments\n";
        
    $fp fopen($datafile"a");
        
    $fw fwrite($fp$new_content);
        
    $fc fclose($fp);
    }

    else {
        
    $nameError 0;
        
    $name "";
        
    $commentsError 0;
        
    $comments "";
    }

    ?>
    <html>
    <head>
    <title>PHP Comments...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style>* {font: 10px verdana}</style>
    </head>

    <body>
    <form name="modulo" method="post" action="<?=$_SERVER['PHP_SELF']?>">
    Nome:

    <input type="text" name="name" value="<?php echo($name)?>">
    <?php
    if($nameError)
        echo 
    "<font color=red>Inserire il nome!</font>";
    ?>



    Commenti:

    <textarea name="comments"><?php echo($comments)?></textarea>
    <?php
    if($commentsError)
        echo 
    "<font color=red>Inserire un commento!</font>";
    ?>



    <input type="submit" name="submit" value="Invia">
    </form>
    <hr>

    <?php
    //verifico se il file esiste altrimenti lo creo
    if(file_exists($datafile)) {
        
    $read_data file($datafile);
        
    $num_comments count($read_data);

        for(
    $c=0$c<$num_comments -1$c++) {
            
    $content explode("::"$read_data[$c]);
            echo 
    "[b]Nome:[/b] $content[0]";
            echo 
    "
    "
    ;
            echo 
    "[b]Commento:[/b] $content[1]";
            echo 
    "

    "
    ;
        }
    }
    ?>
    </body>
    </html>
    ...in breve:

    - cliccando sul pulsante "Invia" se i campi sono vuoti visualizzo il msg d'errore contemporaneamente accanto ai due campi. Come posso fare per controllare un campo alla volta?

    - se inserisco nel campo "name" del testo, rimane memorizzato dopo aver cliccato sul pulsante "Invia". Lo stesso succede per il campo "comments" ma, se entrambi i campi sono compilati e provo a cliccare sul pulsante "Invia" non succede nulla! non riesco a visualizzare i dati inseriti nel modulo se non dopo aver cliccato un paio di volte!! :master:

    Per favore, mi aiutate a capire cosa c'è che non va??
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Secondo me ci sono 2 errori

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <?php
    //file dove memorizzare i dati
    $datafile = "comments.txt";
    
    $_POST   = isset($HTTP_POST_VARS) ?  $HTTP_POST_VARS : $_POST;
    $_SERVER = isset($HTTP_SERVER_VARS) ?  $HTTP_SERVER_VARS : $_POST;
    
    //verifico se il modulo è stato inviato
    if(isset($_POST['submit'])){
    
        //
        $name = $_POST['name'];
            if($name == "")
                $nameError = 1;
            else
                $nameError = 0;
    
        $comments = $_POST['comments'];
            if($comments == "")
                $commentsError = 1;
            else
                $commentsError = 0;
    
        //se i campi "name" e "comments" non sono vuoti inserisco i dati
        //======= 1° Errore mancavano i graffi
        if($name != "" && $comments != "") {
         $new_content = "$name::$comments\n";
         $fp = fopen($datafile, "a");
         $fw = fwrite($fp, $new_content);
         $fc = fclose($fp);
        }
    }
    
    else {
        $nameError = 0;
        $name = "";
        $commentsError = 0;
        $comments = "";
    }
    ?>
    <html>
    <head>
    <title>PHP Comments...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style>* {font: 10px verdana}</style>
    </head>
    
    <body>
    <form name="modulo" method="post" action="<?=$_SERVER['PHP_SELF']?>">
    Nome:
    
    <input type="text" name="name" value="<?php echo($name)?>">
    <?php
    if($nameError)
        echo "<font color=red>Inserire il nome!</font>";
    ?>
    
    
    
    Commenti:
    
    <textarea name="comments"><?php echo($comments)?></textarea>
    <?php
    if($commentsError)
        echo "<font color=red>Inserire un commento!</font>";
    ?>
    
    
    
    <input type="submit" name="submit" value="Invia">
    </form>
    <hr>
    
    <?php
    //verifico se il file esiste altrimenti lo creo
    if(file_exists($datafile)) {
        $read_data = file($datafile);
        $num_comments = count($read_data);
        //========= 2° errore $c<$num_comments e non $c<$num_comments -1
        for($c=0; $c<$num_comments ; $c++) {
            $content = explode("::", $read_data[$c]);
            echo "Nome: $content[0]";
            echo "
    ";
            echo "Commento: $content[1]";
            echo "
    
    ";
        }
    }
    ?>
    </body>
    
    </html>

  3. #3
    Grazie! l'ho provato e sembra funzionare bene...
    Perchè bisogna usare anche questo codice:
    codice:
    $_POST   = isset($HTTP_POST_VARS) ?  $HTTP_POST_VARS : $_POST;
    $_SERVER = isset($HTTP_SERVER_VARS) ?  $HTTP_SERVER_VARS : $_POST;
    ah, un'ultima cosa: c'è un modo migliore per controllare i campi del form?

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da Rhamirez
    Grazie! l'ho provato e sembra funzionare bene...
    Perchè bisogna usare anche questo codice:
    codice:
    $_POST   = isset($HTTP_POST_VARS) ?  $HTTP_POST_VARS : $_POST;
    $_SERVER = isset($HTTP_SERVER_VARS) ?  $HTTP_SERVER_VARS : $_POST;
    ah, un'ultima cosa: c'è un modo migliore per controllare i campi del form?
    Solo xche uso una versione 4.0.6 di php e che in questa versione $_POST o $_SERVER non esistono.

  5. #5
    Ok, tutto chiaro, grazie ancora!
    ...mi potresti indicare un sistema alternativo per controllare i campi del form??

  6. #6
    Vorrei riuscire ad eliminare i dati dai campi "name" e "comments" (vedi script sopra) dopo aver cliccato su pulsante Invia.
    Potreste aiutarmi? Grazie

  7. #7
    I dati inseriti nei campi "name" e "comments" rimanevano memorizzati anche dopo aver cliccato su Inavia.
    Ho aggiunto $name = ""; $comments = ""; e sembra funzionare... ma la scrittura del codice è corretta così?? :master:

    codice:
    ...
    //se i campi "name" e "comments" non sono vuoti inserisco i dati
    if($name != "" && $comments != "") {
    $data = date("d/m/y H:i");
    $new_content = "$name::$data::$comments\n";
    $fp = fopen($datafile, "a");
    $fw = fwrite($fp, $new_content);
    $fc = fclose($fp);
    
    $name = "";
    $comments = "";
    }
    ...

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    direi di si.

  9. #9
    ok, grazie badaze!
    Ho solo un ultimo piccolo problema: come posso evitare che all'interno della textarea vengano inseriti solo caratteri normali senza i vari tag html?

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Originariamente inviato da Rhamirez
    ok, grazie badaze!
    Ho solo un ultimo piccolo problema: come posso evitare che all'interno della textarea vengano inseriti solo caratteri normali senza i vari tag html?
    Puoi usare questo che rimpiazza < e > (ma anche altri caratteri) con i relativi &amp;lt &amp;gt.
    codice:
        //se i campi "name" e "comments" non sono vuoti inserisco i dati
        if($name != "" && $comments != "") {
         $comments = htmlspecialchars($comments);
         $new_content = "$name::$comments\n";
         $fp = fopen($datafile, "a");
         $fw = fwrite($fp, $new_content);
         $fc = fclose($fp);
         $name = "";
         $comments = "";
        }
    oppure ... che cancella tutti i tags html.

    codice:
        //se i campi "name" e "comments" non sono vuoti inserisco i dati
        if($name != "" && $comments != "") {
         $comments = strip_tags($comments);
         $new_content = "$name::$comments\n";
         $fp = fopen($datafile, "a");
         $fw = fwrite($fp, $new_content);
         $fc = fclose($fp);
         $name = "";
         $comments = "";
        }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.