viesti_laheta.php
<html> <head> <title>Viestin lähetys</title> </head> <body bgcolor="black" text="8bd3bb" alink="8bd3bb" vlink="8bd3bb" link="8bd3bb"> <img src="happy.jpg" width="350" height="300"><br><br> <a href="viesti_laheta.php">Lähetä viesti</a> <?php //luetaan viestit taulukkoon $viestit = file("viestit.txt"); //kaannetaan taulukko, jolloin uusimmat viestit tulevat ylimmiksi $viestit = array_reverse($viestit); //viestien maara on suoraan taulukon rivien maara $viestimaara = count($viestit); //tulostetaan viestimaara echo "<p>Yhteensä <b>$viestimaara</b> viestiä.</p><hr>"; //kaydaan jokainen viesti lapi for ($i = 0; $i < $viestimaara; $i++) { //$viestit[$i] on merkkijono, joka sisaltaa viestin $i tiedot //pystyviivoilla erotettuna; jaetaan viestit $tiedot-taulukkoon $tiedot = explode("|", $viestit[$i], 4); //erotellaan tiedot omiin muuttujiinsa $nimi = $tiedot[0]; $email = $tiedot[1]; $aika = $tiedot[2]; $viesti = $tiedot[3]; //tulostetaan viesti echo "<p><b>Lähettäjä</b>: <a href=\"mailto:$email\">$nimi</a><br>"; echo "<b>Aika</b>: " . date("d.m.Y H:i", $aika) . "<br>"; echo "<br>$viesti<hr>"; } ?> </body> </html>
Palvelin on personal.fi.
viestit.txt-tiedoston oikeudet:
User 516, Access: Read & Write
Group 501, Access: Read only
Others, Access: Read Only
(FTP-ohjelmani on Secure FTP 2.5.17)
Myöskään mail-funktio ei toimi.
Niin, sekä tuo viestikoodi että mail-funktio ovat toimineet ennen, onkohan vika minussa, palvelimessa, vai jossakin muussa?
Hyvin valitsit satunnaisen koodipätkän viestisi koristeeksi.
Ongelma: Tiedostoon ei tallennu eikä sähköpostia lähde.
Ongelman syy: Koodissa ei yritetä tallentaa tai lähettää mitään.
Ratkaisu: Lisää koodiin tallennus tai lähetys.
Ja siis mikä olikaan kysymys?
Mail -funktiota ei tuossa koodissa ainakaan käytetä, eikä siinä muutenkaan tunnu mitään viestin lähetystä olevan, ainoastaan tulostetaan mailto-linkit (jota klikkaamalla avataa käyttäjän sähköpostiohjelma).
edit:
ville prkl kerkes.
Kerrataan vielä tietojen tallennus, kymmenessä sekunnissa tekaisin tällaisen:
<?php // Näin tarkistamme onko tietoja lähetetetty if(isset($_POST["tieto"])){ // Kirjoitamme tiedostoon $file = fopen("tiedosto.txt", "a+"); fwrite($_POST["tieto"], $file); fclose($file) // Näin lähetämme sähköpostin mail("kohde@www.fi", "otsikko", $_POST["tieto"]); } // Jos ei lähetetty, tulostamme lomakkeen. Lomakkeen voisi myös tulostaa joka sivulle, poistamalla else-sanan else{ ?> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> Name-arvosta tiedämme mistä muuttujasta on kyse <input name="tieto" type="text" /> <input type="submit" value="Lähetä" /> </form> Tähän voitaisiin lätkäistä esiin laittamasi tietojen tulostus. <?php } ?>
Apua, viestiin putkahti vahingossa koodi, jolla viestit näytetään. Oikea koodi on tässä
<?php //jos nimea ei ole annettu, naytetaan lomake... if (!isset($_POST['nimi'])) { ?> <html> <head> <title>Viestin lähetys</title> </head> <body bgcolor="black" text="8bd3bb" alink="8bd3bb" vlink="8bd3bb" link="8bd3bb"> <img src="happy.jpg" width="350" height="300"><br><br> Tässä voit lähettää Hulluaivon Viestittimeen viestejä, jolloin kaikki voivat lukea niitä!<br><br> <form action="viesti_laheta.php" method="post"> Nimi: <br> <input type="text" name="nimi"> <br> Sähköposti: <br> <input type="text" name="email"> <br> Viesti: <br> <textarea name="viesti"></textarea> <br> <br> <input type="submit" value="Lähetä"> </form> </body> </html> <?php //...muussa tapauksessa kirjoitetaan viesti tiedostoon } else { //avataan tiedosto append-tilassa: kirjoitetaan tiedoston loppuun $tiedosto = fopen("viestit.txt", "a"); //haetaan lomakkeen kautta tulleet muuttujat $nimi = $_POST['nimi']; $email = $_POST['email']; $viesti = $_POST['viesti']; //poistetaan ylimaaraiset kenoviivat (\) $viesti = stripslashes($viesti); //estetaan HTML-tagien kayttaminen $viesti = htmlspecialchars($viesti); //muutetaan rivinvaihdot HTML-muotoon $viesti = str_replace("\n", "<br>", $viesti); //otetaan talteen aika, jolloin viesti lahetettiin $aika = time(); //muodostetaan tiedostoon tallennettava rivi $rivi = "$nimi|$email|$aika|$viesti\n"; //kirjoitetaan rivi tiedostoon fwrite($tiedosto, $rivi); //suljetaan tiedosto fclose($tiedosto); //ohjataan kayttaja vieraskirjasivulle header("Location: viesti_nayta.php"); } ?>
Edit: Äskeisessä ei yritetäkään lähettää sähköpostia, se koodi on tässä:
<?php if(isset($_POST['liity'])){ $teksti = 'Uusi jasen Hulluaivo-klubiin. ------------------------------------------------------------- Lahettajan IP: '.$_SERVER['REMOTE_ADDR'].' Jasenen oikea nimi: '.$_POST['oikeanimi'].' Jasenen kayttajanimi: '.$_POST['nimi'].' Jasenen salasana: '.MD5($_POST['salasana']).' Jasenen sahkopostiosoite: '.$_POST['email']; $laheta = mail("juho.alho@luukku.com","Jasen Hulluaivo-klubiin",$teksti,"From: Hulluaivo <yllapito@hulluaivo.tk>"); header("Location: frontpage.html"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN"> <html> <head> <style type="text/css"> .subtitle {background-color:blue} a:link {color:8bb3bd} a:visited {color:8bb3bd} </style> </head> <body bgcolor="black" text="#8bd3bd"> <img src="cooltext40090505.gif"> <img src="happy.jpg" width="320" height="280"><br> Paljon tekstii...<br><br> <form method="post"> Mikä on kutsumanimesi? <input type="text" name="oikeanimi"><br> Valitse haluamasi käyttäjätunnus: <input type="text" name="nimi"><br> Valitse haluamasi salasana: <input type="password" name="salasana"><br> Sähköpostiosoitteesi: <input type="text" name="email"><br> - Hyväksyn Hulluaivon käyttöehdot<br> <input type="submit" value="Liity" name="liity"><br> <br> Paljon tekstii.... </form> </body> </html>
Sivusto on http://www.hulluaivo.tk/ ja sivut "Viestitin" ja "Liity Hulluaivo-klubiin", joten voitte käydä katsomassa sieltä.
Ps. Tämä EI ole mainos ;)
Empä tiiä, mutta kokeiles antaa viesti_laheta.php:lle Write-oikeudet ja kokeile sitten. Voit kai suoraan chmodata kaiken -> 777, kun eipä siitä mitään merkittävää haittaa ole, ja sitten ei ainakaan pitäisi olla chmodeista kiinni.
Btw, hieno sivu :D
Saisit kyllä ainakin pistää tuon http://user.personal.fi/atk/juhkonkotisivu/
deny from all
Sen jälkeen vielä päivität skriptit että ne löytää tuon users.datin sieltä. Hyvä olis tietenkin estää koko tiedostolistaus, vaikka tekemällä index.php-tiedosto tonne /juhkonkotisivu/ -polkuun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.