Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
unstanic
Δημοσιεύσεις: 4
Εγγραφή: 25 Μαρ 2009 12:35
Τοποθεσία: Patra

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από unstanic » 25 Μαρ 2009 13:12

Γειά σας!

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

Έχω μια φόρμα mail η οποία έχει πρόβλημα με τους ελληνικούς χαρακτήρες.
Συγκεκριμένα έχω ρυθμίσει αν κάποιος ξεχασει κενό κουτάκι που είναι
υποχρεωτικό και πατήσει αποστολή, να του εμφανίζεται ένα warning στην
ίδια σέλίδα και τα στοιχεία που είχε συμπληρώσει να υπάρχουν ακόμη.
Όμως ενώ με τ αγγλικά λειτουργεί μια χαρά, άν έχουν συμπληρώσει ελληνικά
και ξεχάσουν κενό κουτάκι, τότε στην επανεμφάνιση της σελίδας
τα ελληνικά είναι πλέον σε περίεργη μορφή.

Ανέβασα την φόρμα κι έτσι μπορείτε να την δείτε στην διεύθυνση:

http://www.mitropulos.gr/travelhouse/tickets.php

Σας παρακαλώ όποιος γνωρίζει ας με βοηθήσει γιατί μ αυτό το πρόβλημα
είναι άχρηστη η φόρμα μου...

Ο κώδικας είναι ο εξής:

Κώδικας: Επιλογή όλων

