Tässä on tekemäni simppeli uutisjärjestelmä, jota on helppo muokata. Siinä on adminpaneeli, josta voi lisätä uutisen sekä tyhjentää vanhat.
Tee näin:
1) Luo alla olevat tiedostot ja muokkaa linkit ym. sivuillesi sopiviksi
2) Luo uutiset.txt ja CHMODaa sille oikeudet 666
3) Uploadaa tiedostot palvelimelle
4) Includeta uutiset.txt sinne, minne haluat uutisten tulevan
Kannattaa myös laittaa linkki adminlogin-sivulle.
Voit katsoa lopputulosta täällä: http://---/uutisjarjestelma
uutiset.php
<?php // Laita urlin paikalle oman etusivusi osoite $etusivu = "http://---/uutisjarjestelma"; if($uutinen == "") { echo "Tsot, tsot!"; } else { // Hakee uutiseen kirjoitusajan $aika = date("d.m.y H:i:s"); // Määritä, minkälainen viiva tulee otsikon alle $viivatyyli = "border-bottom: 1px dashed black;"; // Uutinen kasataan tablen sisään. Muokkaa siitä haluamasi näköinen! $uutinen2 = "<table width='100%'><tr><td style='$viivatyyli'><b>$otsikko</b></td>"; $uutinen2 .= "<td style='$viivatyyli' align='right'>[$aika]</td></tr>"; $uutinen2 .= "<tr><td width='80%'>$uutinen<p><u>Kirjoittanut:</u> <i>$kirjoittaja</i></td></tr>"; $uutinen2 .= "</table><p>"; if($uutinen2) { // Kirjoitetaan uutinen tiedoston alkuun. Alla olevasta koodipätkästä kiitos T.M:lle :-) $tieto = "$uutinen2"; $filu = file("uutiset.txt"); $filu[0] = "\n$tieto\n"; $liitos = implode("", $filu); $save = fopen("uutiset.txt", "w"); fwrite($save, $liitos); fclose($save); header ("Location: $etusivu"); } } ?>
adminarea.php
<html> <head> <title>Doom! It's Doom I Say!</title> </head> <body> <?php // Määritä salasanasi alle if($adminpassu == "sinunsalasana") { // Tulostaa formin, jolla uutiset voi kirjoittaa print "<h3>Uutisen lisäys</h3><p>"; print "<form action=\"uutiset.php\" method=\"post\">"; print "Kirjoitaja:<br>"; print "<input type=\"text\" name=\"kirjoittaja\" style=\"border: 1px solid black\"><br>"; print "Uutisen otsikko:<br>"; print "<input type=\"text\" name=\"otsikko\" style=\"border: 1px solid black\"><br>"; print "Uutinen:<br>"; print "<textarea name=\"uutinen\" cols=\"60\" rows=\"10\" style=\"border: 1px solid black\">"; print "</textarea><br>"; print "<input type=\"submit\" value=\"lähetä\" style=\"border: 1px solid black\">"; print "</form>"; } else { echo "Väärä salasana!!!"; } ?> </body> </html>
adminlogin.php
<html> <head> <title>Doom! It's Doom I Say!</title> </head> <body> <?php // Laita urlin paikalle oman etusivusi osoite $etusivu = "http://---/uutisjarjestelma"; // Määritä salasanasi alle if($tyhjayspassu == "sinunsalasana") { $fp = fopen("uutiset.txt", "w"); fputs($fp, ""); fclose($fp); header ("Location: $etusivu"); } ?> <h3>Uutisen lisäys</h3><br> <form action="adminarea.php"> Salasana:<br> <input type="password" name="adminpassu" style="border:1px solid black;"><br> <input type="submit" value="uutisen lisäys =>" style="border: 1px solid black;"> </form> <hr noshade color="black"> <h3>Uutisten tyhjäys</h3><br> <form action="adminlogin.php" method="post"> Salasana:<br> <input type="password" name="tyhjayspassu" style="border:1px solid black;"><br> <input type="submit" value="tyhjennä uutiset" style="border:1px solid black;"> </form> </body> </html>
Oikein mainio... ainut mikä tästä puuttu on uutisten muokkaus... se taitaa tosin olla ikuinen ongelma...
Joo'o, ihan ok.
lainaus:
PHP:n vanhoissa versioissa lomakkeiden kautta tai muutoin välitetyt muuttujat olivat käytössä skriptissä suoraan saman nimisinä muuttujina. Lomakkeeseen kirjoitettu hakusana olisi siis löytynyt muuttujasta $hakusana. Tämän huomattiin kuitenkin olevan joissain tapauksissa turvallisuusriski. Siksi uudemmissa PHP:n versioissa register_globals-asetus on usein poissa päältä, ja muun muassa getin ja postin kautta tulleet tiedot löytyvät omista taulukoistaan. Taulukoiden nimet ovat $_GET ja $_POST.
Tämä siis Ohjelmointiputkan php oppaasta numero neljä.
Md5:sta käyttämällä passu ei ainakaan paistaisi suoraan silmään koodia katsoessa. Sitten tuollon noita turhia muuttujia jokusen esim. $id=0, koska käytät sitä vain kerran eikä se siitä mihinkään muutu. Sama myös $etusivu ja $tieto -muuttujissa. Tyylittelyt on parempi hoitaa uutisia tulostaessa ja css:n käyttö voisi olla suotavaa. Käyhän tuollainenki lähestysmistapa uutisten lisäykseen, mutta mielestäni ne on helpompi liittää appendilla aina perään ja sitten käyttää array_reverseä. Sisentelytki o vähä oudohkoja?
Totta puhut!
Md5:ä en käyttänyt, jottakee tuosta tulisi hitusen yksinkertaisempi.. Senhän saa kuitenkin itse lisättyä siihen, jos haluaa ja kuten itse omaani tein. :-)
Ja totta, sisennän oudosti, tiedän. Poistin myös tuon turhan $id-muuttujan. $etusivu-muuttuja on tuossa alussa siksi, että kotisivun osoitteen saa muokattua oikeaksi ilman sen kummempia koodin penkomisia. Siispä myös sellainen, joka ei koodista muuten mitään tajua, osaa muokata koodin oikean laiseksi. ;-)
Ei se muokkaus mikään ikuinen ongelma ole. Kätevää tehdä homma vaikka niin, että kirjoittaa uutiset tiedostoon seuraavassa muodossa:
id#uutinen#aika#kirjoittaja
id#uutinen#aika#kirjoittaja
id#uutinen#aika#kirjoittaja
Eroittimena tietty joku hieman monimutkaisempi ku toi pelkkä risuaita. Teksti tiedostoon raakana, eli ei mitään tageja sekaan. Muotoilun voi kukin tehdä tulostusvaiheessa ihan niinku haluaa (kuten tsuriga tuossa jo mainitsi). Ja samaan tapaan aika timestamppina, ja tulostusvaiheessa senkin voi muotoilla ihanku itse haluaa. Sit admin-paneelissa on helppo hakea textareaan uutinen ja muokata sitä ku jokaisella uutisella on oma uniikki id. Ei se sen kummempaa ole :)
Joo noi sisennykset kannattaa kyl pistää heti alusta asti kuntoon.
Tässä esimerkki tyypillisistä sisennöksistä:
if($seppo){ //jotain }elseif($keijo){ //jotain }else{ //jotain if($joku){ //jotain ... } //jotain }
Ja tuonne väliin voi tunkea vaikka kuinka monta rivinvaihtoa, jos tulee ahtaan koodin kammo.
Juu, tätä voisi kyllä hieman kehitellä vielä. :-)
Ite käytän id:nä rivinumeroa.
Mullapa on valmiina tuommonen uutisskripti, muokkauksella ja kaikilla. Se on käytössä ruin baradin sivuilla.
kiitos tuohan oli hyvä idea käyttää id:nä rivinumeroa.
Ei toimi tämäkään skripti. Määritin salasanat kahdessa filussa, mutten pääse sisään niillä.
Kyllä toimii, et vaan osaa...
Tämä on kyllä vähän huono, enkä ole jaksanut enää väsätä vähään aikaan. :|
No jaa, ihan OK, muttei tee validia HTML:ää, ellei itte modaa :(
Muuten millä sivulla uutisia pitäisi katsella? uutiset.php vai txt?
lainaus:
Muuten millä sivulla uutisia pitäisi katsella? uutiset.php vai txt?
Tota mäkin aluks ihmettelin. TXT.
Tuo jäi hieman keskeneräiseksi projektiksi, jota en sitten koskaan jaksanut kunnolla finishata. Hyvä nyt kuitenkin, jos joku siitä saa jotain irti. :-)
argh... nyt tuli taas yks ongelma... ainut mikä osaa lukee txt:hen kirjoitettua koodikieltä on explorer... kun koitin mozilla fire fox:silla niin näkyi pelkkää kooodia :(
hmmm. Kun yritän kirjautua adminpaneeliin, niin ilmoittaaa, että "väärä salasana" vaikka litan aivan oikean
Aihe on jo aika vanha, joten et voi enää vastata siihen.