Vorrei inserire una finestra con messaggio ad un history.back

Beppe Z.

Nuovo Utente
21 Apr 2020
8
0
1
Buonasera e ciao a tutti. Avrei bisogno di un aiutino, sono alle prime armi.
Ho creato una verifica è poi gli ho dato il comando (vedi sotto) di rimanere sulla pagina senza cancellare quanto inserito in un modulo. vorrei però fargli scrivere un messaggio con l'errore in questo caso è: "Tutti i campi del modulo sono obbligatori". ma non ci riesco. qualcuno mi può aiutare?

PHP:

// verifico che tutti i campi siano stati compilati
if (!$nome || !$cognome|| !$email || !$eta) {
echo"<script language=\"javascript\"> window.history.back(1);</script>";
.
 
Ultima modifica:
"Tutti i campi del modulo sono obbligatori". ma non ci riesco. qualcuno mi può aiutare?
Invece di utilizzare la validazione server, hai pensato di utilizzare semplicemente i dati-attributes di html5 e legarci funzioni js per il controllo dello stesso?

In alternativa, diciamo a costo ZERO, potresti utilizzare bootstrap e ad ogni input aggiungi SOLO << required >>, in questo modo la validazione viene effettuata prima di inviare i dati-....
 
Invece di utilizzare la validazione server, hai pensato di utilizzare semplicemente i dati-attributes di html5 e legarci funzioni js per il controllo dello stesso?

In alternativa, diciamo a costo ZERO, potresti utilizzare bootstrap e ad ogni input aggiungi SOLO << required >>, in questo modo la validazione viene effettuata prima di inviare i dati-....
 
ciao macus_adi. sono veramente profano, potresti aiutarmi con un esempio? te ne sarei grato. abbi pazienza grazie
 
Beppe Z.


ecco il codice completo funzionante con Bootstrap ;)

PHP:
<?php

    $error = ""; $successMessage = "";

    if ($_POST) {
     
        if (!$_POST["email"]) {
         
            $error .= "An email address is required.<br>";
         
        }
     
        if (!$_POST["content"]) {
         
            $error .= "The content field is required.<br>";
         
        }
     
        if (!$_POST["subject"]) {
         
            $error .= "The subject is required.<br>";
         
        }
     
        if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {
         
            $error .= "The email address is invalid.<br>";
         
        }
     
        if ($error != "") {
         
            $error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';
         
        } else {
         
            $emailTo = "[email protected]";
         
            $subject = $_POST['subject'];
         
            $content = $_POST['content'];
         
            $headers = "From: ".$_POST['email'];
         
            if (mail($emailTo, $subject, $content, $headers)) {
             
                $successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';
             
             
            } else {
             
                $error = '<div class="alert alert-danger" role="alert"><p><strong>Your message couldn\'t be sent - please try again later</div>';
             
             
            }
         
        }
     
     
     
    }

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Required meta tags always come first -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta http-equiv="x-ua-compatible" content="ie=edge">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">
  </head>
  <body>
   
      <div class="container">
   
    <h1>Get in touch!</h1>
   
      <div id="error"><? echo $error.$successMessage; ?></div>
   
      <form method="post">
  <fieldset class="form-group">
    <label for="email">Email address</label>
    <input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
    <small class="text-muted">We'll never share your email with anyone else.</small>
  </fieldset>
  <fieldset class="form-group">
    <label for="subject">Subject</label>
    <input type="text" class="form-control" id="subject" name="subject" >
  </fieldset>
  <fieldset class="form-group">
    <label for="exampleTextarea">What would you like to ask us?</label>
    <textarea class="form-control" id="content" name="content" rows="3"></textarea>
  </fieldset>
  <button type="submit" id="submit" class="btn btn-primary">Submit</button>
