Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Script php

  1. #1

    Script php

    Ciao a tutti,
    sto avendo dei problemi ad attivare un semplice script per l'invio via mail dei dati di un form. Immagino che si tratti di qualche problema semplice, ma per il poco che conosco di php mi sta creando difficoltà.
    La base dello script è presa dal web, e tempo fa lo avevo utilizzato tranquillamente dopo averci fatto qualche modifica.

    Ecco il codice
    Codice PHP:
    <?php 
    // ************Inizio Configurazione*************** 
    //Indirizzo emai a cui inviare i msg 
    $mailto "fabio@mail.it"
    //Oggetto della mail 
    $subject "Contatti dal sito"
    //Pagina da mostrare dopo l'invio 
    $redirect "http://www.sito.it"
    // fine configurazione 
    foreach($HTTP_POST_VARS as $key => $value) {
          
    $message .= $key ': ' $value;
         
    $message .= "\n";
    }
    if (empty(
    $_POST[email]) && empty($_POST[messaggio]) ){
         echo 
    "<script type='text/javascript'>alert('Errore: inserire la propria mail e il messaggio');location.href='http://www.sito.it#contatti';</script>";
         exit();
     } 
    elseif (empty(
    $_POST[email])) {
         echo 
    "<script type='text/javascript'>alert('Errore: inserire la propria e-mail.');location.href='http://www.sito.it#contatti';</script>";
         exit();
     } 
    elseif (empty(
    $_POST[messaggio])) {
         echo 
    "<script type='text/javascript'>alert('Errore: inserire il testo del messaggio');location.href='http://www.sito.it#contatti';</script>";
         exit(); 

    else {
         @
    mail($mailto$subject$message);     
            
    header("location: $redirect");     
             exit();
     } 
    ?>
    e il form
    codice:
    <form class="contatto" method="post" action="mail.php">
     <p class="form"> 
    <label for="nome">Nome</label>
     
    <input type="text" name="nome" id="nome"></p>
    
     <p class="form"> 
    <label for="email">E-mail</label>
     
    <input type="text" name="email" id="email"></p>
    
    <p class="form_text"> 
    <label for="messaggio">Messaggio</label>
     
    <textarea name="messaggio" id="messaggio"></textarea></p>  
    <input class="invia" name="invia" type="submit" value="Invia">
    
      
    </form>
    Grazie mille in anticipo a chi volesse darci un'occhiata!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Ci dici anche qual è il comportamento anomalo?
    Non invia le email? Le email partono ma non arrivano? Ti da errore? Quale? ecc...

  3. #3
    Dimenticavo...
    qualsiasi azione si tenti di fare, compilando i campi o meno, inviando restituisce questo errore:

    "Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request."

    Ho provato anche a caricare i file su una diversa piattaforma hosting, nel dubbio che la mia non supportasse il php; il messaggio di errore è diverso ma non funziona uguale.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Originariamente inviato da al_dente
    Dimenticavo...
    qualsiasi azione si tenti di fare, compilando i campi o meno, inviando restituisce questo errore:

    "Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request."
    questo ti sta dicendo che il server non è configurato correttamente, quindi non è un problema di codice PHP
    Ho provato anche a caricare i file su una diversa piattaforma hosting, nel dubbio che la mia non supportasse il php; il messaggio di errore è diverso ma non funziona uguale.
    E quale sarebbe quest'altro errore diverso?
    La sfera di cristallo mi si è rotta e sono in attesa di una nuova... non capisco perché da un po' di tempo la gente faccia di tutto per non far capire che problema ha...

  5. #5
    Mi rende un uguale 500 Internal server error, ma la dicitura è
    File ".../mail.php" is writeable by group

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Il che vuol dire che c'è un problema di permessi sul file, di nuovo, non è un problema di PHP.
    Devi cambiare i permessi al file, ma dirti come devono essere... non saprei, prova 644.

    Come vedi il testo degli errori è fondamentale, dire "mi da un errore" è come non dire niente, se invece dici cosa riposrta l'errore è immediato capire il problema.

  7. #7
    Grazie, con i permessi su 664 lo script parte, richiede obbligatoriamente e-mail e testo del messaggio, ma la mail che mi invia è vuota...

    L'error_log mi evidenzia un errore sulla riga con:

    Codice PHP:
    foreach($HTTP_POST_VARS as $key => $value) {

          
    $message .= $key ': ' $value;     
            
    $message .= "\n"

     } 
    ,non ho fatto altre modifiche allo script

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Prova ad usare

    foreach ( $_POST as $key => $value)

    invece di

    foreach ( $HTTP_POST_VARSas $key => $value)

  9. #9
    Perfetto, funziona, grazie mille.
    Se posso mettere a prova la tua pazienza con un ultima cosa, sto provando ad inserire insieme agli altri controlli la sintassi della mail digitata.

    Codice PHP:
    if (empty($_POST[email]) && empty($_POST[messaggio]) ){
         echo 
    "<script type='text/javascript'>alert('Errore: inserire la propria mail e il messaggio');location.href='http://www.sito.html#contatti';</script>";
         exit();
     } elseif(!
    preg_match'/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', ($_POST[email]))) {
         echo 
    "<script type='text/javascript'>alert('Errore:l'e-mail inserita non è corretta');location.href='http://www.sito.html#contatti';</script>";
         exit();
     }     elseif (empty(
    $_POST[email])) {
         echo 
    "<script type='text/javascript'>alert('Errore: inserire la propria e-mail.');location.href='http://www.sito.html#contatti';</script>";
         exit();
     } elseif (empty(
    $_POST[messaggio])) {
         echo 
    "<script type='text/javascript'>alert('Errore: inserire il testo del messaggio');location.href='http://www.sito.html#contatti';</script>";
         exit();
     }
     else {
         @
    mail($mailto$subject$message);
         echo 
    "<script type='text/javascript'>alert('Il messaggio è stato inviato correttamente');location.href='http://www.sito.html';</script>";
         exit();
     }
     
    ?> 
    la riga con la verifica della mail l'ho presa da una guida, immagino che inserendola brutalmente nel mio script senza conoscere per bene la sintassi del php ci sia qualcosa di sbagliato, sto facendo vari tentativi attorno a ($_POST[email]).
    Attualmente mi restituisce la pagina mail.php vuota
    grazie di nuovo

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Quando usi l'array $_POST, così come qualsiasi altro array, l'indice va tra gli apici, quindi ad esempio devi usare $_POST['email'] e non $_POST[email], e così anche per tutte le altre volte in cui usi $_POST

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