// Eli ongelmani on yksinkertaisesti, että ei toimi. Voisiko joku ystäväällisesti jelppiä?
<?php ob_start(); session_start(); /////////////// Asetukset /////////////////// $omaoso = "harri.manu@hotmail.com"; // Sähköpostiosoite,ohon palaute tulee $otsikko = "Palautetta kotisivulta"; // Palautteen otsikko $koti = "http://www.sivusi.org"; // Palautteen lähetyksen jälkeinen poistumissivu $flood = "10"; // Floodaussuoja-aika sekunneissa //////////////////// Palauteluokat / Lisää uusi rivi mallilla ////////////////////// $sukupuoli[] = "Nainen"; $sukupuoli[] = "Mies"; $ika[] = "alle 15"; $ika[] = "15-19"; $ika[] = "21-29"; $ika[] = "30-39"; $ika[] = "40-49"; $ika[] = "50-59"; $ika[] = "60-69"; $ika[] = "70-->"; $asuinpaikka[] = "alle 50 km"; $asuinpaikka[] = "yli 50 km"; $ostoksillakaynti[] = "arkisin klo 9-12"; $ostoksillakaynti[] = "arkisin klo 12-15"; $ostoksillakaynti[] = "arkisin klo 15-18"; $ostoksillakaynti[] = "arkisin klo 18-21"; $ostoksillakaynti[] = "lauantaisin klo 9-12"; $ostoksillakaynti[] = "lauantaisin klo 12-15"; $ostoksillakaynti[] = "lauantaisin klo 15-18"; //////////////////////////////////////////// if(!$_GET['act']){ $tarkastus = rand(1,5); session_register("tark"); $_SESSION['tark'] = $tarkastus; echo' <h3>Kysely</h3> <form method="post" action="'.$_SERVER['PHP_SELF'].'?act=laheta" style="margin:0;"> <table width="500" border="0"> <tr> <td>1. Sukupuoli</td> <td> <select name="sukupuoli"> <option value="">-- Valitse --'; foreach($sukupuoli as $lomake){ $a = explode(":",$lomake); echo'<option value="'.$a[0].'">'.$a[0].''; } echo'</select><br> </td> </tr> <tr> <td>2. Ikä</td> <td><select name="ika"> <option value="">-- Valitse --'; foreach($ika as $lomake){ $b = explode(":",$lomake); echo'<option value="'.$b[0].'">'.$b[0].''; } echo'</select><br> </td> </tr> <tr> <td>3. Kengän kokoni on:</td> <td><input type="text" name="kengankoko" size="30" maxlength="10"<br> </td> <tr> </tr> <tr> <td>4. Asuinpaikka Iisalmesta </td> <td> <select name="asuinpaikka"> <option value="">-- Valitse --'; foreach($asuinpaikka as $lomake){ $c = explode(":",$lomake); echo'<option value="'.$c[0].'">'.$c[0].''; } echo'</select><br> </td> </tr> <tr> <td>5. Käyn mieluiten ostoksilla</td> <td><select name="ostoksillakaynti"> <option value="">-- Valitse --'; foreach($ostoksillakaynti as $lomake){ $d = explode(":",$lomake); echo'<option value="'.$d[0].'">'.$d[0].''; } echo'</select><br> </td> </tr> </table> 6. Valitessani kenkiä ja laukkuja minulle on tärkeintä (laita tärkeysjärjestykseen numerot 1-7): <table width="500" border="0"> <tr> <td></td> <td>ulkonäkö </td> <td><input type="text" name="tarkeys" size="30" maxlength="10"; </td> </tr> <tr> <td> </td> <td>hinta</td> <td><input type="text" name="tarkeys" size="30" maxlength="10"; ;</td> <td> </td> </tr> <tr> <td> </td> <td>lestin istuvuus </td> <td><input type="text" name="tarkeys" size="30" maxlength="10";</td> </tr> <tr> <td> </td> <td>myyjän suositus</td> <td> <input type="text" name="tarkeys" size="30" maxlength="10"; </td> </tr> <tr> <td> </td> <td>materiaali </td> <td><input type="text" name="tarkeys" size="30" maxlength="10"; </td> </tr> <tr> <td> </td> <td>kotimaisuus</td> <td> <input type="text" name="tarkeys" size="30" maxlength="10";</td> </tr> <tr> <td> </td> <td>myymälän viihtyisyys</td> <td><input type="text" name="tarkeys" size="30" maxlength="10"; </td> </tr> <tr> <td> </td> <td></td> <td></td> </tr> </table> <br> <br> <input type="checkbox" name="hvast"> Haluan vastauksen<br><br> Ruksaa suluissa oleva<br>'; for($i = 0;$i < 5;$i++){ $value = $i+1; if($_SESSION['tark'] == $value){ echo'(<input type="radio" name="check" value="'.$value.'">)'; } else { echo'<input type="radio" name="check" value="'.$value.'">'; } } echo' <br> <input type="submit" name="tark" value="Lähetä"><br><br> * = Pakollinen kenttä </form> <small>GLPalaute by <a href="http://www.glweb.org">GLWeb</a></small>'; } if($_GET['act'] == "laheta"){ $t = $_SESSION['tark']; if(isset($_POST['check']) == $t){ if(isset($_POST['tark'])){ if(isset($_COOKIE['palflood'])) exit ("Floodisuoja. <a href=\"javascript:history.go(-1)\">Takaisin</a>"); ; $palaute = stripslashes($palaute); $palaute = str_replace("<br>","",$palaute); $to = "$omaoso"; $ots = "$otsikko"; "; Nimi; Sukupuoli: $sukupuoli Ikä: $ika Kengännumero: $kengannumero ---------------------------------------------------- $palaute ---------------------------------------------------- Haluaako vastauksen: $hvast"; $ken = "from: $nimi<$email>\r\n"; mail($to,$ots,$mess,$ken); setcookie("palflood","jee",time()+$flood); session_unset("tark"); echo'<h3>Palaute onnistuneesti lähetetty</h3> <a href="'.$koti.'">Poistu</a>'; } } else { session_unset("tark"); echo'Palautteen lähetys epäonnistui, koska et ruksannut oikeaa ruudukkoa<br><br> <a href="'.$koti.'">Poistu</a> '; } } ob_end_flush(); ?>
Mod. lisäsi kooditagit
Oletko testannut meneekö skripti tuohon mail() -funktioon asti?
Miten se ei toimi? kerro toki tarkemmin ja laita pasteen vain kohta, joka ei mielestäsi toimi. Rivillä 34 on alustamaton muuttuja 'act', joten muuta vertailu mielummin vaikkapa
<?php isset($_GET['act'])
riviltä 215 sama juttu muotoon
POST muuttujat tulee kaivaa $_POST taulukosta, joten nykyisellään tuo aiheuttaa kasan virheitä. Et tarkista mail() funktion onnistumistam joten lähetyksen onnistumisesta ilmoittaminen on ainakin kyseenalaista.
Tuota noin. Se lähettää viestin mailiin, mutta ei mitään tietoja. Ja ISO kiitos
Ainakin mess-muuttuja näyttää olevan tyhjä. Teksti tuossa melko lopussa ilmeisesti kuuluisi laittaa sinne.
hant kirjoitti:
Tuota noin. Se lähettää viestin mailiin, mutta ei mitään tietoja. Ja ISO kiitos
Tulee vain tyhjä sivu, ei mitään muuta.
Lebe80 kirjoitti:
Oletko testannut meneekö skripti tuohon mail() -funktioon asti?
Joo ennekuin muutin noi GET jutut näytti sentään sivun=(
hant kirjoitti:
Lebe80 kirjoitti:
Oletko testannut meneekö skripti tuohon mail() -funktioon asti?
Joo ennekuin muutin noi GET jutut näytti sentään sivun=(
Muuta samalla muuttujat, joista tulkki herjaa oikeaoppisiksi. POST muuttujat kaivetaan $_POST taulukosta, jolloin ollaan lähempänä ratkaisua, mutta voisin silti suositella, että yrität pitää html:n ja php:n erillään toisistaan, jolloin molempien luettavuus paranee.
Teuro kirjoitti:
hant kirjoitti:
Lebe80 kirjoitti:
Oletko testannut meneekö skripti tuohon mail() -funktioon asti?
Joo ennekuin muutin noi GET jutut näytti sentään sivun=(
Muuta samalla muuttujat, joista tulkki herjaa oikeaoppisiksi. POST muuttujat kaivetaan $_POST taulukosta, jolloin ollaan lähempänä ratkaisua, mutta voisin silti suositella, että yrität pitää html:n ja php:n erillään toisistaan, jolloin molempien luettavuus paranee.
Nyt se tulostaa sivun, muta lähettää mailiin tyhjää
Teeppäs seuraava:
mitäs tulee tulostukseen? Ja mikä on $palaute muuttuja, et aseta sille mitään arvoa, mutta yrität käyttää sitä?
Millekä riville?
hant kirjoitti:
Millekä riville?
Epäilisin edelleenkin tätä kohtaa koodissa:
<?php $to = "$omaoso"; $ots = "$otsikko"; "; Nimi; Sukupuoli: $sukupuoli Ikä: $ika Kengännumero: $kengannumero ---------------------------------------------------- $palaute ---------------------------------------------------- Haluaako vastauksen: $hvast"; $ken = "from: $nimi<$email>\r\n"; mail($to,$ots,$mess,$ken); ?>
Nyt antaa vaan virheitä=(
@andu olet takuulla oikeassa.
Laitapa tuo minun koodi tarkalleen noin, kuten se tuossa on eli kaikki muu tauhka huis pois kokonaan, jotta saat selville mitä kamaa noihin muuttujiin on tallentunut.
Andu kirjoitti:
Epäilisin edelleenkin tätä kohtaa koodissa:
<?php $to = "$omaoso"; $ots = "$otsikko"; "; Nimi; Sukupuoli: $sukupuoli Ikä: $ika Kengännumero: $kengannumero ---------------------------------------------------- $palaute ---------------------------------------------------- Haluaako vastauksen: $hvast"; $ken = "from: $nimi<$email>\r\n"; mail($to,$ots,$mess,$ken); ?>
Nyt se tulostaa näytölle
Array =
Array =
Array = 43
Array =
Array =
Array =
Array = 5
Array = Lähetä
Palaute onnistuneesti lähetetty
Poistu
Minulla se antaa seuraavan tulostuksen
sukupuoli = Mies ika = 21-29 kengankoko = 44 asuinpaikka = yli 50 km ostoksillakaynti = arkisin klo 18-21 tarkeys = 1 check = 3 tark = Lähetä
Suosittelen lämpimästi kirjoittamaan tuon php osuuden ainakin kokonaan uusiksi, koska se on sinulle selkeästi hankalaa. Opettele kunnolla tarkastamaan lomake, jotta mailin lähetys olisi edes mahdollista.
Niinhän se on mutta kun oon kirjoittanut jo monta kertaa ja aina pieleen=(
hant kirjoitti:
Niinhän se on mutta kun oon kirjoittanut jo monta kertaa ja aina pieleen=(
Sillon vartti pois vauhtia ja kunnon miettimistä mikä menee pieleen, eikä summassa muutella jotakin. Voisit vaikka aloittaa siirtämällä lomakkeen omaan html tiedostoon, josta action="tarkasta.php" ja seuraavaksi teet tarkasta.php tiedoston, johon kirjoitat ainoastaan tuon $_POST muuttujien tulostamisen.
Tästä seuraava vaihe voisi olla muuttujien sisällön oikeellisuuden varmistaminen. Lopuksi teet vielä vaikka $viesti muuttujan, johon lisäät tarvittavat muuttujat ja tulostat muuttujan sisällön. Lopuksi teet mail() toteutuksen ja muistat tarkistaa onnistuiko lähetys.
Joo, ei kukaan ole seppä syntyessään. Ohjelmointi vaatii paljon keskittymistä ja koodin ymmärtämistä. Joskus menee vaan pieleen, mutta siitä ei silti kannata lannistua.
mail($to,$ots,$mess,$ken);
Missä alustetaan $mess? En löytänyt sitä mistään muualta koodista.
Muutenkin olisi suositeltavaa tulostella selaimelle muuttujia ennen umpimähkäistä sähköpostien lähettelyä ja varmistaa, että kaikki tarvittavat tiedot ovat halutuissa muuttujissa.
Kun ollaan varmoja, että kaikki on kunnossa, laitetaan mailit lähtemään, eikä siis sorkita sokkona ja toivota että kaikki toimii heti ensimmäisellä kerralla.
Tässä pari ystävää:
Tulostaa halutun muuttujan arvon (tässä nimetty $x)
echo "muuttuja x: $x";
Tulostaa kaikki lomakkeen tiedot (post-muodossa).
echo '<pre>'.print_r($_POST,true).'</pre>';
die();
Aihe on jo aika vanha, joten et voi enää vastata siihen.