Προς το περιεχόμενο

Πρόβλημα με φόρμα επικοινωνίας!


mat978

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα insomniτες!Έχω το εξής πρόβλημα με την παρακάτω φόρμα επικοινωνίας: στο πεδίο ''Όνομα/ Email'' όταν λαμβάνω μήνυμα στο email δεν μου εμφανίζει ελληνικούς χαρακτήρες. Τι μπορεί να φταίει?

 

<FORM METHOD=POST ACTION="sendmail.php"> <P> <b><font size="4">

Όνομα/ Email:</font></b><P> <INPUT NAME="email" size="46"><P> <b> <span lang="el">

<font size="4">Κείμενο:</font></span></b><P> <p><TEXTAREA NAME="dokimh" ROWS="10" COLS="45"></TEXTAREA><P><INPUT TYPE="hidden" NAME="recipient" VALUE="my_email">

<font size="3">

<INPUT TYPE="submit" VALUE="Υποβολή" style="font-weight: 700"></font><INPUT TYPE="RESET" VALUE="Καθαρισμός πεδίων"><P></FORM>

Δημοσ.

Στείλε ντε και το sendmail.php να δούμε τι γίνεται εκεί!

Και τι εννοείς δεν εμφανίζει ελληνικούς χαρακτήρες; Τους δείχνει με άλλη κωδικοποίηση (UTF8 αντί για ISO-8859-7); Τους δείχνει σαν ερωτηματικά (?? ??a??); Δε δείχνει τίποτα;

Μία φωτογραφία του τι λαμβάνεις θα βοηθούσε αρκετά...

Δημοσ.

Βαριά παράλειψη!!

 

<?php

$email = $_REQUEST['email'] ;

$message = $_REQUEST['themail'] ;

$message = $_REQUEST['dokimh'] ;

 

mail( "my_email", "Feedback Form Results",

$message, "From: $email" );

header( "Location: http://location" );

?>

 

μου δείχνει τετραγωνάκια αντί για Ελληνικά

Δημοσ.

Για αρχή, δοκίμασε να γράψεις αυτό στο sendmail.php και πες μας τι σου έβγαλε. Να δούμε που βγαίνει το πρόβλημα. Εάν ακόμα και τώρα δε στα βγάζει Ελληνικά, μάλλον είναι θέμα κωδικοποίησης. Ποιον mail server έχεις εγκαταστήσει;

 

 

<?php

//Δεν ξέρω γιατί έχεις χρησιμοποιήσει την $_REQUEST.

 

$email = $_POST['email'] ;

$email2 = $_POST['themail'] ; //Τι είναι αυτό;

$message = $_POST['dokimh'] ;

echo "mail: ".$email."<br />Message: ".$message;

 

/*

mail( "my_email", "Feedback Form Results",

$message, "From: $email" );

header( "Location: http://location" );

*/

?>

Δημοσ.

:P Το ξέρω φίλε μου ότι δε θα στείλει, το θέμα είναι να δούμε τι θα σου δείξει στην οθόνη η echo. Εάν πρόσεξες, έχω βάλει τον κώδικα που στέλνει το email σε σχόλιο

(/* ... */).

Γενικότερα, πόσο καλά το κατέχεις το θέμα php;

Δημοσ.

φίλε dewn αν κατείχα την php δεν θα ζητούσα βοήθειά εδώ αλλά θα είχα ασχοληθεί μόνος. Και θεωρώ πολύτιμη την βοήθεια σου εδώ!η echo μου τα δείχνει σωστά!!Ελληνικά χωρίς τετραγωνάκια δηλαδή!από εκεί και μετά τι γίνεται όμως?

Δημοσ.

Ωραία. Τι mail server χρησιμοποιείς; Αφού η echo σου τα βγάζει σωστά, είμαι σχεδόν σίγουρος ότι είναι θέμα επιλογών του mail server...

Δημοσ.

