Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Palautelomake

Sivun loppuun

Jon31 [19.09.2006 11:09:56]

#

Ekaa kertaa koitin PHP:tä käyttää. Osaisiko joku siis neuvoa, että mitä vikaa alla-olevassa php -koodissa on?
Valittaa, että 12 rivillä on jotain vikaa. (En ole kuitenkaan koko koodia aivan itse tehnyt)

<?php
//otetaan post muuttujat ja lisätään ne muuttujiin jossa $muuttuja=jos_post_olemassa?post_arvo:jos_ei_olemassa
$sahkoposti=$_POST['sahkoposti']?$_POST['sahkoposti']:"";
$nimesi=$_POST['nimesi']?$_POST['nimesi']:"";
$palaute=$_POST['palaute']?$_POST['palaute']:"";
if(!empty($sahkoposti) && !empty($nimesi) && !empty($palaute)){
$kohdeosoite= "sahkoposti@sahkoposti.fi";//maili johon lähtee
$headers = 'From: sahkoposti@sahkoposti.fi' . "\r\n" .
   'Reply-To: sahkoposti@sahkoposti.fi' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

if(mail($kohdeosoite, $sahkoposti, $nimesi, $palaute, $headers)){
   echo "Palautteen lähettäminen onnistui.";
}else{
   echo "Palautteen lähettäminen ei onnistunut.";
}
}else{
   if($_POST['send'])echo "Täytä kaikki kentät";
   echo "<form method=\"post\">";
   echo "<table>";
   echo "<tr><td>Sähköposti:</td></tr>";
   echo "<tr><td><input type=\"text\" name=\"sahkoposti\" maxlength=\"50\" value=\"$sahkoposti\" /></td></tr>";
   echo "<tr><td>Nimesi:</td></tr>";
   echo "<tr><td><input type=\"text\" name=\"nimesi\" maxlength=\"50\" value=\"$nimesi\" /></td></tr>";
   echo "<tr><td>Palaute foorumistamme:</td></tr>";
   echo "<tr><td><textarea name=\"palaute\" rows=\"6\" cols=\"60\">$palaute</textarea></td></tr>";
   echo "<tr><td><input type=\"submit\" name=\"send\" value=\"lähetä\" /></td></tr>";
   echo "</table>";
   echo "</form>";
}
?>

Pekka Karjalainen [19.09.2006 11:42:12]

#

Laita koodi mieluummin tällä tavalla näkyviin:

<?php
//otetaan post muuttujat ja lisätään ne muuttujiin jossa $muuttuja=jos_post_olemassa?post_arvo:jos_ei_olemassa
$sahkoposti=$_POST['sahkoposti']?$_POST['sahkoposti']:"";
$nimesi=$_POST['nimesi']?$_POST['nimesi']:"";
$palaute=$_POST['palaute']?$_POST['palaute']:"";
if(!empty($sahkoposti) && !empty($nimesi) && !empty($palaute)) {
    $kohdeosoite= "sahkoposti@sahkoposti.fi";//maili johon lähtee
    $headers = 'From: sahkoposti@sahkoposti.fi' . "\r\n" .
    'Reply-To: sahkoposti@sahkoposti.fi' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

    if(mail($kohdeosoite, $sahkoposti, $nimesi, $palaute, $headers)) {
        echo "Palautteen lähettäminen onnistui.";
    } else {
        echo "Palautteen lähettäminen ei onnistunut.";
    }
} else {
    if($_POST['send']) echo "Täytä kaikki kentät";
    echo "<form method=\"post\">";
    echo "<table>";
    echo "<tr><td>Sähköposti:</td></tr>";
    echo "<tr><td><input type=\"text\" name=\"sahkoposti\" maxlength=\"50\" value=\"$sahkoposti\" /></td></tr>";
    echo "<tr><td>Nimesi:</td></tr>";
    echo "<tr><td><input type=\"text\" name=\"nimesi\" maxlength=\"50\" value=\"$nimesi\" /></td></tr>";
    echo "<tr><td>Palaute foorumistamme:</td></tr>";
    echo "<tr><td><textarea name=\"palaute\" rows=\"6\" cols=\"60\">$palaute</textarea></td></tr>";
    echo "<tr><td><input type=\"submit\" name=\"send\" value=\"lähetä\" /></td></tr>";
    echo "</table>";
    echo "</form>";
}
?>

Lisäksi kerro, mitä se valittaa. Ongelmahan voi olla, että se ei saa lähetettyä sähköpostia, minkä tuo mail(...)-juttu rivin 12 paikkeille yrittää tehdä.

siirappi [19.09.2006 13:06:58]

#

if(mail($kohdeosoite, $sahkoposti, $nimesi, $palaute, $headers)){
echo "Palautteen lähettäminen onnistui.";
}else{
echo "Palautteen lähettäminen ei onnistunut.";
}
}else{
if($_POST['send'])echo "Täytä kaikki kentät";

Kaksi else-lausetta peräkkäin, siinä virhe.

Jon31 [19.09.2006 13:58:20]

#

Ihan oikeinhan tuo else kohta on..?

Alkuperäinen koodi oli tälläinen, mutta miten saan siihen lisättyä jonkun uuden kohdan. (Esim. sähköpostikohdan)Toivottavasti joku nyt ymmärsi..

<?php
//otetaan post muuttujat ja lisätään ne muuttujiin jossa $muuttuja=jos_post_olemassa?post_arvo:jos_ei_olemassa
$nimesi=$_POST['nimesi']?$_POST['nimesi']:"";
$palaute=$_POST['palaute']?$_POST['palaute']:"";
if(!empty($nimesi) && !empty($palaute)){
$kohdeosoite= "oma@sahkoposti";//maili johon lähtee
$headers = 'From: oma@sahkoposti' . "\r\n" .
   'Reply-To: oma@sahkoposti' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

if(mail($kohdeosoite, $nimesi, $palaute, $headers)){
   echo "Palautteen lähettäminen onnistui.";
}else{
   echo "Palautteen lähettäminen ei onnistunut.";
}
}else{
   if($_POST['send'])echo "Täytä molemmat kentät";
   echo "<form method=\"post\">";
   echo "<table>";
   echo "<tr><td>Nimesi:</td></tr>";
   echo "<tr><td><input type=\"text\" name=\"Nimesi\" maxlength=\"50\" value=\"$Nimesi\" /></td></tr>";
   echo "<tr><td>Palaute foorumistamme:</td></tr>";
   echo "<tr><td><textarea name=\"Palaute\" rows=\"6\" cols=\"60\">$Palaute</textarea></td></tr>";
   echo "<tr><td><input type=\"submit\" name=\"send\" value=\"Lähetä\" /></td></tr>";
   echo "</table>";
   echo "</form>";
}
?>

tsuriga [19.09.2006 14:23:46]

#

Heität siihen samanlaisen input textin ja käsittelet kuten nimi- ja palautekentänkin.

Lebe80 [19.09.2006 14:25:12]

#

$email=$_POST['email']?$_POST['email']:"";

ja "lomakkeeseen" kenttä sähköpostille:

<input type="text" name="email" />

Lisäksi kaikki lähetetyt ($_POST) tiedot täytyy siivota mahdollisista ylimääräisistä merkeistä. Itse tykkään että teksti saa sisältää vain kirjaimia, numeroita, pisteitä ja pilkkuja. Lisäksi sähköpostikenttä saa sisältää yhden @ -merkin.

Jon31 [19.09.2006 14:33:29]

#

Haluaisitko näyttää mallia, että miten ($_POST) tiedot siivotaan aikaisemmasa esimerkissä.? :D
Kiitos.

Teuvo Töhvelö [20.09.2006 00:11:15]

#

Suosittelisin kyllä ohjelmointiputkan omaa PHP-opasta. Sieltä löytyy vastauksia noihin kysymyksiin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta