Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Uutisjärjestelmä

Sivun loppuun

kayttaja-1634 [16.03.2004 09:31:58]

#

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>

TETRIS [16.03.2004 17:49:35]

#

Oikein mainio... ainut mikä tästä puuttu on uutisten muokkaus... se taitaa tosin olla ikuinen ongelma...

The Ohjelmoija [16.03.2004 18:16:17]

#

Joo'o, ihan ok.

tsuriga [16.03.2004 19:26:47]

#

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?

kayttaja-1634 [16.03.2004 20:22:08]

#

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. ;-)

Olga [16.03.2004 22:53:01]

#

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 :)

T.M. [16.03.2004 23:06:51]

#

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.

kayttaja-1634 [17.03.2004 07:31:55]

#

Juu, tätä voisi kyllä hieman kehitellä vielä. :-)

tsuriga [17.03.2004 14:15:33]

#

Ite käytän id:nä rivinumeroa.

SLander [17.03.2004 15:24:24]

#

Mullapa on valmiina tuommonen uutisskripti, muokkauksella ja kaikilla. Se on käytössä ruin baradin sivuilla.

lahtis [25.03.2004 22:31:53]

#

kiitos tuohan oli hyvä idea käyttää id:nä rivinumeroa.

Submin [10.06.2004 17:02:10]

#

Ei toimi tämäkään skripti. Määritin salasanat kahdessa filussa, mutten pääse sisään niillä.

kayttaja-1634 [11.06.2004 14:49:37]

#

Kyllä toimii, et vaan osaa...
Tämä on kyllä vähän huono, enkä ole jaksanut enää väsätä vähään aikaan. :|

Juice [21.07.2004 23:00:29]

#

No jaa, ihan OK, muttei tee validia HTML:ää, ellei itte modaa :(

darkki [05.09.2004 11:54:30]

#

Muuten millä sivulla uutisia pitäisi katsella? uutiset.php vai txt?

Juice [13.09.2004 21:11:03]

#

lainaus:

Muuten millä sivulla uutisia pitäisi katsella? uutiset.php vai txt?

Tota mäkin aluks ihmettelin. TXT.

kayttaja-1634 [14.09.2004 20:41:52]

#

Tuo jäi hieman keskeneräiseksi projektiksi, jota en sitten koskaan jaksanut kunnolla finishata. Hyvä nyt kuitenkin, jos joku siitä saa jotain irti. :-)

darkki [23.09.2004 14:49:28]

#

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 :(

Heiskanen [23.06.2007 20:19:36]

#

hmmm. Kun yritän kirjautua adminpaneeliin, niin ilmoittaaa, että "väärä salasana" vaikka litan aivan oikean


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta