Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP-lomake ääkkösongelma

Sivun loppuun

Ajattar [31.12.2012 00:25:50]

#

Hei,

PHP-lomakkeessani ei toimi ääkköset, viesti on sähköpostiin tullessaan yhtä sotkua.

Osaisiko joku auttaa?

Lomake

<?php
$posti = array
  (
  nimi=>$_POST['nimi'],
  email=>$_POST['email'],
  vrl=>$_POST['vrl'],
  hevonen=>$_POST['hevonen'],
  sivut=>$_POST['sivut'],
  rotu=>$_POST['rotu'],
  sukupuoli=>$_POST['sukupuoli'],
  ruokinta=>$_POST['ruokinta'],
  hoito=>$_POST['hoito'],
  paketti=>$_POST['paketti'],
  Karsinatoive=>$_POST['Karsinatoive'],
  Tarhatoive=>$_POST['Tarhatoive'],
  yeneva=>$_POST['yeneva'],
  muuta_mainittavaa=>$_POST['muuta_mainittavaa'],
  ehdot=>$_POST['ehdot'],
  Hevosen_ulkoasu=>$_POST['Hevosen_ulkoasu'],
  tunnus=>$_POST['tunnus'],
  salasana=>$_POST['salasana'],
  salasana2=>$_POST['salasana2']
  );

$osoite = "ajattar@yeneva.net";
$otsikko = "Morksa: Tallipaikkahakemus";
$viesti = "Nimi: ".$_POST['nimi']."
E-mail: ".$_POST['email']."
VRL-tunnus: ".$_POST['vrl']."

Hevosen nimi: ".$_POST['hevonen']."
Sivut: ".$_POST['sivut']."
Rotu: ".$_POST['rotu']."
Sukupuoli: ".$_POST['sukupuoli']."

Ruokinta-ohjeet: ".$_POST['ruokinta']."

Hoito-ohjeet: ".$_POST['hoito']."

Hoitopaketti: ".$_POST['paketti']."
Karsinatoive: ".$_POST['Karsinatoive']."
Tarhatoive: ".$_POST['Tarhatoive']."
Yenevan tilojen vuokraus: ".$_POST['yeneva']."
Muuta mainittavaa: ".$_POST['muuta_mainittavaa']."
Hyvaksyy vuokrasopimuksen ja tallin saannot: ".$_POST['ehdot']."
Haluaa kayttoon hevosen ulkoasun: ".$_POST['Hevosen_ulkoasu']."

Kayttajatunnus:: ".$_POST['tunnus']."
Salasana: ".$_POST['salasana']."
Salasana uudelleen: ".$_POST['salasana2']."";

mail ($osoite, $otsikko, $viesti, "From: ajattar@yeneva.net");

echo "<h1>Kiitos viestistäsi!</h1> Pyrimme vastaamaan viestiisi mahdollisimman pian!";
?>

(sain lomakkeen toimimaan)

Lebe80 [31.12.2012 12:39:13]

#

Salasana- ja salasana uudelleen -kentät sähköpostissa.... hmmm hmmm hmmmmmmm....

Ajattar [31.12.2012 12:43:48]

#

Lebe80, Kyseessä on virtuaalitalli, eikä salasanojen takana ole mitään maata mullistavaa tietoa, joten tietoturva-asioita ei tarvitse miettiä :D

Lebe80 [31.12.2012 12:47:00]

#

Olen asiasta eri mieltä.

Ainakin asiasta olisi hyvä mainita, ettei vahingossakaan laita salasanaa, joka on käytössä toisaalla...

Ajattar [31.12.2012 12:56:19]

#

Niinnose..

makumaku [31.12.2012 13:02:55]

#

Talleta tiedostot utf-8 muodossa, ja lisää mailin headeriin tieto että posti on utf-8 formaatissa.

$headers = "From: Ajattar <ajattar@yeneva.net>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";

mail ($osoite, $otsikko, $viesti, $headers);

Kokeilematta arvaisin että täälä voisi onnistua. Sitten jos pitää otsikkoon tai lähettäjien nimiin laittaa ääkkösiä, niin menee vähän vaikemammaksi (ei paljoa).
Itse olen parhaani mukaan pyrkinyt olla käyttämättä php:n mail-funktiota, niin ei ole varmaa kokemusta että toimiiko tuo.

Ajattar [31.12.2012 13:09:27]

#

Kiitos paljon, tuo toimii vallan mainiosti!

makumaku [31.12.2012 13:27:56]

#

Kun klikkasin tuota linkkiä niin huomasin että eikös tuossa otsikossakin pitäisi olla ääkkösiä. Siihen voisi kokeilla:

$otsikko = "Mörksä: Tallipaikkahakemus";
$otsikko = "=?UTF-8?B?".base64_encode($otsikko)."?=";

Ajattar [31.12.2012 13:56:26]

#

Mihin kohtaan tuo pätkä laitetaan?

makumaku [31.12.2012 14:18:25]

#

Ihan mihin tahansa ennen mailin lähetystä (mail-funktiota), mutta luonteva paikka tietenkin se missä nytkin asetat otsikon. Eli korvaat tuon yhden rivin missä asetat otsikon näillä kahdella rivillä.

Ja siis nämä postit tulee sinulle?
Eikö silloin olisi loogisempaa laittaa lähettäjäksi joku muu kuin sinä (nythän from- ja to-osoitteet ovat samat)?
Esim sen email-osoite joka sen viestin käy nettisivuilla kirjoittamassa.

Ajattar [31.12.2012 14:21:59]

#

Toimii! Kiitos paljon!

Lisäys: Juu, postit tulevat minulle. Olisihan tuo kätevä olla lähettäjän emaili, mutta osaamattomuuttani on tullut tottumuksesta lisättyä tuo oma osoite :D

Olli [31.12.2012 15:29:37]

#

Jos haluat olla lähettäjäksi lomakkeen lähettäjän, korvaa rivi

$headers = "From: Ajattar <ajattar@yeneva.net>\r\n";

rivillä

$headers = "From: ".$_POST['nimi']." <".$_POST['email'].">\r\n";

Ajattar [31.12.2012 15:37:15]

#

Tuhannet kiitokset avusta! :) Mä opin tässä jo vaikka mitä ja sain hienon TOIMIVAN lomakkeen :D

-tossu- [01.01.2013 20:28:29]

#

Kannattaa poistaa nimestä ja mailiosoitteesta rivinvaihdot ennen kuin niitä laittaa headereihin. Muuten käyttäjä voi lisätä omia headereita viestiin ja niiden avulla esimerkiksi lähetellä spamia. Rivinvaihtojen poisto onnistuu vaikka näin:

function poista_rivinvaihdot($teksti) {
	return str_replace(array("\r", "\n"), "", $teksti);
}
$nimi = poista_rivinvaihdot($_POST['nimi']);
$email = poista_rivinvaihdot($_POST['email']);

$headers = "From: $nimi <$email>\r\n";

Metabolix [02.01.2013 12:03:25]

#

Kannattaa tehdä myös From-otsikkoon vastaava Base64-temppu kuin Subject-otsikkoon.

The Alchemist [02.01.2013 14:19:29]

#

Turhanpäiväinen base64:lla läträäminen voi nostaa viestin spammiluokittelun pisteitä ja siten aiheuttaa asiallisten sähköpostien katoamisen spammilaatikon syövereihin. Sääntöjen mukaan base64:llä saisi enkoodata vain ascii-taulun ulkopuoliset merkit.

Sähköpostin lähettäminen käyttämällä php:n matalan tason funktioita on melko surkea idea, koska ensinnäkin ne funktiot ovat huonosti tehtyjä, mutta myös koska sähköpostin lähettämiseen liittyy juuri edellä mainitun kaltaisia kikkailuita.

Lataisin siis jonkin kunnollisen kirjaston tai yksittäisen luokan ja käyttäisin sitä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta