ugrás a tartalomhoz

PHP üzenetküldő

djviktorio · 2012. Jan. 6. (P), 14.56
Sziasztok! Nem vagyok nagy májer, épp hogy csak kezdő, nagyjából próbálom átlátni a dolgokat.. Arról lenne szó, hogy van nekem egy template-m, sima contact oldallal, amihez kellene nekem egy php-s parancs, hogy elküldje nekem az adatokat. nagyjából próbálgattam összerakni egyet innen-onnan de nemigazán müxik, hozzáértő megnézhetné nekem, hogy mik is a hibák... nagyon hálás lennék... :/

Szóval a php-ben ez van:
-----------------------------
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_phone = $_POST['cf_phone'];
$field_message = $_POST['cf_message'];

$mail_to = 'valami##kukac##valami.com';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_phone."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'index-5.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to valami##kukac##valami.com');
        window.location = 'index-5.html';
    </script>
<?php
}
?>
Ez ugye a "contact.php" fájlom...

És kivágom a "fontosabb" részt a html-ből, ami mondjuk egy "(contact.html)" fájl.
<form action="contact.php" enctype="multipart/form-data" id="form">
                                        <table style="width:396px" class="form">
                                          <tr>
                                            <td  style="width:204px">
                                                <table>
                                                  <tr>
                                                    <td  style="height:39px"><input name="cf_name" type="text" value="Név:"><br></td>
                                                  </tr>
                                                  <tr>
                                                    <td  style="height:39px"><input name="cf_email" type="text" value="E-mail:"><br></td>
                                                  </tr>
                                                  <tr>
                                                    <td  style="height:39px"><input name="cf_phone" type="text" value="Telefon:"><br></td>
                                                  </tr>
                                                </table>
                                            </td>
                                            <td  style="width:192px">
                                                <textarea name="cf_message" cols="0" rows="0">Üzenet:</textarea><br>
                                                <br style="line-height:9px">
                                                <div style="text-align:right">
                                                    <a href="#" onClick="document.getElementById('form').reset()"><img src="images/clear.jpg" alt="" border="0"></a><img src="images/spacer.gif" alt="" width="10" height="1"><a href="#" onClick="document.getElementById('form').submit()"><img src="images/send.jpg" alt="" border="0"></a> </div>
                                            </td >
                                          </tr>
                                        </table>
                                    </form>
Nem tudom hogy mik a hibák... :/ :/ De úgy néz ki, hogy van egy Név, E-mail, Telefon, és egy szöveges rész.
A szöveges rész alatt van két "gomb".. amit "JPG" formátumba van bent. Egy a "reset" és egy a "küldés". Ezekre van hivatkozás a "<a href="#" ugye a kettős kereszt helyett kellene oda valami... mellette viszont ott van egy onClick-es parancs, amit messziről nem vágom, hogy mi... :/ nemtudom, hogy php jó-e? vagy stimmel-e a kettő együtt, de az lenne a jó, ha rákattolok a "küldés" gombra, akkor elküldje nekem, ha a "töröl"-re, akkor törölje az egészet, amit eddig beírt a jóember....

Please mesterek segítsetek!