</form>
       
        </div>

    <!-- jQuery first, then Bootstrap JS. -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js" integrity="sha384-vZ2WRJMwsjRMW/8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anonymous"></script>
       
       
    <script type="text/javascript">
       
          $("form").submit(function(e) {
           
              var error = "";
           
              if ($("#email").val() == "") {
               
                  error += "The email field is required.<br>"
               
              }
           
              if ($("#subject").val() == "") {
               
                  error += "The subject field is required.<br>"
               
              }
           
              if ($("#content").val() == "") {
               
                  error += "The content field is required.<br>"
               
              }
           
              if (error != "") {
               
                 $("#error").html('<div class="alert alert-danger" role="alert"><p><strong>There were error(s) in your form:</strong></p>' + error + '</div>');
               
                  return false;
               
              } else {
               
                  return true;
               
              }
          })
       
    </script>
       
  </body>
</html>



Ti ringrazio tanto ma è troppo complicato per me senza una guida, sono proprio ai prima passi. forse non è il forum che fa al caso mio, siete tutti troppo esperti. Alex_70 grazie comunque
 
Beppe Z.
ciao,

vedi che se c'e' un non-esperto qui quello sono io :D, non sono un programmatore (il mio lavoro e' differente) , sto imparando il php da solo (autodidatta),
all'inzio non capivo niente, ma poi piano piano (2 anni circa) e documentandomi nel web sono riuscito a riscrivere da zero un sito per il cinema.
Se ci sono riuscito io allora pure tu :)

Il codice sopra non e' difficile, usa bootstrap, javascript, html e php.
 
Ho copiato un post (vedi sotto) su questo forum per imparare, e adesso lo sto adattando alle mie esigenze, come si può capire, e da quando sono costretto a stare a casa per il lockdown che mi sto cimentando. per questo ho bisogno di essere guidato passo passo. vi ringrazio anticipatamente ed infinitamente per la pazienza che vi chiederò.

ho messo in rosso la mia prima modifica, e sinceramente mi piace l'idea della tendina col messaggio, l'unica differenza, preferirei che non mi cambiasse pagina, se proprio non è possibile (però preferirei la prima soluzione) almeno la possibilità di poter inserire un immagine alla pagina php che si apre per il messaggio.

vi ringrazio ancora per la pazienza, non ho pretese naturalmente, non è questione di vita o di morte :p:p:p:p:p

<?php
// Recupero i valori inseriti nel form
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$cap = $_POST['cap'];

//dopo 4 secondi rimando all’home del sito
$delay = "4";
$url = "https://www.miosito.it";

// verifico che tutti i campi siano stati compilati
if (!$nome || !$cognome|| !$email || !$cap) {
echo "<script type=\"text/javascript\">alert('Tutti i campi del modulo sono obbligatori.')</script>";
echo "<script type=\"text/javascript\">history.go(-1)</script>";
}


// verifico che il nome non contenga caratteri nocivi
elseif (!preg_match('/^[A-Za-z \'-]+$/i',$nome)) {
echo 'Il nome contiene caratteri non ammessi';
}
// verifico che il cognome non contenga caratteri nocivi
elseif (!preg_match('/^[A-Za-z \'-]+$/i',$cognome)) {
echo 'Il cognome contiene caratteri non ammessi';
}
// verifico se un indirizzo email è valido
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Indirizzo email non corretto';
}
// verifico che il campo cap sia numerico, non sia inferiore di 1 e maggiore di 120
elseif (!is_numeric($cap) || $cap < 00010 || $cap >98168) {
echo 'Campo cap non corretto';
}else{

// verifico che il campo cap sia numerico composto da 5 caratteri
$lungh_cap=strlen($cap);
if ($lungh_cap <= 5)
if ($lungh_cap >= 5) {
echo "<script type=\"text/javascript\">alert('Il cap deve contenere 5 caratteri numerici.')</script>";
echo "<script type=\"text/javascript\">history.go(-1)</script>";
}




// compilo un messaggio combinando i dati recuperati dal form
$testo = "Nome: " . $nome . "\n"
. "Cognome: " . $cognome . "\n"
. "Email: " . $email . "\n"
. "Eta: " . $eta;

// uso la funzione mail di PHP per inviare i dati al mio indirizzo di posta
mail('[email protected]', 'Hai un nuovo iscritto per la newsletter', $testo);

// Mostro un messaggio di conferma all'utente
print "<body>
<table align='center' bordercolor='#CCCCCC'>
<tr>
<td>
<div align='center'><font face='Verdana, Arial, Helvetica, sans-serif'>
Grazie per iscritto alla nostra newsletter</font><br><br>
riceverai gli aggiornamenti via mail all'indirizzo: $email<br><br>
Per tornare all'Home attendi 4 secondi o <a href='https://www.miosito.it'>Clicca qui</a></font></div></td>
<meta http-equiv='refresh' content='$delay; url=$url'>
</tr>
</table>
</body>";
}
?>
 
