[PHP] form contatti

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Salve a tutti,

avrei un problema da risolvere: ho creato per il mio sito una pagina molto lunga (circa 2000px) in fondo alla quale ho inserito un modulo per potermi contattare, con alcuni campi obbligatori. Ovviamente il modulo è controllato da una pagina PHP che, se trova degli errori, emette un messaggio d'errore che viene visualizzato nella pagina della form. Il problema è che essendo questa molto lunga, l'utente deve scendere col mouse per visualizzare l'errore. C'è un sistema per evitare questo inconveniente? Ad esempio una sorta di àncora che, in base al valore di una variabile, rimandi l'utente direttamente al fondo della pagina? Spero di essere stato sufficientemente chiaro e ringrazio chiunque vorrà aiutarmi.



Zorro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao, prova
nella pagina che chiama
HTML:
<a href="altra_pagina.php#pluto">vai</a>
e in altra_pagina.php
HTML:
<a name="pluto" id="pluto"></a>
 
  • Like
Reactions: zorro

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Ciao Borgo,
e grazie tante per la risposta. Sono giorni che mi arrovello ma........niente. Ho provato anche con Javascript, dove sono alle primissime armi ma mi ricarica sempre la pagina. Ti mando di seguito il mio codice:

HTML:
    <h2><u>Contattami</u></h2><br>
        (Anche solo per lasciare un commento, una critica al sito.....<br>Qualsiasi cosa ti passi per la mente!)<br><br><br>
            <form name="form" action="inviamail.php" method="get">
                <table border="0" width="400">
                    <tr>
                        <td>Nominativo:</td>
                    </tr>
                    <tr>
                        <td><input type="text" name="nome" size="40"></td>
                    </tr>
                    <tr>
                        <td>La tua e_mail:</td>
                    </tr>
                    <tr>
                        <td><input type="text" name="mail" size="40"></td>
                    </tr>
                    <tr>
                        <td>Messaggio:</td>
                    </tr>
                    <tr>
                        <td><textarea name="commento" rows="15" cols="60"></textarea></td>
                    </tr>
                    <tr>
                        <td>NB: Tutti i campi sono obbligatori</td>
                    </tr>
                    <tr>
                        <td height="70"><input type="submit" name="invia" value="Invia Messaggio" </td>
                    </tr>
                </table>
            </form>
        </div>

Come scritto in precedenza, la pagina è parecchio lunga per cui, x visualizzare la form, bisona scendere parecchio. In testa alla pagina poi, che ha estensone .PHP, c'è un breve script php che intercetta il messaggio d'errore che verrà visualizzato in un'area posta sotto il pulsante 'Invia messaggio'.

PHP:
<?php
session_start();
$messaggio = $_SESSION['MESSAGGIO'];
?>

Ed infine la pagina 'inviamail.php:

PHP:
<?php

$testo = $_GET['commento'];
$nomin = $_GET['nome'];
$mail = $_GET['mail'];

$pattmail = '/^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)[email protected][a-zA-Z]+\.[a-zA-Z]{2,4}$/';
$pattnomin = '/^[A-Za-z]+ *[a-zA-Z]*$/';

session_start();
if (!preg_match($pattnomin, $nomin)) {
    $_SESSION['ERRORE'] = " ATTENZIONE!!<br>Nominativo mancante o non corretto";
    include('indice.php');
} else {
    if (!preg_match($pattmail, $mail)) {
        $_SESSION['ERRORE'] = " ATTENZIONE!!<br>E_mail mancante o non corretta";
        include('indice.php');
    } else {
        if ($testo == '') {
            $_SESSION['ERRORE2'] = " ATTENZIONE!!<br>Devi inserire il messaggio";
            include('indice.php');
        } else {
            //invio la  mail
            $_SESSION['ERRORE'] = " Ti Ringrazio per avermi contattato<br>Ti risponderò il prima possibile.";
            include('indice.php');
        }
    }
}
?>


Ho seguito il tuo suggerimento ma......niente. Forse ho sbagliato ad inserirlo. Dove mi suggerivi di inserirlo?


Zorro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
per quanto riguarda l'ancoraggio nella pagina dove hai il form (è quella che chiamì index.php?)
PHP:
<?php
//se usi le sessioni questo deve essere all'inizio
session_start();
?>
<!DOCTYPE html>
<head>
</head>
<body>
<!--1000 righe di bla...bla...bla con o senza codice php -->
<a name="pluto" id="pluto"></a>
<h2><u>Contattami</u></h2><br>
        (Anche solo per lasciare un commento, una critica al sito.....<br>Qualsiasi cosa ti passi per la mente!)<br><br><br>
            <form name="form" action="inviamail.php" method="get">
                <!--tutto il codice del form -->
            </form>
        </div>
</body>
</html>
poi non capisco cosa siano quegli include (tra l'altro non vedo ritorni), se con quegli include pensi di tornare al form è un casino
secondo me al posto degli include dovrasti mettere
PHP:
//....
header("location: index.php#pluto");
//....
e comunque aggiusterei un po' la parte dei controlli
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
dai un occhio
PHP:
<?php
session_start();
$testo = $_POST['commento'];
$nomin = $_POST['nome'];
$mail = $_POST['mail'];
$err="";
$pattnomin = '/^[A-Za-z]+ *[a-zA-Z]*$/';
if (!preg_match($pattnomin, $nomin)) {
    $errore .= "Nominativo mancante o non corretto<br>";
}
$mail=filter_var($email, FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $errore .= "Email mancante o non corretta<br>";
}
if($testo == '') {
    /*meglio ancora
    if(trim($testo == ''){
    o
    if(strlen(trim($testo)<10){//almeno qualcosa nel messaggio
    */
    $errore.= "Devi inserire il messaggio<br>";//"Devi inserire messaggio di almeno 10 caratteri<br>"
}//fine controlli
if(    $errore==''){//non sono stati commessi errori
    //invio la  mail
    $_SESSION['ERRORE'] = " Ti Ringrazio per avermi contattato<br>Ti risponderò il prima possibile.";
    header("location: index.php");
}else{//ci sono degli errori
    $_SESSION['ERRORE']="ATTENZIONE<br>".$errore;
    header("location: index.php#pluto");
}
?>
 

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Ciao Borgo,
la pagina contenente il form in realtà si chiama indice.php, la pagina index è un'altra e contiene delle immagini e un link a indice.php, che è la pagina principale del sito. Per quanto riguarda il codice, in effetti proababilmente non è dei migliori ma sono un autodidatta........ho usato l'INCLUDE per tornare alla pagina del form. Proverò il tuo codice e ti farò sapere Per il POST hai ragione: mi dimentico sempre di cambiarlo ;.) ;-)
Grazie dell'aiuto


Zorro
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
...INCLUDE per tornare alla pagina
l'include non serve per tornare ad una pagina, ma per "includere" il contenuto di una pagina nella pagina corrente
per tornare ad una pagina o il semplice link, o il tag meta refresh, o altro js o l'header location o refresh
 
  • Like
Reactions: zorro

zorro

Utente Attivo
20 Ott 2014
279
15
18
ROMA
Ciao Borgo,
ho provato il tuo codice e va alla grande!
In effetti avevo già incontrato il comando header location ma non avevo ben capito il suo utilizzo, fino al tuo intervemto.
Grazie ancora.

Zorro
 
Discussioni simili
Autore Titolo Forum Risposte Data
T [PHP] Creare Honeypot per form contatti PHP 10
Angelo Russo [PHP] [HTML] form contatti PHP 0
andreas88 [PHP] [HTML] Pagina preventivi form contatti PHP 5
L [PHP] Inserire google recaptcha in uno form contatti PHP 1
B Creare form contatti con php PHP 4
G Invio form con PHP PHP 3
M Collegamento tra form html e script php PHP 4
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L Problemi form Pagina php HTML e CSS 3
V PHP form intersecate PHP 0
C Form email php su pagina index.html? PHP 21
L form multipla php sql,errore in inserimento MySQL 0
L Insert php sql da una form multipla PHP 6
webmachine [PHP] [JAVASCRIPT] Form strano in HTML PHP PHP 1
G Form in php WordPress 0
F [PHP] Form html PHP 2
G FORM HTML E PHP PHP 0
S [PHP] Recupero nome immagine da Form con input file PHP 3
U PHP bottone per invio mail o ritorno al form PHP 15
O [PHP] inviare dati da form e script ajax PHP 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
C [PHP] Form inserimento più menù a discesa PHP 9
D [PHP] Consigli su come creare form PHP 1
A [PHP] Invio automatico dati da form PHP 6
ANDREA20 [PHP] [HTML] crea form di contatto PHP 4
ANDREA20 [PHP] form modulo contattp PHP 5
M HELP FORM CREATO IN PHP PHP 14
L [PHP] Form da select compilare campi automaticamente PHP 1
I [PHP] inviare form con allegato tramite una mail PHP 1
A [PHP] Controllo nome utente form di registrazione PHP 4
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
F [php] sicurezza password form login PHP 2
M [PHP] Problema search form PHP 3
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
Cosina Andare a capo nel testo della mail ricevuta dal form php PHP 1
N [PHP] filtrare input form di tipo array PHP 0
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
F [PHP] [HTML] File legato ad action in un form PHP 1
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
spider81man Scrivere su file .txt da form php PHP 2
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M [PHP] valore tabella in campo form PHP 1
K [PHP] variabili di tipo numerico nei Form PHP 1
L [PHP] Salvare csv da form dati PHP 5
O [PHP] Problema Button in form PHP 1
B [PHP] passare valore ad un form su un'altra pagina PHP 4

Discussioni simili