Hei!
Olen ihan aloittelija PHP asiassa ja tekemässä palautelomaketta. Joten terminologia ei varmaan kaikilta osian ole sitten ihan oikein. ;-)
Osittain se lomake toimii, mutta siinä on ongelmaa.
1. Se ei lähetä niitä lomakkeen tietoja. Minulla on siinä EOD ja ne se kyllä lähettää sähköpostiini, siis Nimi: mutta nimeä se ei siihen tuo kuka sen on lähettänyt..
2. Kun lomakkeen lähettää niin se heittää php filen. Miten saan tuohon sen, että vaikka "kiitos viestistä tms.?
Alla on koodin pätkää käykö siitä jo ilmi missä vika..?
Kiitos jo etukäteen!
<?php /*Subject and Email Variables*/ $emailSubject = 'Yhteydenottolomake!'; $webMaster = 'tässä on sähköpostini'; /*Gathering Data Variables*/ $etunimi = $_POST["Etunimi"]; $sukunimi = $_POST["Sukunimi2"]; $sähköposti = $_POST["Sähköposti"]; $puhelin = $_POST ["Puhelin"]; $viesti = $_POST["Viesti"]; $body = <<<EOD <br><hr><br> Etunimi: $Etunimi <br> Sukunimi: $Sukunimi <br> Sähköposti: $Sähköposti <br> Puhelin: $Puhelin <br> Viesti: $Viesti <br> EOD; $headers = "From: $Sähköposti\r\n"; $headers .= "Content-type: text/html\r\n"; $success = mail($webMaster, $emailSubject, $body, $headers); /*Results rendered as HTML*/ $theResults = <<<EOD EOD; echo "$theResults"; ?>
Mod. lisäsi kooditagit!
Sinulla on tuossa "Gathering Data Variables" muuttujat kirjoitettu pienellä alkukirjaimella ja sitten kuitenkin yrität lukea isolla alkukirjaimella kirjoitetusta muuttujista.
PHP:ssä, kuten useimmissa ohjelmointikielissä isot ja pienet kirjaimet ovat eri asia muuttujien, funktioiden, yms. nimissä.
Hei!
Mulla on html leiskassa text fieldissä ne isolla.. eikö ne pidä olla tismalleen samat kummassakin? Siis ymmärsin, että tuossa "post" jälkeen pitää olla se ihan sama miksi on nimennyt siellä html lomakkeessa..
Vai pitääkö minun tuon $ myös laittaa samat nimet?
Siis $_POST:it on varmaan ihan kunnossa, mutta siirrät esimerkiksi etunimen muuttujaan $etunimi. Sen jälkeen yrität liittää viestiin etunimen muuttujasta $Etunimi, joka on eri.
Eli näin ei toimi:
$etunimi = $_POST["Etunimi"]; $sukunimi = $_POST["Sukunimi2"]; $sähköposti = $_POST["Sähköposti"]; $puhelin = $_POST ["Puhelin"]; $viesti = $_POST["Viesti"];
Näin varmaan toimii:
$Etunimi = $_POST["Etunimi"]; $Sukunimi = $_POST["Sukunimi2"]; $Sähköposti = $_POST["Sähköposti"]; $Puhelin = $_POST ["Puhelin"]; $Viesti = $_POST["Viesti"];
Tietenkin voit myös muuttaa $body -muuttujan sisällöstä muuttujien alkukirjaimet pieniksi:
$body = <<<EOD <br><hr><br> Etunimi: $etunimi <br> Sukunimi: $sukunimi <br> Sähköposti: $sähköposti <br> Puhelin: $puhelin <br> Viesti: $viesti <br> EOD;
Ja muuttujan nimen ei tarvitse liittyä millään tavalla html -lomakkeen nimeen. Eli voit sijoittaa esimerkiksi
$autonMerkki = $_POST['lomake_eka_inputti'];
kunhan lomakkeessa vaan on kyseinen tieto.
Jess!!! Toimii!! Kiitos kovasti, pelastit päivän! Siis nyt kun jälkeen päin ajattelen niin olinpa tyhmä.. tietysti ne pitää olla yhtenevät alkukirjaimet!
Osaatko vielä neuvoa miten saan sen viestin (esim. kiitos viestistä!) kun tuota lähetä nappia painaa. Nyt se mulla heittää php filen siihen..
Tarkoitat että tulee vaan tyhjä sivu? Voit esimerkiksi tulostaa php:n echolla tiedoston lopussa kiitosviestin, tai ohjata käyttäjän selaimen haluamallesi sivulle header() -funktion avulla.
Tulostaminen:
https://www.ohjelmointiputka.net/oppaat/opas.
Ohjaaminen ja muutenkin palautelomake:
https://www.ohjelmointiputka.net/oppaat/opas.
No en saa toimimaan.. :-/ Saan tuon "tulostamisen" toimimaan jotenkin, mutta esim. ääkköset ei näy oikein..
Uudelleen ohjaaminen toiselle sivulle ei onnistu ollenkaan.. en tiedä edes mihin kohtaan se header on laitettava. Moneen kohtaan olen laittanut ja ei vaan onnistu..
Lisäys: Asia ratkesi! :-D Ja ääkkösetkin toimii ja uudelleenohjaus ja kaikki!
Lisäys: Eipä toimikkaan.. jos on se header niin eipä sitten toimi lähetys.. sulkevat toisensa.. ilmeisesti.
Laita headeri viimeiseksi, ja ääkkös ongelma ratkeaa käyttämällä samaa enkoodausta kaikissa tiedostoissa.
Kumma juttu, mutta ratkaisu oli tosi yksinkertainen ja en käyttänyt echoa enkä headeria.. php tiedostossa diveillä tehty oma leiska ja sinne teksti.Lomakkeen tiedot lähtee nätisti sähköpostiin ja "kiitos viesti" puppa tulostuu hienosti lähettämisen jälkeen.. Testattu 3:lla eri vempeleellä ja näyttää toimivan. Että voiko tämä olla mahdollista.. :-O
Teknisesti voit toki tulostaa kiitossivun suoraan tiedon käsittelyn jälkeen, mutta silloin selaimen historiaan jää lomakkeen tietoja niin, että selaimen takaisin-nappia painamalla voi vahingossa lähettää tiedot uudestaan.
En ymmärrä, mikä header-funktion käytössä on vielä yllä neuvotun oppaan jälkeen epäselvää. Se kuuluu tiedon käsittelyn jälkeen, ja sivulla ei pidä silloin tulostaa mitään (eli ei saa olla yhtään echoa eikä ?>-tagia muualla kuin tiedoston lopussa).
Aihe on jo aika vanha, joten et voi enää vastata siihen.