Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Uutisskripti

TaikaPuff [13.07.2007 00:46:30]

#

Olen yrittänyt opiskella PHP-kieltä nyt pari päivää, mutta oikein mitään ei ole tarttunut. HTML kieltä osaan hyvin.

Tarvitsisin uutis-scriptin kotisivuilleni, mutten osaa tehdä sellaista enkä saa ladattavia sellaisia toimimaan (cutenews).

Haluaisin sellaisen scriptin, joka kysyy ensin salasanaa, jonka jälkeen pääsee uutisen lisäys sivulle. Otsikko siihen ja sitten uutinen. Uutinen lähtisi etusivulle (index.php(?)), jossa näkyisi ensin päivämäärä ja sitten otsikko, jota painamalla pääsee lukemaan uutisen. Uusin uutinen näkyisi aina ylimpänä etusivulla.

Olisin kiitollinen, jos joku väsäisi mahdollisimman helpon tälläisen, ilman että pitää mitään suuria muutoksia tehdä, koska en osaa. Tai sitten joku voisi neuvoa mitä pitää esim. cutenewsille tehdä, jotta sen saa toimimaan.

PHP:ta yritän harjoitella minkä kerkiän, toivottavasti alkaisin pikkuhiljaa saamaan siitä jotain irti.

Merri [13.07.2007 05:00:30]

#

Tee erillinen kansio, jonne lisäät .htaccess ja .htpasswd -tiedostot. Ohjeita näiden tekoon löydät runsaasti Googlella (ja joku varmasti osaa avustaa täälläkin jos tarvetta on). Niillä saat ihan kelvollisen perussuojauksen omaan käyttöön ilman suurta vaivannäköä.

Sitten: tee siihen hakemistoon vaikka uutiset.txt, ja muuta chmodilla tiedoston oikeuksiksi 666 tai 777 (toisinsanoen anna kirjoitusoikeus).

<?php

if( isset($_POST['otsikko']) ) {
	// avaa tiedosto tekstimuuttujaan, pilko samantien uutiset toisistaan
	$tekstit = explode('{uutinen}', file_get_contents('uutinen.txt'));

	// hae uuden uutisen otsikko ja teksti
	$otsikko = stripslashes($_POST['otsikko']);
	$teksti = stripslashes($_POST['teksti']);

	// lisää taulukkomuuttujaan otsikko, teksti ja päiväys
	$tekstit[] = $otsikko.'||'.$teksti.'||'.time();

	// yritä tallentaa
	if( $handle = fopen('uutinen.txt', 'w') ) {
		// kirjoita tiedot yhdistäen taulukon takaisin tekstiksi
		fwrite($handle, implode('{uutinen}', $tekstit));
		// sulje avattu tiedosto
		fclose($handle);
	}

	// siirry ylempään hakemistoon
	header('Location: ../');
	exit;
}

?>

<h1>Kirjoita uutinen</h1>
<form action="" method="post">
	<fieldset><legend></legend>
		<p class="text">
			<label for="otsikko">Uutisen otsikko:</label>
			<input id="otsikko" name="otsikko" type="text" value="" />
		</p>
		<p class="text area">
			<label for="teksti">Uutisteksti:</label>
			<input id="teksti" name="teksti" type="text" value="" />
		</p>
	</fieldset>
	<p class="submit"><input type="submit" value="Lähetä" /></p>
</form>

Sitten tietysti tarvitset PHP-skriptin, joka lukee yllä olevaa tiedostoformaattia. Käyttäen yllä olevia tietoja ei pitäisi olla mahdottoman vaikeaa: yksi explode erittelee uutiset toisistaan, toinen explode kunkin uutisen kohdalla riittää erottelemaan otsikon, tekstin ja päivämäärän. Uutiset on tietty tiedostossa käänteisessä järjestyksessä, joten ensimmäistä explodella hajautettua taulukkomuuttujaa joutuu myöskin luuppimaan lopusta alkuun päin.

date-funktiolla saat muotoiltua päivämäärän kivempaan muotoon:
echo date('d.m.Y', $uutinen[2]);

Tuossa pitäisikin olla sitten kaikki tarpeellinen, joilla pitäisi päästä alkuun. Ei ole kovin monimutkainen systeemi.

Opossumi [18.07.2007 08:39:14]

#

Miten olet yrittänyt saada Cutenewsia toimimaan? Mitä komentoja olet laittanut etusivulle?

Vastaus

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

Tietoa sivustosta