[PHP] form contatti

  • Creatore Discussione Creatore Discussione zorro
  • Data di inizio Data di inizio

zorro

Utente Attivo
20 Ott 2014
334
21
28
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
 
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
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]+)?@[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
 
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
 
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");
}
?>
 
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:
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
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