Moi teen WordPress sivuilleni palautelomaketta. Miten saan stringiin uuden rivin? Jos laitan tekstin sekaan \n, tekstin sekaan todellakin tulee vain \n eikä uutta riviä.. ja luulen ettei tämä koko homma toimi sen takia.
Toinen outo homma on että jos mulla on asetettu arvo stringille $esim, ja laitan echo("jotain $esim"); niin se tulostaa tuon mitä on lainausmerkkien välissä eikä "jotain " ja sen perään stringin $esim tekstiä.
<-- form.php --> <form method="POST" action="mailer.php"> Nimi<br> <input type="text" name="name" size="19"><br> <br>Organisaatio<br> <input type="text" name="organisaatio" size="19"><br> <br>Osoite<br> <input type="text" name="osoite" size="19"><br> <br>Puhelinnumero<br> <input type="text" name="puhelinnumero" size="19"><br> <br>Sähköpostiosoite<br> <input type="text" name="email" size="19"><br> <br>Palautteeni koskee<br> <select name="subject"> <option value="lisatieto">Lisätietoa</option> <option value="ilmoittautuminen">Ilmoittautuminen</option> <option value="palaute" selected="selected">Palaute</option> <option value="muu">Jokin muu</option> </select> <br>Viesti<br> <textarea rows="9" name="message" cols="30"></textarea> <br> <br> <input type="submit" value="Lähetä" name="submit"> </form>
// mailer.php <html> <head><title>testi</title><META http-equiv='Page-Enter' content='revealtrans(duration=99,transition=99'> <?php if(isset($_POST['submit'])) { $to = "munposti@gmail.com"; $subject = "Juu: " . $_POST['subject']; $name_field = $_POST['name']; $email_field = $_POST['email']; $osoite = $_POST['osoite']; $organisaatio = $_POST['organisaatio']; $puhelinnumero = $_POST['puhelinnumero']; $osoite = stripslashes(strip_tags(trim($osoite))); $organisaatio = stripslashes(strip_tags(trim($organisaatio))); $puhelinnumero = stripslashes(strip_tags(trim($puhelinnumero))); $subject = stripslashes(strip_tags(trim($subject))); $param = "-f " . $to; $email_field = stripslashes(strip_tags(trim($email_field))); $name_field = stripslashes(strip_tags(trim($name_field))); $message = $name_field . "\n" . $osoite . "\n" . $organisaatio . "\n" . $puhelinnumero . "\n" . $_POST['message']; $message = stripslashes(strip_tags(trim($message))); $header='From: ' . $to . '\n'.'Reply-To: ' . $email_field . '\n'.'MIME-Version: 1.0\n'.'Content-type: text/plain; charset=\"utf-8"' . '\n'.'Content-transfer-encoding: quoted-printable\n\n'; $header = stripslashes(strip_tags(trim($header))); echo $header; echo $subject; echo $message; $send_contact=mail($to,$subject,$message,$header,$param); if($send_contact){ echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='success.php"); } else { echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='fail.php"); } } else { echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='fail.php"); } ?> </head> <body> Viestiä lähetetään... </body> </html>
Rivinvaihto on kylläkin \n eikä /n.
OK, korjasin viestin, mutta otsikkoa en pääse korjaamaan. Koodissa se on kuitenkin oikein.
Voisit korjata viestistäsi muutkin räikeät lainausmerkkivirheet, jotka koodin väritys paljastaa.
Oon tässä kovasti yrittänyt löytää, mutta en löydä. Missä kohtaa?
<?php if($send_contact){ echo("<META HTTP-EQUIV='Refresh' echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='success.php"); } else { echo("<META HTTP-EQUIV='Refresh' echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='fail.php"); } } else { echo("<META HTTP-EQUIV='Refresh' CONTENT=5;URL='fail.php"); } ?>
ei tainnu ihan osua?
Kuten huomaat esimerkiksi rivin if($send_contact) jälkeen, jatkuu punainen väritys kohtaan echo(" asti. Lisäksi siinä on monta muutakin kohtaa (nähtävästi Teuro ennätti edelle). Kuuluuko echoa käyttä funktiotyyliin suluilla?
Wtf. Joo vähän meni sekasin kun otin pois sivuston oikeaa osoitetta tuosta. Mulla se on koodissa kuitenkin oikein.
Korjasin sen nyt myös tuohon aloitusviestiin.
No mutta kuitenkin, luulisi että vika olisi yksinkertainen.
<?php //Jos haluan että tämä tulostaa numerot 1 ja 2 ja kakkonen tulis omalle rivilleen, niin mikä tässä on pielessä? echo('1\n2'); ?>
Ja kun nyt olet vihdoin muokannut aloitusviestisi järkeväksi, päästään itse asiaan: \n ja muut vastaavat merkinnät toimivat vain lainausmerkeissä, eivät hipsuissa. (Poikkeuksina tietenkin \ ja ', jotka kirjoitetaan hipsuissakin '\\' ja '\''.) Lisäksi HTML:ssä rivinvaihto ei tarkoita rivinvaihtoa sivulla, vaan tähän pitää käyttää br-tagia (tai useimmissa tilanteissa järkevämmin kappalejakoa p-tageilla).
Kiitos! :D
E: nyt se toimii nyt muutenkin..
Aihe on jo aika vanha, joten et voi enää vastata siihen.