Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3

    Form mail in PHP senza redirect

    Ok, mi spiego: sto facendo un sito per un amico e lui vuole che sia tutto in una pagina. Fatto. Ora però mi serve uno script in php, nulla di troppo complesso, che deve solo validare qualche campo e inviare la mail.
    Il punto è che vorrei che gli eventuali messaggi di errore o la conferma dell'avvenute spedizione, apparissero nella pagina e non in una nuova. Cioè, non dovrebbe fare un redirect ma semmai, mostrare un div nascosto o semplicemente mostrare in fondo al form il messaggio.

    Si può fare? Ehm.. come?
    Avrete capito che di php non ne so molto :master:

    Thanks!

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    con php non è possibile...dovresti processare il form con ajax e far visualizzare il responso nel div...mi spiego meglio
    form.htm->con ajax lo fai puntare a controlli.php
    <form onsubmit="ajax('controlli.php')">
    e nella funzione ajax fai in modo che il risultato di controlli.php appaia in un div nascosto (che renderai visibile)...in ogni caso, i form per essere processati hanno bisogno di essere inviati!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    come con php non è possibile racchiudi gli errori in un array e li fai comparire dove vuoi giorni fà avevo messo un esempio ora te lo riscrivo questo script esegue un controllo sui campi e se tutto va bene spedisce

    Codice PHP:
    <?php
    function is_email($email_to_test)
        {
            
    $re  "^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])";
            
    $re .= "+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})$";
            if (
    ereg($re$email_to_test))
            {
                return 
    TRUE;
            }
            else
            {
                return 
    FALSE;
            }
        }

    $error = array();
    $good = array();
    $name trim($_POST['name']);
    $email $_POST['email'];
    $subject $_POST['subject'];
    $comments $_POST['comments'];
    if(isset(
    $_POST['submit'])){
        if(
    $name == ""){
        
    $error[0] = "Name is Required";
        
        
        }
        if(
    $email == "" or (is_email("$email") != TRUE)){
            
    $error[1] = "Please Insert Valid Email";
            
        }
        if(
    $subject  == ""){
            
    $error[3] = "Please Insert a Subject";
            
            }
        if(
    $comments  == ""){
            
    $error[4] = "Please Leave a Comments";
        
    }
    if(!
    $error){
    $to "myemail@email.com";
    $headers "From: ".$name." <".$email.">\r\n";
    $headers .= "Reply-To: ".$email."\r\n";
    $headers .= "Return-Path: ".$email."\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    if(
    mail($to$name$comments$headers)) {
        
    $good[0] = "Message Send";
    }else{
        
    $error[5] = "Error!! Please Resend ";
    }
    }
    }
    ?>



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="css/style.css" >
    <title>Contact</title>
    </head>
    <body>
    <div id="container">
            <div id="menu">
                <ul id="inlinemenu">
                    [*][url="index.html"]Home[/url]
                    [*][url="#"]Company[/url]
                    [*][url="#"]Articles[/url]
                    [*][url="#"]About Me[/url]
                    [*][url="contact.php"]Contact[/url]
                [/list]
            </div>
        <div id="wrap">
            <div class="index-left">
                <div class="logo">
                    [img]images/logo.png[/img]
                </div>
                <div class="content">
                <div id="form_box">
                    <form action="contact.php" method="POST" id="form-box">
                        <fieldset>
                            <legend class="n1">Your contact information</legend>
                                <label>[b]Name:[/b]</label>(required)

                                    <input type="text" name="name" value=""  /><?php echo $error[0]; ?>
                    
                                    <label>[b]E-mail:[/b]</label>(required)

                                    <input type="text" name="email" value="" /><?php echo $error[1]; ?>

                                    <label>[b]Subject:[/b]</label>(required)

                                    <input type="text" name="subject" value="" /><?php echo $error[3]; ?>

                                    

                        </fieldset>
                        <fieldset>
                            <legend class="n1">Your message</legend>
                                <label>[b]Message:[/b]</label>(required)<?php echo $error[4]; ?>

                                    <textarea name="comments" rows="7" cols="50" ></textarea>
                                    

                                    <input class="button" name="submit" type="submit" value="Send" /><?php echo $error[5]; ?><?php echo $good[0]; ?>
                        </fieldset>
                    </form>    
                </div>
                </div>     
            </div>
            <div class="index-right"> 
        
            </div>


            <div id="footer">
                <ul id="footer-menu">
                [/list]
            </div>
        </div>


    </div>
    </body>
    </html>

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    3
    Grazie a entrambi per le risposte!
    Non mi resta che provarci..

  5. #5
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Cioè, non dovrebbe fare un redirect ma semmai, mostrare un div nascosto

    con php ripeto che non è possibile....il codice php non viene eseguito sul client ma sul server quindi è necessario inviare la pagina...per evitare di inviare tutta la pagina è possibile usare ajax che non farà ricaricare la pagina contenente il form....io intendevo questo!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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 © 2025 vBulletin Solutions, Inc. All rights reserved.