Olen nyt saanut melkein kokonaan hommaan toimimaan. Viesti tulee sähköpostiin, mutta siinä ei ole mitään tietoja lomakkeesta. Eli mitä tähän pitäisi vielä lisätä että se osaa ottaa tiedot myös?
<script language="php"> $email = $HTTP_POST_VARS[email]; $mailto = "sähköpostiosoite"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: $email\n"; reset ($HTTP_POST_VARS); $mailbody = "Values submitted from web site form:\n"; while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; } if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); } </script>
(Mod. Edit. Kooditagit.)
Viestin sisältö pitää lähettää html-muodossa. Täällä yksi esimerkki:
http://www.pm-netti.com/index.php?id=oppaat&sivu=PhpFunktiot&funktiolista=mail&script=mail
hmm.. en ainakaan omilla säädöilläni saanut tuolla toimimaan... ja ei se ole pakko olla html muodossa.. vai onko siihen joku "sääntö"? Olen todellinen aloittelija php:ssä... Tämä on ensimmäinen php hommani joka tuli yllättäen ja pitäisi saada valmiiksi tänään...
paatzo kirjoitti:
Viesti tulee sähköpostiin, mutta siinä ei ole mitään tietoja lomakkeesta.
Jos sinun ei tarvitse lähettää varsinaista lomaketta viestiin, niin sitten html-muotoiluja ei tarvitse.
Sinulla on tuossa viestin sisältönä lause "Values submitted from web site form:\". Se ei tietenkään riitä, siihen pitää lisätä muutakin.
$mailbody = "Values submitted from web site form:". $_POST['ilmoittaja'];
Lisäät viestiin tarvittavat post-kenttien vastaanotot.
En saanut tuolla $_POST jutulla toimimaan. Ilmoittaa erroria nettisivulla:
Parse error: syntax error, unexpected T_VARIABLE in ja perässä sivun osoite ja virherivi joka on tuo $_POST-rivi.
Tässä tämänhetkinen muoto:
<?php $email = $HTTP_POST_VARS[email]; $mailto = "sähköpostiosoite"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: $email\n"; reset ($HTTP_POST_VARS); $mailbody = "Ilmoittautujan tiedot:"; while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; } if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); } ?>
(Mod. Edit. Kooditagit.)
Mitä tuo HTTP_POST_VARS tekee?
En ole itse tuota käyttänyt lomakkeiden lähetyksessä. Miten vaikuttaisi tämä muutos:
$mailbody = "Values submitted from web site form:". $_POST['jutut']; reset ($HTTP_POST_VARS);
ps. Tuosta edellisestä vielä. Käyt tässä läpi HTTP_POST_VARS muuttujia while-silmukassa, eikö niin?
Olet kuitenkin tuolla reset-toiminnolla tyhjentänyt kaikki kyseiset muuttujat ylemmällä rivillä. Eli ilmeisesti reset kuuluisi olla vasta loppurivillä:
while (list ($key, $val) = each ($HTTP_POST_VARS)) { $mailbody .= "$key : $val\n"; } if (!eregi("\n",$HTTP_POST_VARS[email])) { mail($mailto, $mailsubj, $mailbody, $mailhead); } reset ($HTTP_POST_VARS);
Ei näyttänyt vaikuttavan muulla lailla, kuin että erroria ei enää tule. Ja näytti olevan täysin hyödytön tuo http_post_vars homma.
Sellainen juttu kanssa, että voisiko tuossa formissa itsessään olla jotain väärin. PHP koodit on erillisessä kiitos.php tiedostossa.
Tässä lomakkeen koodi:
<form action="kiitos.php" method="post" enctype="text/plain" name="form" id="form" onsubmit="return tarkistus();" >
Sain vielä tälläisen vaihtoehdon:
<?php $email = $_POST['email']; $mailto = "sähköposti"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: $email\n"; $mailbody = "Ilmoittautujan tiedot:\n"; while (list ($key, $val) = each ($_POST)) { $mailbody .= "$key : $val\n"; } if (!eregi("\n",$_POST['email'])) mail ($mailto, $mailsubj, $mailbody, $mailhead); ?>
Toimii vain samalla lailla kuin edellinenkin, eli ei tule muuta kuin tuo "Ilmoittautujan tiedot:" kohta.
(Mod. Edit. Kooditagit.)
Ilmeisesti lomakkeella ei ole mitään vikaa. Tuossa while-silmukassa kaikki ei ole niin kuin pitäisi. Mutta homma hoituu ilman whileäkin. Näin:
<script language="php"> $email = $_POST['email']; $mailto = "pekka@internetti.com"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: <$email>\n"; $mailbody = "Values submitted from web site form:\n".$_POST['viesti']; mail($mailto, $mailsubj, $mailbody, $mailhead); </script>
$_POST['viesti'];
Pitääkö tuolla 'viesti' tilalla olla joku kohta lomakkeesta esim.
<input type="text" name="etunimi"> tuosta tuo etunimi?
vai itse lomakkeen nimi?
(Mod. Edit. Kooditagit.)
paatzo kirjoitti:
$_POST['viesti'];Pitääkö tuolla 'viesti' tilalla olla joku kohta lomakkeesta esim.
<input type="text" name="etunimi">tuosta tuo etunimi?
vai itse lomakkeen nimi?
Ei, vaan:
<textarea name="viesti" cols=40 rows=3> </textarea>
ellet käytä viestin kirjoitukseen input-kenttää, jonka name=viesti.
Riippuu siitä, mikä on tarkoituksesi. Jos vain etu- ja sukunimi tiedot, niin käytät input-kenttää ja vastaanotossa muutat tuohon $_POST-juttuun oikean nimen.
hmmm... Tuossa ei ole tuota <textarea> kohtaa ollenkaan vaan se on tehty tuolla <input> jutulla.. jos jotain apua on siitä että katsot itse lomakkeen koodia niin lomake on osoitteessa http://www.netikka.net/jarvio/
Pekka Mansikka kirjoitti:
Mitä tuo HTTP_POST_VARS tekee?
Vanhempi versio $_POST-taulusta. Ei pitäis enää käyttää.
Hoituu tähän tyyliin:
$email = $_POST['sposti']; $mailto = "pekka@internetti.com"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: <$email>\n"; $mailbody = "Values submitted from web site form:\n". $_POST['etunimi']. $_POST['sukunimi']. $_POST['lahiosoite']; mail($mailto, $mailsubj, $mailbody, $mailhead);
Voit lisätä tuohon viestiin[$mailbody] tarpeellisia lomakekenttien nimiä ja tarvittaessa muuta tekstiä.
Pekka Mansikka kirjoitti:
Olet kuitenkin tuolla reset-toiminnolla tyhjentänyt kaikki kyseiset muuttujat ylemmällä rivillä.
Eipäs. Tuolla palataan taulukon alkuun, jotta each toimii oikein.
PHP: reset - Manual kirjoitti:
reset -- Set the internal pointer of an array to its first element
Muutenkin taitaa Pekka Mansikka nyt vastata ihan eri kysymyksiin.
Tarkista vielä, tulevatko muuttujat perille ja käydäänkö silmukassa lainkaan. Lisäksi tuli mieleen, että mahtaako tuo each-homma toimia POST-taulukon kanssa, kun siihen ei saa kirjoittaa. Eli saako each muutettua sen tilaa? Kokeile varmuuden vuoksi foreachilla.
Se on tälläisessa muodossa:
<?php print_r($_POST); $email = $_POST['email']; $mailto = "pasi.jarvio@netikka.fi"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: <$email>\n"; $mailbody = "Ilmoittautujan tiedot:\n". $_POST['etunimi'] .$_POST['sukunimi'] .$_POST['osoite'] .$_POST['postinumero'] .$_POST['postitoimipaikka'] .$_POST['oppilaitos'] .$_POST['sposti'] .$_POST['puhnum'] .$_POST['vahalaktoosinen'] .$_POST['laktoositon'] .$_POST['gluteeniton'] .$_POST['muuallergia'] .$_POST['opintokaynti'] .$_POST['varavalinta'] .$_POST['toimikunta'] .$_POST['tyopaja'] .$_POST['tyopaja2'] .$_POST['avajaiset ja kaupungin vastaanotto'] .$_POST['lounas'] .$_POST['iltajuhla']; foreach ($_POST as $key => $val) { $mailbody .= "$key => $val\n"; echo "$key => $val\n"; } mail($mailto, $mailsubj, $mailbody, $mailhead); ?>
Eikä toimi vieläkään...
Ja vika on siis, että se lähettää sähköpostiin vain "Ilmoittautujan tiedot:" kohdan.
Testasin tuota. Minulla ainakin koko tuo $_POST-array on tyhjä.
Mutta tuossa sinun ei tarvitse käyttää molempia juttuja, riittää kun lisäät tuolla forechilla nuo $_POST jutut.
Mutta ensin ne täytyisi löytää jostakin....
Itseltä alkaa lähteä järki tämän homman kanssa, kun koulusta painostetaan koko ajan sen lisäksi, että on muutenki väsynyt yms. Jos joku huomaa tuossa jonku virheen niin olisi kiva jos suoraan korjaisi ja kopioisi sen korjattuna tähän, koska tämä on tosiaan ensimmäinen kerta kun säädän php:n kanssa.
Vika löytyi.
Poista lomakkeesta tämä kohta: enctype="text/plain" ja muuta tämä rivi näin:
$mailbody = "Values submitted from web site form:\n";
Noniin... pieni juttu vielä... muuten toimii loistavasti, mutta kun ilmoittaudu nappia painaa, niin se näyttää tiedot myös siinä kiitos.php sivun yläkulmassa.
poista rivi print_r($_POST);
Ei ole tuollaista kohtaa.
Tämä on tilanne nyt:
<?php $email = $_POST['email']; $mailto = "pasi.jarvio@netikka.fi"; $mailsubj = "Ilmoittautuminen"; $mailhead = "From: <$email>\n"; $mailbody = "Ilmoittautujan tiedot:\n"; foreach ($_POST as $key => $val) { $mailbody .= "$key => $val\n"; echo "$key => $val\n"; } mail($mailto, $mailsubj, $mailbody, $mailhead); ?>
No sitten poista tämä:
echo "$key => $val\n";
Noniin. Kiitoksia suuresti sulle avusta!!! Olisin varmaan kuollu mies ilman sua. :D
paatzo kirjoitti:
Noniin. Kiitoksia suuresti sulle avusta!!! Olisin varmaan kuollu mies ilman sua. :D
Ei kestä. Metabolix ansaitsee myös kiitokset tuosta foreach-jutusta.
Niin ja kiitokset Metabolix:lle myös tuosta osasta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.