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

Discussione: form

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284

    form

    Ciao!
    Ho realizzato (da autodidatta) un form per la richiesta informazioni.
    Il classico nome, cognome, ecc...
    Se lo metto sul mio server con il suo file .php tutto ok,
    se lo metto sul server del cliente non funziona e mi da questo errore:

    ----------------------------------------------------------------------------------------------------
    Warning: mail(): SMTP server response: 573 me@twt.it unknown user account in E:\Inetpub\Sites\http://www.fastmilano.it.w3\site\for...iesta_info.php on line 19

    Warning: Cannot modify header information - headers already sent by (output started at E:\Inetpub\Sites\http://www.fastmilano.it.w3\site\for...ta_info.php:19) in E:\Inetpub\Sites\http://www.fastmilano.it.w3\site\for...iesta_info.php on line 21
    ----------------------------------------------------------------------------------------------------

    o_O

    Ho provato varie ed eventuali soluzioni ma nulla... rimanete solo voi!

    Ecco il file .php:
    http://www.tikografica.it/form/info.zip

    Grazie!
    Mo

  2. #2
    Dunque la questione degli headers è molto semplice: questa parte del tuo script
    Codice PHP:
    <?
    $email 
    "info@***.it"//Specificare un indirizzo email valido



    if($cognome == "") echo "Attenzione! compilare campo obbligatorio: Cognome.";

    else if(
    $nome == "") echo "Attenzione! compilare campo obbligatorio: Nome.";

    else if(
    $azienda == "") echo "Attenzione! compilare campo obbligatorio: Azienda.";

    else if(
    $email == "") echo "Attenzione! compilare campo obbligatorio: E-mail.";
    (le prime righe, per intenderci) inviano del testo se c'è qualche errore.
    Le righe immediatamente successive, invece, reindirizzano il browser su qualche altra pagina, all'occorrenza.
    Immagino che lo script php sia preceduto da del codice html, o comunque da qualcosa che venga stampato sullo schermo dell'utente. O togli il testo stampato prima, o sposti lo script php prima che venga inviato qualsiasi header o testo all'utente.
    Scusa se son stato poco chiaro ma sono stanco morto e non sto bene... Se non capisci dimmi che te lo rispiego
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284
    Ciao e grazie!
    Scusami ma... non ho capito...

    Ho creato una pagina html al cui interno ho inserito un <form>
    con queste caratteristiche: action="richiesta_info.php" method="post"

  4. #4
    Ciao! Scusa ho riletto ora il messaggio che ho scritto ieri sera e io stesso ho stentato a capirne il senso. Riparto da capo.

    Il concetto di fondo è che non puoi inviare più di una volta gli headers al browser dell'utente: questo significa che se vuoi reindirizzare il browser tramite comandi php verso una qualsiasi altra pagina devi farlo PRIMA di inviare qualsiasi tipo di output (sia esso html o risultati di "echo", ecc...).

    Per esempio:

    Codice PHP:
    <HTML>
    <HEAD>
    <TITLE>Ciao</TITLE>
    </HEAD>
    <BODY>
    <?php

    header
    ("Location: nuovapagina.php");

    ?>
    </BODY>
    </HTML>
    non funzionerà: infatti hai già inviato questo output prima dell'header:
    codice:
    <HTML>
    <HEAD>
    <TITLE>Ciao</TITLE>
    </HEAD>
    <BODY>
    Per lo stesso motivo questo non funzionerà:
    Codice PHP:
    <?php

    echo "Ciao, stai per venire rimandato ad un'altra pagina";

    header("Location: nuovapagina.php");

    ?>
    perchè prima di inviare l'header hai mandato in output una stringa.

    Per far funzionare le cose (limitatamente al primo esempio) dovresti fare:

    Codice PHP:
    <?php

    header
    ("Location: nuovapagina.php");

    ?>
    <HTML>
    <HEAD>
    <TITLE>Ciao</TITLE>
    </HEAD>
    <BODY>

    </BODY>
    </HTML>
    Per quanto riguarda il secondo c'è un "trucco" che sarebbe meglio evitare: tale trucco sta nella gestione del buffer. Per intenderci, se modifichi il secondo script così:
    Codice PHP:
    <?php

    ob_start
    ();

    echo 
    "Ciao, stai per venire rimandato ad un'altra pagina";

    header("Location: nuovapagina.php");

    ?>
    allora tutto funzionerà a meraviglia, anche se l'utente non avrà nemmeno il tempo di vedere il messaggio "ciao, stai..." perchè verrà subito reindirizzato alla nuova pagina.

    Concludendo: una buona regola è spostare gli header PRIMA di qualsiasi output, sia esso un echo o html o qualsiasi altra cosa che "stampi" qualcosa sul browser dell'utente.
    Il "trucco" dell'ob_start() usalo solo quando proprio non ne puoi fare a meno...

    Spero di esser stato più chiaro adesso!

    Ciaooo
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284
    OK! Ora è chiaro il concetto, grazie.
    Ma non trovo comunque nel mio html un punto in cui rimando ad un'altra pagina,
    cosa che oltretutto non devo fare. Vorrei semplicemente che una volta cliccato "invia",
    se il messaggio è stato inviato correttamente, l'utente venisse reindirizzato ad una pagina
    in cui appunto gli si dice "Bravo, tutto ok!" (oppure far uscire un messaggio con lo stesso significato).

    Poi sembra che un problema sia la riga 19 nel file .php con "$messaggio"... Ho provato a togliere le due righe successive con header ma continua a darmi l'errore alla riga 19.

    Tra l'altro se lo faccio dal mio server funziona, metto il tutto su quello del cliente e non funziona...

    Questo funziona:
    http://www.tikografica.it/form/contatti_info_ITA.html

    Poi però quando ricevo l'email dal form ha come mittente: Apache <apache@web010201.sh.it.net>
    e mi viene automaticamente messa in quelle da buttare perchè rischiose e non la vedo nemmeno.

    ...grazie!

  6. #6
    Allora, per quanto riguarda il mittente della mail devi giocare con gli header del comando mail(), appunto. Una ricerchina qui sul forum e troverai decine e decine di thread a riguardo

    Per quanto riguarda invece il problema degli header() e del redirect, potresti perfavore postare l'intero script della pagina? Compreso il codice html...
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284
    Ciao!
    Ecco qui!
    Qui trovi l'html e il php

    http://www.tikografica.it/form/form.zip

    Per l'intestazione dell'email poi cercherò di capire.

    Grazie!

  8. #8
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Il problema sta nell'errore della funzione mail():

    Codice PHP:
    if(mail($email"Mail dal sito, mittente: $azienda ",
    "Cognome = $cognome . \r\n
    Nome = 
    $nome . \r\n
    Azienda = 
    $azienda . \r\n
    Posizione = 
    $posizione . \r\n
    Telefono = 
    $telefono . \r\n
    E-mail = 
    $email . \r\n
    Altre richieste:
    $messaggio "))
      
    header ("Location: ok_ITA.html");
     else 
    header ("Location: err_ITA.html"); 
    Tu chiedi di reindirizzare ad ok_ITA se la mail viene inviata, altrimenti ad err_ITA.
    Poichè però la funzione mail provoca un errore, che viene stampato in output, gli headers vengono inviati, quindi pur provando a fare il redirect a err_ITA non riesci.

    La soluzione sarebbe quella di non stampare eventuali warning o errori della funzione email, in modo che il redirect possa funzionare. Metti quindi un @ davanti alla funzione, così:
    Codice PHP:
    if(@mail($email, ... 
    Stai attento però, in questo modo non potrai più leggere errori e warning, quindi magari prima accertati di aver risolto i problemi con l'invio della mail.

    Spero di essere stato di aiuto
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284
    Ciao Leo, grazie per il consiglio.
    Ho fatto come mi suggerisci ma ora quando clicco invia
    vengo reidirizzata solo alla pagina di errore...

    http://www.fastmilano.it/form/contatti_info_ITA.html


    ....

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    284
    Eccomi di nuovo...
    Ho provato a rifare da capo il form sulla base di un esempio scaricato dal sito php.html.it
    http://php.html.it/script/vedi/2144/form-per-email/

    ma niente. Funziona finchè lo provo nel mio spazio, quando lo metto in quello in cui dovrà poi essere
    mi da errore, sempre lo stesso e sempre sulla riga con
    if(mail($indirizzo_dest...

    Ho provato anche ad inserire la @ prima di mail ma niente, non vedo più la riga che mi comunica l'errore ma i contenuti del form non vengono inviati.

    Quale può essere il problema con quello server? cosa devo cercare secondo voi?

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.