u.i: most találtam valami hasonlót....de nekem nagyon magas:.... :(
 
1

most találtam valami

kuka · 2012. Jan. 6. (P), 15.31
most találtam valami hasonlót....de nekem nagyon magas:.... :(
A tiéd jobb annál. Ott mind a két link üríti az űrlapot. Ahogy így elnézem, a tiédnek működnie kellene, ha az űrlap POST metódussal volna elküldve. Tehát a form tagnek írj be egy method="post" attribútumot.

Azt még meg kell említsük, hogy az a kód sebezhető, mármint rajta keresztül kismillió embernek küldhető spam.
2

JavaScript

Poetro · 2012. Jan. 6. (P), 15.31
Először is, szedd ki a sok JavaScript-et a kódból, és használj valódi HTML elemeket a submit és a reset gombokra. Ha ez megvan, akkor nézd meg, így működik-e. Ha nem, akkor fussunk még egy kört.
3

:(

djviktorio · 2012. Jan. 6. (P), 16.41
Nagyon amatőr vagyok ám bocsi... :( Tehát ha lehet akkor olyan "szájbarágósan" ... :(
Amúgy előre is köszönöm, hogy segítetek! ;)

Kuka!
Így gondoltad a "method"-ot? hogy berakom ide?
<form action="contact.php" enctype="multipart/form-data" id="form" method="post">
Mert ha esetleg így, akkor is marad minden úgy ahogy volt.

Poetro!
A javascripteknél erre gondolsz?:
onClick="document.getElementById('form').reset()
próbáltam kiszedni, és a href-hez beírni, hogy "submit" vagy "reset".. de akkor se változik.. ha azt írom be, hogy <input type="submit" value="Send"> vagy valami hasonló.. akkor az egész elcsúszik.. és semmit nem érzékel...

Amúgy a <href="#"> -nél, ha a # helyett beírom, hogy submit vagy reset.. akkor a submit esetében állandóan "le akarja tölteni" a "contact.php"-t...

huh.... előre is bocsi, hogy ilyen tudatlan vagyok... de tényleg.. :( viszont szeretném nagyon megoldani..
4

Így gondoltad a

kuka · 2012. Jan. 6. (P), 17.07
Így gondoltad a "method"-ot?
Pontosan.
Mert ha esetleg így, akkor is marad minden úgy ahogy volt.
Akkor vadászd a hibát máshol, mert ezzel a kiegészítéssel nálam működik a kódod.

Csak a biztonság kedvéért egy hülye kérdés: úgy-e a contact.php 7. sorában a $mail_to értékéhez beírtad azt a címet amelyre a leveleket várod?
5

igen

djviktorio · 2012. Jan. 6. (P), 17.17
Igen beírtam a mail címet oda..

Próbáltam, hogy a "method"-ot az "id" elé viszem, de ugyanez.. bár lehet lényegtelen hol is van.. :)

Amúgy, mikor a "küld" vagy "submit" vagy ahogy nevezni lehet, hogy elküldje, rákattintok, és mindig előszedi nekem a "contact.php"-t.. mintha le akarná menteni..

A "<href>"-el nem lehet kapcsolatban esetleg?
7

(Elnézést, billentyűdadogás.)

kuka · 2012. Jan. 6. (P), 17.37
(Elnézést, billentyűdadogás.)
6

mindig előszedi nekem a

kuka · 2012. Jan. 6. (P), 17.36
mindig előszedi nekem a "contact.php"-t.. mintha le akarná menteni..
Akkor ott a hiba, hogy
  • vagy a web szerver nem tudja, hogy a PHP szkriptet futtatni kell,
  • vagy a web szerver nem is jut szóhoz, hogy futtathassa a PHP szkiptet.
A contact.htm-et, amely az űrlapot tartalmazza, úgy-e web szerverről kéred le, nem lokálisan nyitod meg az állományt? (Azaz a böngésző címsorában a protokoll http:// és nem file://.)
8

yess!

djviktorio · 2012. Jan. 6. (P), 18.22
Tettem egy próbát... gondoltam regisztrálok gyorsan egy ingyenes webhelyre.. mondjuk uw. feltöltöttem, és ott megy! :) most minden oké.. De nem értem.. Akkor lehet a tárhelyszolgáltatónál van bibi? mindenesetre felveszem velük a kontaktot akkor.. De nehogy már egy ingyenes tárhelyen tudja, amiért meg fizetek ott meg nem.. vagy létezik ilyen? ... Áhh.... mindenesetre megnyugodtam.. És köszönöm a segítségedet! Segítségeket.. ezermillió hála! ;)
jah.. még annyit.. hogy ha elküldi az üzit, akkor megjelentet egy írást, hogy pölö.. köszönjük, hogy írt, bla,bla.. és OK gomb. viszont olyat nem lehetne vele csinálni, hogy ne menjen egy "külön üres" lapra, és azon jelenjen meg, hanem sötétebb lenne az oldal, maga a háttér, és egyből ott jeleníti meg?
9

language?

djviktorio · 2012. Jan. 6. (P), 18.36
Esetleg még annyi, hogy a hosszú ékezetes betűket nem nagyon támogatja... Mit lehetne tenni ellene?
11

Lásd a PHP Mail

kuka · 2012. Jan. 6. (P), 18.56
12

karakter

djviktorio · 2012. Jan. 6. (P), 19.59
Köszi!
Megpróbáltam beszúrni azt a 2 sort, amit oda is írtál.. De valamiért nem megy...
Próbáltam átalakítani az én formámra.. ezekkel az idézőjelekkel.. de nem müxik.. :/
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$headers .= 'MIME-Version: 1.0  '."\r\n";  
$headers .= 'Content-Type: text/plain';  'charset=UTF-8 '."\r\n"; 
Az első 2 sor az eredeti.. a másikat próbáltam hozzádobni.. Az első hozzászólásomba látod az egészet, hova..
A srácnak akinek segítettél, ott ugye a ' helyett " volt. De raktam ide pontokat.. :) nemtudom.. De lehet rossz a sor.. :/ tyű.. azért elég komoly, hogy egy vessző miatt már más a szitu..
Amúgy UTF-8 a karakter az oldalon.. úgyhogy szerintem azzal nem lenne gáz.. :/
13

A srácnak akinek segítettél,

kuka · 2012. Jan. 6. (P), 20.37
A srácnak akinek segítettél, ott ugye a ' helyett " volt.
Amíg nincs benne kiértékelendő változó vagy fordított törtvonallal árnyékolt karakter, addig tök mindegy, hogy idézőjel vagy felső vessző. Az viszont tök nem mindegy, hogy a karakterláncot kettévágtad és a második fele a levegőben van. (Azaz nem történik vele semmiféle művelet.) Tehát a pontosvessző ott része a karakterláncnak, nem utasítás határoló:

$headers .= 'Content-Type: text/plain; charset=UTF-8'."\r\n";
15

sorry.

djviktorio · 2012. Jan. 8. (V), 14.19
Igen.. bocsi.. ezt kicsit összekevertem.. :s

Lényeg.. már annyira elvesztem benne, hogy hol működött, hol nem... ez érdekes volt.. most átírtam az egészet, amit "szabonorbert" küldött. Most megy minden... (kopp-kopp).. viszont valamiért még mindig nem akar rendesen írni ékezetes betűt.. :/ most már tényleg nem tudom mi lehet a bibi.. :s

Most valahogy így néz ki...
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_phone = $_POST['cf_phone'];
$field_message = $_POST['cf_message'];

$mail_to = 'valami##kukac##valami.com';
$subject = 'Üzenet az oldaláról! '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'Küldö e-mail címe: '.$field_email."\n";
$body_message .= 'Küldö telefonszáma: '.$field_phone."\n";
$body_message .= 'Üzenet: '.$field_message;

$field_name = '=?UTF-8?B?'.base64_encode($field_name).'?=';  
$subject  = '=?UTF-8?B?'.base64_encode($subject).'?=';

$header   = "Reply-To: " . $field_name . " <" . $field_email . ">" . "\r\n";  
$header  .= "Return-Path: " . $field_mname . " <" . $field_email . ">" . "\r\n";  
$header  .= "From: " . $field_name . " <" . $field_email . ">" . "\r\n";  
$header  .= "MIME-Version: 1.0" . "\r\n";  
$header  .= "Content-type: text/html; charset=UTF-8" . "\r\n"; 

$mail_status = mail($mail_to, $subject, $body_message, $headers);
17

Tudnál küldeni egy példa

kuka · 2012. Jan. 8. (V), 16.11
Tudnál küldeni egy példa levelet? Például $mail_to = 'valamipelda##kukac##mailinator.com'; állítást raksz a szkriptbe majd kitöltöd az űrlapot és elküldeted vele.
18

ok

djviktorio · 2012. Jan. 8. (V), 19.36
Oké. Közben átírtam, és küldtem is egyet az oldalról erre a címre! Köszi egyébként, hogy ennyire segítőkészen állsz hozzám! ;)
19

Eh, jobb volna ha inkább

kuka · 2012. Jan. 8. (V), 20.26
Eh, jobb volna ha inkább figyelmes volnék. A hiba ott üvöltött egész idő alatt:
  • a fejléceket $header változóba rakod össze
  • a mail() függvénynek $headers változót adsz át
20

:)

djviktorio · 2012. Jan. 8. (V), 20.48
Bassszusz... !!! :D hát ezt nem hiszem el... egy darab "s" betű.... hát ilyen nincs... átírtam.. most minden oké ékezettel együtt jön! tiszta vicc ez az "apróság"... Fuhh... ezer hála!!!! Hát én rá nem jöttem volna... NAGYON KÖSZÖNÖM A SEGÍTSÉGET!!!!!! ;)
Hihetetlen.... :)
21

Ezt ne mondd

Pepita · 2012. Jan. 10. (K), 10.12
Hát én rá nem jöttem volna...
Ne fesd az ördögöt a falra, mert megjelenik. Ez a hiba mindenkivel előfordul néha, de akard megtalálni ezeket.
14

Header megoldás

szabonorbert · 2012. Jan. 6. (P), 22.01
16

köszi

djviktorio · 2012. Jan. 8. (V), 14.23
Köszi.. Ez is hasznos volt. Legalább most már tuti megjön! ;)
10

Lehet. A legegyszerűbb ha az

kuka · 2012. Jan. 6. (P), 18.55
Lehet. A legegyszerűbb ha az űrlapot egy rejtett iframe-be irányítod. Tehát a form tagnek adsz egy target="rejtett" attribútumot, és valahol a dokumentumban elhelyezel egy <iframe name="rejtett" style="display: none"></iframe> taget. Így a beletöltött válasz dokumentum nem fog látszani, de a JavaScript lefut és az alert() megjelenik.