ecco il codice completo funzionante con Bootstrap
Cosa centra bootstrap con PHP?

Altra nota ti sei dimenticato negli input i required... Non ha assolutamente senso mandare dati vuoti al server e fare controlli se sono richiesti...

bootstrap validator è un piccolo esempio....

Naturalmente se funziona e non si bada alla forma e sicurezza è tutt'altra cosa...

Questo msg non è minatorio, ma ha lo scopo di incentivare i vari lettori a non fermarsi alle soluzioni ovvie (banali), spronandoli a cercare soluzioni migliori e/o più moderne ...
 
Cosa centra bootstrap con PHP?

Altra nota ti sei dimenticato negli input i required... Non ha assolutamente senso mandare dati vuoti al server e fare controlli se sono richiesti...

bootstrap validator è un piccolo esempio....

Naturalmente se funziona e non si bada alla forma e sicurezza è tutt'altra cosa...

Questo msg non è minatorio, ma ha lo scopo di incentivare i vari lettori a non fermarsi alle soluzioni ovvie (banali), spronandoli a cercare soluzioni migliori e/o più moderne ...

e si, c'e' sempre qualcuno che non aiuta e critica gli altri che lo fanno, :mad:

il codice non e' mio, e' preso da un corso Udemy che ho nel computer

te la dovresti prendere con chi la compilato allora se ritieni che non funziona

che mondo :mad:
 
In alternativa, diciamo a costo ZERO, potresti utilizzare bootstrap e ad ogni input aggiungi SOLO << required >>, in questo modo la validazione viene effettuata prima di inviare i dati-....
La soluzione l'ho data, ma non hai avuto neanche l'accortezza di verificare il come, funziona senza if-else semplicemente da Client e non da Server...

e si, c'e' sempre qualcuno che non aiuta e critica gli altri che lo fanno
Dopo doverosa premessa, spiegami cosa intendevi dire con """ecco il codice completo funzionante con Bootstrap """, sai di cosa stavi parlando oppure hai dato fiato alle trombe così tanto per inviare un messaggio?

Bootstrap è una raccolta di librerie JS che non centra minimamente con PHP e/o con quello che avevi scritto, quindi se non hai recepito questo....

NB: Se il corso l'hai pagato chiedi immediatamente il rimborso, quella schifezza non si fa neanche al primo approccio di programmazione...

Quella cosa copiata e incollata (come dici) la si risolve con questo

HTML:
<input type="email" required />

Credo ci sia differenza di stile e di forma tra questo e quello che avevi suggerito...

te la dovresti prendere con chi la compilato

IL CODICE PHP CHE HAI SCRITTO NON É COMPILATO MA VIENE INTERPRETATO...

Allego link: https://getbootstrap.com/docs/4.0/components/forms/
 
Ultima modifica:
La soluzione l'ho data, ma non hai avuto neanche l'accortezza di verificare il come, funziona senza if-else semplicemente da Client e non da Server...


Dopo doverosa premessa, spiegami cosa intendevi dire con """ecco il codice completo funzionante con Bootstrap """, sai di cosa stavi parlando oppure hai dato fiato alle trombe così tanto per inviare un messaggio?

Bootstrap è una raccolta di librerie JS che non centra minimamente con PHP e/o con quello che avevi scritto, quindi se non hai recepito questo....

NB: Se il corso l'hai pagato chiedi immediatamente il rimborso, quella schifezza non si fa neanche al primo approccio di programmazione...

Quella cosa copiata e incollata (come dici) la si risolve con questo

HTML:
<input type="email" required />

Credo ci sia differenza di stile e di forma tra questo e quello che avevi suggerito...



IL CODICE PHP CHE HAI SCRITTO NON É COMPILATO MA VIENE INTERPRETATO...

Allego link: https://getbootstrap.com/docs/4.0/components/forms/

1) al contrario di te io non sono un programmatore, lo scritto tante volte, il mio e' solo un hobby, male o bene qualcosa ho costruito

2) io non ho richiesto il codice ma ho solo cercaro di aiutare, poi se era sbagliato non e' un mio problema

3) so cosa e' Bootstrap, forse ho scritto male e tu hai interpretato male cosa volevo dire

4) il corso non lo pagato

5) invece di criticare gli altri che non sono capaci cercate invece di aiutare,
siamo tutti professori ma non tutti sanno insegnare
 
Mi dispiace aver innescato questa diatriba, purtroppo la mia incompetenza non mi permette di seguirvi come si deve nei vostri discorsi, però.... se siete d'accordo, mi piacerebbe tornare sul motivo per cui ho aperto questa discussione. e lo farei con il copia/incolla del mio ultimo post.

Faccio presente che nel frattempo ho sbirciato il codice "Bootstrap", ma non ci prendo nulla.

Ho copiato un post (vedi sotto) su questo forum per imparare, e adesso lo sto adattando alle mie esigenze, come si può capire, e da quando sono costretto a stare a casa per il lockdown che mi sto cimentando. per questo ho bisogno di essere guidato passo passo. vi ringrazio anticipatamente ed infinitamente per la pazienza che vi chiederò.

ho messo in rosso la mia prima modifica, e sinceramente mi piace l'idea della tendina col messaggio, l'unica differenza, preferirei che non mi cambiasse pagina, se proprio non è possibile (però preferirei la prima soluzione) almeno la possibilità di poter inserire un immagine alla pagina php che si apre per il messaggio.

vi ringrazio ancora per la pazienza, non ho pretese naturalmente, non è questione di vita o di morte :p:p:p:p:p

PHP:


<?php
// Recupero i valori inseriti nel form
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$cap = $_POST['cap'];

//dopo 4 secondi rimando all’home del sito
$delay = "4";
$url = "https://www.miosito.it";

// verifico che tutti i campi siano stati compilati
if (!$nome || !$cognome|| !$email || !$cap) {
echo "<script type=\"text/javascript\">alert('Tutti i campi del modulo sono obbligatori.')</script>";
echo "<script type=\"text/javascript\">history.go(-1)</script>";
}