1.<?php
2.if &#40;array_key_exists&#40;'send', $_POST&#41;&#41; &#123;
3.  //mail processing script
4.  // remove escape characters from POST array
5.  if &#40;get_magic_quotes_gpc&#40;&#41;&#41; &#123;
6.    function stripslashes_deep&#40;$value&#41; &#123;
7.      $value = is_array&#40;$value&#41; ? array_map&#40;'stripslashes_deep', $value&#41; &#58; stripslashes&#40;$value&#41;;
8.      return $value;
9.      &#125;
10.    $_POST = array_map&#40;'stripslashes_deep', $_POST&#41;;
11.    &#125;
12.  
13.  $to = 'unstanic@hotmail.com'; // use your own email address
14.  $subject = 'Travel House Online Tickets';
15.  
16.  // list expected fields
17.  $expected = array&#40;'ekdromi', 'apo', 'ews', 'enilikes', 'paidia', 'monoklina', 'diklina', 'triklina', 'sxolia1', 'name', 'surname', 'telephone', 'sellphone', 'email', 'fax', 'city', 'adress', 'tk'&#41;;
18.  // set required fields
19.  $required = array&#40;'ekdromi', 'apo', 'ews', 'enilikes', 'paidia', 'monoklina', 'diklina', 'triklina', 'name', 'surname', 'telephone', 'city', 'adress', 'tk'&#41;;
20.  // create empty array for any missing fields
21.  $missing = array&#40;&#41;;
22.  
23.  // assume that there is nothing suspect
24.  $suspect = false;
25.  // create a pattern to locate suspect phrases
26.  $pattern = '/Content-Type&#58;|Bcc&#58;|Cc&#58;/i';
27.  
28.  // function to check for suspect phrases
29.  function isSuspect&#40;$val, $pattern, &$suspect&#41; &#123;
30.    // if the variable is an array, loop through each element
31.    // and pass it recursively back to the same function
32.    if &#40;is_array&#40;$val&#41;&#41; &#123;
33.      foreach &#40;$val as $item&#41; &#123;
34.        isSuspect&#40;$item, $pattern, $suspect&#41;;
35.        &#125;
36.      &#125;
37.    else &#123;
38.      // if one of the suspect phrases is found, set Boolean to true
39.      if &#40;preg_match&#40;$pattern, $val&#41;&#41; &#123;
40.        $suspect = true;
41.        &#125;
42.      &#125;
43.    &#125;
44. 
45.  // check the $_POST array and any subarrays for suspect content
46.  isSuspect&#40;$_POST, $pattern, $suspect&#41;;
47.  
48.  if &#40;$suspect&#41; &#123;
49.    $mailSent = false;
50.    unset&#40;$missing&#41;;
51.    &#125;
52.  else &#123;
53.    // process the $_POST variables
54.    foreach &#40;$_POST as $key => $value&#41; &#123;
55.      // assign to temporary variable and strip whitespace if not an array
56.      $temp = is_array&#40;$value&#41; ? $value &#58; trim&#40;$value&#41;;
57.      // if empty and required, add to $missing array
58.      if &#40;empty&#40;$temp&#41; && in_array&#40;$key, $required&#41;&#41; &#123;
59.        array_push&#40;$missing, $key&#41;;
60.        &#125;
61.      // otherwise, assign to a variable of the same name as $key
62.      elseif &#40;in_array&#40;$key, $expected&#41;&#41; &#123;
63.        $&#123;$key&#125; = $temp;
64.        &#125;
65.      &#125;  
66.    &#125;
67.    
68.  // validate the email address
69.  if &#40;!empty&#40;$email&#41;&#41; &#123;
70.    // regex to identify illegal characters in email address
71.    $checkEmail = '/^&#91;^@&#93;+@&#91;^\s\r\n'";,@%&#93;+$/';
72.    // reject the email address if it deosn't match
73.    if &#40;!preg_match&#40;$checkEmail, $email&#41;&#41; &#123;
74.      $suspect = true;
75.      $mailSent = false;
76.      unset&#40;$missing&#41;;
77.      &#125;
78.    &#125;
79.  
80.  // go ahead only if not suspsect and all required fields OK
81.  if &#40;!$suspect && empty&#40;$missing&#41;&#41; &#123;
82.  
83.    // build the message
84.    $message = "Όνομα&#58; $name\n";
85.    $message .= "Επώνυμο&#58; $surname\n";
86.    $message .= "Τηλέφωνο&#58; $telephone\n";
87.    $message .= "Κινητό&#58; $shellphone\n";
88.    $message .= "Email&#58; $email\n";
89.    $message .= "Fax&#58; $fax\n\n";
90.    $message .= "Περιοχή&#58; $city\n";
91.    $message .= "Διεύθυνση&#58; $adress\n";
92.    $message .= "Τ.Κ.&#58; $tk\n\n\n";
93.    $message .= "Εκδρομή&#58; $ekdromi\n";
94.    $message .= "Από&#58; $apo\n";
95.    $message .= "Έως&#58; $ews\n";
96.    $message .= "Ενήλικες&#58; $enilikes\n";
97.    $message .= "Παιδιά&#58; $paidia\n";
98.    $message .= "Μονόκλινα&#58; $monoklina\n";
99.    $message .= "Δίκλινα&#58; $diklina\n";
100.    $message .= "Τρίκλινα&#58; $triklina\n\n\n";
101.    $message .= "$sxolia1";
102. 
103.    // limit line length to 70 characters
104.    $message = wordwrap&#40;$message, 70&#41;;
105. 
106.    // create additional headers
107.    $headers = "From&#58; Travel House<travelhouse@website.com>\r\n";
108.    $headers .= "Content-Type&#58; text/plain; charset=utf-8";
109.    if &#40;!empty&#40;$email&#41;&#41; &#123;
110.      $headers .= "\r\nReply-To&#58; $email";
111.      &#125;
112.    
113.    // send it  
114.    $mailSent = mail&#40;$to, $subject, $message, $headers&#41;;
115.      if &#40;$mailSent&#41; &#123;
116.      // $missing is no longer needed if the email is sent, so unset it
117.      unset&#40;$missing&#41;;
118.      &#125;
119.    &#125;
120.  &#125;
121.?>
122.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
123.<html xmlns="http&#58;//www.w3.org/1999/xhtml">
124.<head>
125.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
126....
127. 
128.<?php
129.if &#40;$_POST && isset&#40;$missing&#41; && !empty&#40;$missing&#41;&#41; &#123;
130.?>
131.  <p class="warning">Παρακαλούμε, συμπληρώστε τα κενά πεδία.</p>
132.<?php
133.  &#125;
134.elseif &#40;$_POST && !$mailSent&#41; &#123;
135.?>
136.  <p class="warning">Συγνώμη, παρουσιάστηκε πρόβλημα στην αποστολή. Παρακαλούμε προσπαθείστε λίγο αργότερα.</p>
137.<?php
138.  &#125;
139.elseif &#40;$_POST && $mailSent&#41; &#123;
140.?>
141.  <p class="sentc"><strong>Το μήνυμά σας εστάλη. Ευχαριστούμε για την κράτησή σας. Σύντομα θα επικοινωνήσουμε μαζί σας.
142.</strong></p>
143.<?php &#125; ?>
144....
145.<form action="<?php echo $_SERVER&#91;'PHP_SELF'&#93;; ?>" method="post" name="form1" id="form1">
146....
147.<div class="chkRad">
148.          <p>
149.            <label for="name"><font color="#fa7409">*</font> Όνομα<?php
150.        if &#40;isset&#40;$missing&#41; && in_array&#40;'name', $missing&#41;&#41; &#123; ?>
151.          <span id="regular" class="warning"> !</span><?php &#125; ?></label>
152.            <input type="text" name="name" class="textinput3" id="name" 
153.            <?php if &#40;isset&#40;$missing&#41;&#41; &#123;
154.          echo 'value="'.htmlentities&#40;$_POST&#91;'name'&#93;&#41;.'"';
155.          &#125; ?>
156.            />
157.          </p>
158.          <p>
159.            <label for="surname"><font color="#fa7409">*</font> Επώνυμο<?php
160.        if &#40;isset&#40;$missing&#41; && in_array&#40;'surname', $missing&#41;&#41; &#123; ?>
161.          <span id="regular" class="warning"> !</span><?php &#125; ?></label>
162.            <input type="text" name="surname" class="textinput3" id="surname" 
163.            <?php if &#40;isset&#40;$missing&#41;&#41; &#123;
164.          echo 'value="'.htmlentities&#40;$_POST&#91;'surname'&#93;&#41;.'"';
165.          &#125; ?>
166.            />
167....
168.<p class="clearIt">
169.        <input type="submit" name="send" id="send" value="Αποστολή" />
170.    </p></form>
(Συγνώμη για τους διπλούς αριθμούς)

zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από zeppos » 25 Μαρ 2009 15:40

Για δες παρακάτω μήπως είναι η htmlentities...

http://www.freestuff.gr/forums/viewtopi ... c203a95742
Εικόνα

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από fafos » 25 Μαρ 2009 15:45

To script einai sosmeno se ANSI morfh... prepei na to soseis se UTF-8.. katevase to Notepad++ kai anoikse to arxeio sou me auto.. meta pas Morfh, tsekareis to Kodoikopoihsh UTF-8 xoris BOM kai sozeis.. anevazeis kai vlepeis an pragmati einai ekei to provlhma..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

unstanic
Δημοσιεύσεις: 4
Εγγραφή: 25 Μαρ 2009 12:35
Τοποθεσία: Patra

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από unstanic » 26 Μαρ 2009 04:15

Ευχαριστω πολυ για την απάντηση!!!
Θα τα δοκιμάσω τώρα και θα σας ενημερώσω!

unstanic
Δημοσιεύσεις: 4
Εγγραφή: 25 Μαρ 2009 12:35
Τοποθεσία: Patra

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από unstanic » 26 Μαρ 2009 04:41

Δοκιμασα και τα 2 και δυστυχώς συνεχίζει και βγαζει τα ίδια....
Οταν άνοιξα το notepad++ μου έβγαζε ήδη οτι είναι σε μορφή utf-8 χωρίς BOM.
Εκανα την διαδικασια αλλα τα ιδια...
Μηπώς έχετε καμια άλλη ιδεα?
Ευχαριστω και παλι....

unstanic
Δημοσιεύσεις: 4
Εγγραφή: 25 Μαρ 2009 12:35
Τοποθεσία: Patra

Φόρμα mail εμφανιζει κινεζικα τα ελληνικα μετα απο redisplay

Δημοσίευση από unstanic » 26 Μαρ 2009 05:18

Φτιάχτηκε!!!!!!!
Συνδύασα αυτα:

1.
<?php

// Setting the Content-Type header with charset
header('Content-Type: text/html; charset=utf-8');
.....

2.
<form accept-charset="utf-8" ...

3.
htmlspecialchars

Ευχαριστώ πόλύ παιδιά!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης