Eli tein tälläisen lomakkeen:
HTML (viesti.html):
<html> <head> <title> Viesti </title> </head> <BODY BACKGROUND="images/templatemo_background.jpg"> <form action="lahetaviesti.php" method="post"> <table width="400" border="0" align="center"> <tr> <td>Vastaanottajan sähköpostiosoite:<br><input type="text" name="vemail" size="60"></td> </tr> <tr> <td>Lähettäjä:<br><input type="text" name="nimi" size="60"></td> </tr> <tr> <td>Oma emailisi (jos haluat, että se mainitaan viestissä):<br><input type="text" name="email" size="60"></td> </tr> <tr> <td>Aihe:<br><input type="text" name="aihe" size="60"></td> </tr> <tr> <td>Viesti (HTML):<br><textarea name="viesti" cols="45" rows="4"></textarea></td> </tr> <tr> <td align="center"><input type="submit" value="Lähetä"> <input type="reset" value="Tyhjennä"></td> </tr> </table> </form> </body> </html>
Ja sitten tämä PHP (lahetaviesti.php):
<html> <head> <title> Viesti lähetys </title> </head> <body> <table width="400" align="center"> <tr> <td align="center"> <?php $posti = array ( nimi=>$_POST['nimi'], email=>$_POST['email'], viesti=>$_POST['viesti'] aihe=>$_POST['aihe'] vemail=>$_POST['vemail'] ); foreach ($posti as $arvo) { if (empty($arvo)) { die("Jätitkö jotain tyhjäksi?"); } } $osoite = $_POST['vemail']; $otsikko = $_POST['aihe']; $viesti = "Olet saanut viestin. Lähettäjä on: ".$_POST['nimi']." hänen sähköpostiosoite on: ".$_POST['email']." Viesti: ".$_POST['viesti']." "; mail ($osoite, $otsikko, $viesti, From= $_POST['vemail']); echo "Viesti lähetty onnistuneesti!"; ?> </td> </tr> </table> </body> </html>
Virhe koodi nettisivulle on:
Parse error: syntax error, unexpected T_STRING, expecting ')' in /home/a7046829/public_html/lahetaviesti.php on line 16
Mikä on koodissa vikana, kun ei toimi?
En PHP:stä ymmärrä mitään, mutta pilkkuja ainakin näyttäisi puuttuvan $posti-taulukon määrittelystä.
Ok vielä yks juttu miten saan tämän sisään
"From: osoitteesi@palvelin.tunnus");
Tämän
$_POST['vemail']
Eli se muuttaa vastaan ottajaa. Koska se ei vielä toimi.... Kiitos jo etukäteen!
Tyhjien kenttien tarkistus onnistuu paljon helpommin tähän tyyliin:
Edit: Korjasin koodin
Headerit pitää antaa mail-funktiolle näin:
mail($osoite, $otsikko, $viesti, "From: " . $_POST['vemail']);
Tällaisia mail-skriptejä ei sitten kannata laittaa julkisille sivuille.
Minkä takia?
Joku keksii ennen pitkää käyttää lomaketta häiriköintiin tms, mistä sähköpostipalvelimesi ylläpitäjä tuskin pitää.
OK...no olen jo suunniteluut sen turvaamiseen, luulin että siinä on tietoturva aukko.
Lisäys:
Mitenkä saisin vielä tällä koodilla:
<?php $salakoodi ="XXXXXXXX"; //Printtaa kuka on käyttäjä if ($_SESSION["accesslevel"] == "$salakoodi") { $kukakayttaa = $_SESSION["username"]; print ("Käyttäjä: "."$kukakayttaa"); } ?>
Printattua tuon käyttäjä nimen tuohon
$osoite =
kohtaan?
PHP huolehtii sessioiden turvallisuudesta, eli et tarvitse mitään salakoodeja. Voit tallentaa oikeudet sessioihin ihan muodossa $_SESSION['saa_lahettaa_maileja'] = true
Luin koodiasi tarkemmin, enkä käsitä, miksi olet asettanut vastaanottajan ja lähettäjän osoitteen samaksi. Molempina käytetään $_POST['vemail']
:ia.
Mikäli haluat lähettää postia osoitteeseen $_SESSION['username']
, onnistuu se joko sijoittamalla se muuttujaan $osoite tai kirjoittamalla $_SESSION['username']
suoraan mail-funktion parametriksi.
$osoite = $_SESSION['username']; // Tai mail($_SESSION['username'], $otsikko, $viesti, "From: " . $_POST['vemail']);
Aihe on jo aika vanha, joten et voi enää vastata siihen.