δεν χρησιμοποιώ mail server ! και δεν νομίζω να είναι από αυτό γιατί όπου και αν την έχω χρησιμοποιήσει σε άλλα site την συγκεκριμένη φόρμα το ίδιο πρόβλημα έχω!το δεύτερο πεδίο (κείμενο) όμως δεν έχει πρόβλημα δείχνει κανονικά τα Ελληνικά.

Δημοσ.
Ωραία. Τι mail server χρησιμοποιείς; Αφού η echo σου τα βγάζει σωστά, είμαι σχεδόν σίγουρος ότι είναι θέμα επιλογών του mail server...

 

Ο MTA κανονικά δεν ασχολείται με το encoding του περιεχομένου του μηνύματος, δεν είναι μέρος της δουλειάς του.

 

Το πρόβλημα είναι ότι δεν ορίζονται καθόλου οι headers που προβλέπει το MIME, οπότε το άλλο άκρο δε γνωρίζει με ποια κωδικοποίηση να επεξεργαστεί το μήνυμα.

Σίγουρα θα υπάρχουν διάφορες wrapping mailing classes ή functions που διευκολύνουν την εισαγωγή MIME headers, όμως είναι αρκετά εύκολο να τους εισάγει κάποιος απευθείας, π.χ.:

 

>$charset='UTF-8';
$subject='Ελληνικοί Χαρακτήρες;';
$encoded_subject="=?$charset?B?".base64_encode($subject)."?=\n";
$to="[email protected]";
$body='τεστ;';
$headers="From: ".$from."\n"
   . "Content-Type: text/plain; charset=$charset; format=flowed\n"
   . "MIME-Version: 1.0\n"
   . "Content-Transfer-Encoding: 8bit\n"
   . "X-Mailer: PHP\n";
mail($to,$encoded_subject, $body,$headers);

Δημοσ.
Ο MTA κανονικά δεν ασχολείται με το encoding του περιεχομένου του μηνύματος, δεν είναι μέρος της δουλειάς του.

 

Το πρόβλημα είναι ότι δεν ορίζονται καθόλου οι headers που προβλέπει το MIME, οπότε το άλλο άκρο δε γνωρίζει με ποια κωδικοποίηση να επεξεργαστεί το μήνυμα.

Σίγουρα θα υπάρχουν διάφορες wrapping mailing classes ή functions που διευκολύνουν την εισαγωγή MIME headers, όμως είναι αρκετά εύκολο να τους εισάγει κάποιος απευθείας, π.χ.:

 

>$charset='UTF-8';
$subject='Ελληνικοί Χαρακτήρες;';
$encoded_subject="=?$charset?B?".base64_encode($subject)."?=\n";
$to="[email protected]";
$body='τεστ;';
$headers="From: ".$from."\n"
   . "Content-Type: text/plain; charset=$charset; format=flowed\n"
   . "MIME-Version: 1.0\n"
   . "Content-Transfer-Encoding: 8bit\n"
   . "X-Mailer: PHP\n";
mail($to,$encoded_subject, $body,$headers);

 

Σωστός... :o

Βρήκαμε τελικά τι φταίει;

Δημοσ.

με τον κώδικα αυτόν τώρα όλα τα δείχνει με τετραγωνάκια!!!δεν μποροώ να καταλάβω τι γίνεται!!!!

Δημοσ.

Το παράδειγμα προϋποθέτει ότι τα δεδομένα έχουν εισαχθεί με την δηλωμένη κωδικοποίηση (utf-8), έτσι;

 

Για παράδειγμα, αν τα δεδομένα εισάγονται από κάποια HTML form, θα πρέπει ο browser να χρησιμοποιήσει UTF-8 κατά τη συμπλήρωσή της (μπορείς να του υποδείξεις να το κάνει ως εξής), ενώ αν τα δεδομένα εισάγονται καρφωτά στον κώδικα, θα πρέπει ο text editor που χρησιμοποίησες για τον κώδικα να χρησιμοποιεί UTF-8 encoding.

 

Φυσικά αν θέλεις μπορείς να χρησιμοποιήσεις και κάποια άλλη κωδικοποίηση που υποστηρίζει ελληνικούς χαρακτήρες, UTF-8 είπα σαν παράδειγμα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...