// verifico che il nome non contenga caratteri nocivi
elseif (!preg_match('/^[A-Za-z \'-]+$/i',$nome)) {
echo 'Il nome contiene caratteri non ammessi';
}
// verifico che il cognome non contenga caratteri nocivi
elseif (!preg_match('/^[A-Za-z \'-]+$/i',$cognome)) {
echo 'Il cognome contiene caratteri non ammessi';
}
// verifico se un indirizzo email è valido
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Indirizzo email non corretto';
}
// verifico che il campo cap sia numerico, non sia inferiore di 1 e maggiore di 120
elseif (!is_numeric($cap) || $cap < 00010 || $cap >98168) {
echo 'Campo cap non corretto';
}else{

// verifico che il campo cap sia numerico composto da 5 caratteri
$lungh_cap=strlen($cap);
if ($lungh_cap <= 5)
if ($lungh_cap >= 5) {
echo "<script type=\"text/javascript\">alert('Il cap deve contenere 5 caratteri numerici.')</script>";
echo "<script type=\"text/javascript\">history.go(-1)</script>";
}




// compilo un messaggio combinando i dati recuperati dal form
$testo = "Nome: " . $nome . "\n"
. "Cognome: " . $cognome . "\n"
. "Email: " . $email . "\n"
. "Eta: " . $eta;

// uso la funzione mail di PHP per inviare i dati al mio indirizzo di posta
mail('[email protected]', 'Hai un nuovo iscritto per la newsletter', $testo);

// Mostro un messaggio di conferma all'utente
print "<body>
<table align='center' bordercolor='#CCCCCC'>
<tr>
<td>
<div align='center'><font face='Verdana, Arial, Helvetica, sans-serif'>
Grazie per iscritto alla nostra newsletter</font><br><br>
riceverai gli aggiornamenti via mail all'indirizzo: $email<br><br>
Per tornare all'Home attendi 4 secondi o <a href='https://www.miosito.it'>Clicca qui</a></font></div></td>
<meta http-equiv='refresh' content='$delay; url=$url'>
</tr>
</table>
</body>";
}
?>
 
Ultima modifica:
invece di criticare gli altri che non sono capaci cercate invece di aiutare
Come puoi notare da qui
In alternativa, diciamo a costo ZERO, potresti utilizzare bootstrap e ad ogni input aggiungi SOLO << required >>, in questo modo la validazione viene effettuata prima di inviare i dati-....
Era stato suggerito...

Cmq fa nulla, prima di stizzirti leggi bene....
Questo msg non è minatorio, ma ha lo scopo di incentivare i vari lettori a non fermarsi alle soluzioni ovvie (banali), spronandoli a cercare soluzioni migliori e/o più moderne ...

Tranky alla prossima un caffe...
 
@Beppe Z.
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strumenti
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!
Grazie


Correggi i tuoi post mi raccomando altrimenti sarò costretto a cancellare le discussioni
 
se siete d'accordo
Scsuami.....
Allora prova con questo
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>La Mia Pagina</title>
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
   <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</head>
<body>

<?php

   $fields=[
      [
         'label'=>['for'=>'name','text'=>'Inserisci il Nome'],
         'input'=>['required'=>true,'minlength'=>3,'maxlength'=>20,'name'=>'name','type'=>'text','class'=>'form-control']
      ],
      [
         'label'=>['for'=>'cognome','text'=>'Inserisci il Cognome'],
         'input'=>['required'=>true,'minlength'=>3,'maxlength'=>20,'name'=>'cognome','type'=>'text','class'=>'form-control']
      ],
      [
         'label'=>['for'=>'name','text'=>'Inserisci la tua email'],
         'input'=>['required'=>true,'name'=>'email','type'=>'email','class'=>'form-control']
      ],
      [
         'label'=>['for'=>'name','text'=>'Inserisci il CAP'],
         'input'=>['required'=>true,'name'=>'cap','maxlength'=>6,'type'=>'text','class'=>'form-control']
      ],
   ];

?>
<div class="container">
   <div class="row">
      <div class="col-md-8 col-md-offset-4">
         <form method="post" >
            <?php
            foreach ( $fields as $field ) {
               ?>
               <div class="form-group">
                     <?php echo '<label for="'.$field['label']['for'].'">'.$field['label']['for'].'</label>' ?>
                     <input
                     <?php array_walk($field['input'],function($v,$k){
                        echo $k.'="'.$v.'"';
                  })?>
                     >
                  </div>
            <?php
            }
            ?>
            <button type="submit" class="btn btn-danger">Send</button>
         </form>
      </div>
   </div>
</div>
</body>
</html>
Se provi ad inviare non effettua nessuna navigazione ma valida il form prima di inviarlo......
 

Discussioni simili