Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Form per l'invio di una e-mail risposta
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • S
      sups User Attivo • ultima modifica di

      Prima di tutto togli echo "Conferma ricevuta!"; se vuoi fare header("Location: $redirect");, altrimenti da errore, non puoi settare l'header dopo aver scritto testo nella pagina.
      Per l'immagine come antispam puoi usare il sistema CAPTCHA, con una semplice ricerca (captcha in php) ne trovi un'infinità.

      Prova qui e *(http://www.w3facile.com/php/verifica-antispam-captcha-php-tutorial.html)i.

      Ciao!

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • S
        sups User Attivo • ultima modifica di

        Prima di tutto togli echo "Conferma ricevuta!"; se vuoi fare header("Location: $redirect");, altrimenti da errore, non puoi settare l'header dopo aver scritto testo nella pagina.
        Per l'immagine come antispam puoi usare il sistema CAPTCHA, con una semplice ricerca (captcha in php) ne trovi un'infinità.

        Prova qui e *(http://www.w3facile.com/php/verifica-antispam-captcha-php-tutorial.html)i.

        Ciao!

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • P
          patric User • ultima modifica di

          Si, ho creato la pagina captcha.php con il seguente codice:

          <?php
          header("Content-type: image/png");
          $x = 200;
          $y = 75;
          $code = substr($_GET['code'],0,9);
          $space = $x / (strlen($code)+1);

          $img = imagecreatetruecolor($x,$y);

          $bg = imagecolorallocate($img,255,255,255);
          $border = imagecolorallocate($img,0,0,0);
          $colors[] = imagecolorallocate($img,128,64,192);
          $colors[] = imagecolorallocate($img,192,64,128);
          $colors[] = imagecolorallocate($img,108,192,64);

          imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
          imagerectangle($img,0,0,$x-1,$y-2,$border);

          for ($i=0; $i< strlen ($code); $i++)
          {
          $color = $colors[$i % count($colors)];
          imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'arial.ttf',$code{$i});
          }

          for($i=0;$i<400;$i++)
          {
          $x1 = rand(3,$x-3);
          $y1 = rand(3,$y-3);
          $x2 = $x1-2-rand(0,8);
          $y2 = $y1-2-rand(0,8);
          imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
          }

          imagepng($img);
          ?>

          E caricato nella stessa cartella sul server arial.ttf.

          Digitando il Link ch-regio-info.ch/captcha.php?code=test viene generato il codice, ma non ho capito come poi integrarlo come controllo nella pagina eintragen.htm.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • S
            sups User Attivo • ultima modifica di

            Metti un campo di testo dove scrivere l'utente deve ricopiare il codice dell'immagine.
            Poi all'invio, controlli il codice inserito se è uguale a quello utilizzato dall'immagine.
            Puoi utilizzare le sessioni per questo:

            
            session_start();
            $_SESSION["code"] = "test";
            ...
            <img src="captcha.php" />
            Ricopia codice: <input type="text" name="nospam" />
            
            ... in "captcha.php" aggiungi ...
            session_start();
            header("Content-type: image/png");
            $code = substr($_SESSION['code'],0,9);
            
            ... nella pagina che riceve ...
            if($_POST["nospam"] != $_SESSION["code"])
                echo "Errore SPAM";
            
            
            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              sups User Attivo • ultima modifica di

              Metti un campo di testo dove scrivere l'utente deve ricopiare il codice dell'immagine.
              Poi all'invio, controlli il codice inserito se è uguale a quello utilizzato dall'immagine.
              Puoi utilizzare le sessioni per questo:

              
              session_start();
              $_SESSION["code"] = "test";
              ...
              <img src="captcha.php" />
              Ricopia codice: <input type="text" name="nospam" />
              
              ... in "captcha.php" aggiungi ...
              session_start();
              header("Content-type: image/png");
              $code = substr($_SESSION['code'],0,9);
              
              ... nella pagina che riceve ...
              if($_POST["nospam"] != $_SESSION["code"])
                  echo "Errore SPAM";
              
              
              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • P
                patric User • ultima modifica di

                Scusa, questa prima parte

                session_start();
                $_SESSION["code"] = "test"

                dove la dovrei mettere?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • S
                  sups User Attivo • ultima modifica di

                  Devi metterla nella pagina dove c'è il form da compilare, così come il tag img che punta al file captcha.php

                  Es.

                  
                  <?php
                  session_start();
                  $_SESSION["code"] = "test"
                  ?>
                  <html ...
                  ...
                  <form ...
                  ...
                  <img src="captcha.php" />
                  Ricopia codice: <input type="text" name="nospam" />
                  
                  
                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • P
                    patric User • ultima modifica di

                    😞 si, ma in ch-regio-info.ch/eintragen.htm non mi appare nessun testo.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • S
                      sups User Attivo • ultima modifica di

                      Converti la pagina html in php "eintragen.php", altrimenti non viene interpretato il codice php iniziale.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • P
                        patric User • ultima modifica di

                        Ciao, ho fatto e in effetti funziona, o meglio appare la scritta, solo che invece di generare un testo questa riproduce sempre solo la parola "test" e inoltre anche scrivendo la parola giusta da errore come SPAM.

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • S
                          sups User Attivo • ultima modifica di

                          Nella pagina con il form di invio:

                          
                          $_SESSION["code"] = "test";
                          
                          

                          definisce la parola chiave che deve essere copiata dall'utente.
                          Se vuoi del testo casuale metti in questo caso:

                          
                          function codice_casuale($len)
                          {
                              $caratteri = "abcdefghiljkmnopqrstuvwxyz0123456789";
                              $codice = "";
                          
                              for($i =  0; $i <= $len; $i++)
                              {
                                  $random = rand(0, strlen($caratteri) - 1);
                          
                                  $codice .= substr($caratteri, $random, 1);
                              }
                          
                              return $codice;
                          }
                          
                          $_SESSION["code"] = codice_casuale(5);
                          
                          

                          Mentre, per risolvere il controllo che restituisce sempre spam, devi aggiungere session_start(); all'inizio del file che invia l'email, mi sono dimenticato di metterlo nel post precedente.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • P
                            patric User • ultima modifica di

                            Grazie mille, mi hai dato veramente un grande aiuto!
                            Ora sembra funzionare correttamente 🙂
                            Grazie ancora

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • S
                              sups User Attivo • ultima modifica di

                              Prego! 😉

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              Caricamento altri post
                              Rispondi
                              • Topic risposta
                              Effettua l'accesso per rispondere
                              • Da Vecchi a Nuovi
                              • Da Nuovi a Vecchi
                              • Più Voti