Ohjelmalla voi lisätä (muokkaalistaa.php)UPLOADin avulla html-sivuja, ja ne näkyvät htmllista.php:n avulla. Vaihdasalasana.php:n avulla asetetaan pakollinen salasana sivustoille. Alla esitetyt php:t laitetaan omaan hakemistoon, johon annetaan php:lle luku-ja kirjoitusoikeudet.
Ensimmäiseksi sivulta tulee ajaa vaihdasalasana.php, joka luo tarpeellisen salasana.php:n. Kyseistä salasanaa käytetään muokkaalistaa.php:ssa, joten on hyvä muistaa salasanasi. Yleisölle tiedostoista tulee näyttää vain htmllista.php, joka tulostaa sivut näyttäen <TITLE></title>tagien sillä olevat tiedot linkkien niminä.
Esim jos olet uploadannut seuraavan sisältöisen tiedoston:
esimerkki.htm
<html><head> <title>Esimerkki tehty 17.3.2004</title> </head><body> Tämä on esimerkki .HTML:n muodosta, joka tulee listaan </body></html>
Tämä näkyy htmllista.php-tiedostossa:
<A HREF="2004/esimerkki.htm">Esimerkki tehty 17.3.2004</a>
Otsikkoon tulee laittaa myös päivämäärä, em. muodossa eli p.k.yyyy, jotta uusin html-sivu tulisi listan alkuun, muussa tapauksessa se listautuu tiedoston muokkauspäivämäärien mukaisessa järjestyksessä.
Vuosi valitaan:"muokkaalistaa.php?vuosi=2004"-http-pyynnöllä ja oletuksena on nykyinen vuosi. Ohjelma tekee 2004.php-tiedoston ja 2004-hakemiston. Jos käytät SAFE-moodia on sinun itse perustettava ko. hakemisto ja annettava PHP:lle luku-ja kirjoitusoikeudet.
Listan hallinta tapahtuu muokkaalistaa.php:n avulla. Salasanaksi tulee sama salasana, jonka oletkin jo aiemmin tehnyt vaihdasalasana.php:llä.
Valitsemalla suoritettavaksi toiminnoksi lisää, voidaan ko. vuoden kohdalla lisätä UPLOADin avulla lisätä tiedosto.
Valitsemalla suoritettavaksi toiminnoksi päivitä, päivitetään htmllista ko. vuodesta.
Valitsemalla suoritettavaksi toiminnoksi poista, voidaan listalta poistaa kyseinen rivi ko. vuodesta. Samalla serveriltä poistetaan ko. html-tiedosto.
vaihdasalasana.php
<HTML><HEAD><TITLE>Vaihda sivuston salasana</title></head><BODY> <?php if (is_file("salasana.php")) include "salasana.php"; if (!isset($_POST["upass"])) $virhe="Anna uusi salasana<br>"; else if (isset($salasana)) if (md5($_POST["vpass"])!=$salasana) $virhe="VANHA salasanasi on virheellinen <br>"; else if ($_POST["upass"]!=$_POST["uupass"]) $virhe=" Kirjoitit uuden salasanan toisella kerralla eri tavalla kuin ensimmäisellä kerralla<br> Kirjoita molemmilla kerroilla salasanat samalla tavalla"; if (isset($virhe)) { print "$virhe"; ?> <form method="POST" action="<?php print $PHP_SELF; ?>"> Anna vanha salasana<INPUT type="password" name="vpass"><br> Anna uusi salasana<INPUT type="password" name="upass"><br> Uusi salasana uudestaan<INPUT type="password" name="uupass"><br> <input type="submit" value="Lähetä" name="subbi"> </form> <?php } else { $f=fopen("salasana.php","w"); fwrite($f,'<?php $salasana="'.md5($_POST['upass']).'"; ?>'); fclose($f); Print "Salasanasi on nyt vaihdettu!!"; } ?></body></html>
muokkaalistaa.php
<HTML> <HEAD> <TITLE>Muokkaa listaa</title> </head> <BODY> <?php include "salasana.php"; if (isset($_GET['vuosi'])) $ali=$_GET['vuosi']; else $ali=date('Y'); if (strlen($ali)>4) $ali=date('Y'); if ($ali+0<1000) $ali=date('Y'); $v=0+date('Y'); while (is_file($v.'.php')) { if ($v!=0+$ali) print "<A HREF=\"$PHP_SELF?vuosi=$v\">Lista v.$v</a><br>\n"; $v--; } print "<H1>Vuosi $ali</h1>"; function otsake($teksti) { $alku=stristr($teksti,"<title>"); $alku=substr($alku,7); return substr($alku,0,strpos($alku,"<")); } function etsiaika($teksti,$vara) { $s=otsake($teksti); $n=strpos($s,"."); if ($n>0) { if ($n>1) $s=substr($s,$n-2); $p=substr($s,0,strpos($s,".")); if (0+$p==0) $p=substr($p,1); $p=0+$p; $s=substr($s,strpos($s,".")+1); if (strpos($s,".")>0) { $k=0+substr($s,0,strpos($s,".")); $v=0+substr($s,strpos($s,".")+1); } } if (($v==0)||($k==0)||($p==0)) $r=$vara; else { if (strlen("$k")<2) $k="0$k"; if (strlen("$p")<2) $p="0$p"; if (strlen("$v")<4) $v=substr("2000",0,4-strlen("$v"))."$v"; $r="$v$k$p"; } if (!isset($r)) $r=$vara; if (strlen($r)<8) $r=$vara; return $r; } $s=""; if (is_file("${ali}.php")) { $f=fopen("${ali}.php","r"); $s=fread($f,50000); fclose($f); } $a=split('£',$s); if (($_POST==NULL)||($_POST=="")) $_POST=$HTTP_POST_VARS; if (md5($_POST["sala"])==$salasana) { print "tuli salattuun<br>"; if (!is_dir($ali)) { mkdir($ali,0770); print "Luotiin kansio $ali<br>"; // HUOM mkdir on turvallinen, koska $ali:n muoto on 4 merkkiä pitkä numeroarvo // $ali:n muoto on varmistettu tiedoston alussa. } $teksti=$_POST["teksti"]; $p=$_POST["aika"]; if (strlen($p)==10) $p=substr($p,6,4).substr($p,3,2).substr($p,0,2); $nro=0+$_POST["rivi"]; if ($nro>count($a)) $nro=count($a); if ($nro<1) $nro=1; if($_POST["korvaa"]=='p') {; print "<br>poista<br>"; $s=$a[$nro]; if (($s!='')&&($s!=NULL)) { $s=substr($s,8); $s=substr($s,0,strpos($s,'*')); if (is_file("${ali}/$s")) { unlink("${ali}/$s"); print "Tiedosto=\"$s\"-poistettiin kansiosta:\"$ali\"<br>"; } } if(count($a)>0) for ($i=0+$nro;$i<count($a);$i++) $a[$i]=$a[$i+1]; } else if (($_POST["korvaa"]=='l')||(($_POST["korvaa"]=='k')&&(($a[0+$nro]==NULL)||($a[0+$nro]=="")))) { print "<br>lisää<br>"; move_uploaded_file($_FILES['filetta']['tmp_name'], "${ali}/".$_FILES['filetta']['name']); } $j=1; for($i=1;$i<count($a);$i++) { $a[$j]=$a[$i]; $n=substr($a[$i],8,strpos($a[$i],"*")-8); if (is_file("./${ali}/$n")) $j++; } while ($j<count($a)) { $a[$j]=""; $j++; } $a[0]='apina'; // ihan sama mitä on kunhan on suurempi kuin '9'; $dir=opendir("./${ali}"); if($dir) { while(($file=readdir($dir))!=false) if (strpos("$file",".htm")>0) { $i=1; while(($a[$i]!=NULL)&&($a[$i]!="")&&(strpos($a[$i],"$file*")==0)) $i++; if(($a[$i]==NULL)||($a[$i]=="")) { print"<br>uusi=$file<br>"; $f=fopen("./${ali}/$file","r"); $s=fread($f,10000); fclose($f); $otsikko=otsake($s); if ($otsikko=='') { $otsikko=$file; $lp=stristr($otsikko,'.htm'); if (strlen($lp)>0) $otsikko=substr($otsikko,0,strpos($otsikko,$lp)); } $a[$i]=etsiaika($s,date("Ymd",filemtime("./$ali/$file")))."$file*$otsikko"; } } closedir($dir); } rsort($a,SORT_STRING); $f=fopen("${ali}.php","w"); fwrite($f,'<?php>'); for ($i=1;($a[$i]!="")&&($a[$i]!=NULL);$i++) { fwrite($f,"£".$a[$i]); } fclose($f); } $loppu="</font><br><CENTER><FONT SIZE='-1' FACE='Arial'><B>***</b></center></font>"; $alku="<FONT SIZE='-1' FACE='Arial'>"; for($i=1;$i<count($a);$i++) if (($a[$i]!="")&&($a[$i]!=NULL)) print "$i.$alku".$a[$i].$loppu; ?> <HR> <FORM NAME="hallitse" ACTION="<?php print $PHP_SELF; if (0+$ali>0) print "?vuosi=$ali"; ?>" METHOD="POST" ENCTYPE="multipart/form-data"> <P><FONT FACE="Arial">Tämän sivulla ylläpidetään pääsivun uutiset palstaa.</font></p> <P><FONT FACE="Arial">Kirjoita tähän salasana:<INPUT NAME="sala" SIZE="16" TYPE="password"><BR> Uutisen numero, johon toimenpiteet kohdistetaan:<INPUT NAME="rivi" SIZE="5" VALUE="1" TYPE="text"><BR> Valitse suoritettava toiminto<SELECT NAME="korvaa"> <OPTION VALUE="l" SELECTED>lisää <OPTION VALUE="p">Poista <OPTION VALUE="r">Päivitä </select></font></p> <P><FONT FACE="Arial"> Kirjoita uutisen sisältö allaolevaan ikkunaan:<BR> <input NAME="filetta" type="file"> <BR> </font></p> <P><FONT FACE="Arial">Kun kaikki on valmiina, paina lähetä-painiketta</font></p> <FONT FACE="Arial"><INPUT TYPE="submit" NAME="subbi" VALUE="lähetä"></font> </form> <BR> <A HREF="htmllista.php<?php if ($ali+0>1000) print "?vuosi=$ali"; ?>">Tässä tulos</a> </body> </html>
htmllista.php
<HTML> <HEAD> <TITLE>Lista</title> </head> <BODY> <?php if (isset($_GET['vuosi'])) $t=$_GET['vuosi']; else $t=date('Y'); if (strlen($t)!=4) $t=date('Y'); if (0+$t<=1000) $t=date('Y'); $v=0+date('Y'); // Alla olevalla while-silmukka luo linkit toisten vuosien uutisille while (is_file($v.'.php')) { if ($v!=0+$t) print "<A HREF=\"$PHP_SELF?vuosi=$v\">Vuosi $v</a><br>\n"; $v--; } print "<hr><H1>Vuosi $t</h1>"; $f=fopen("$t.php","r"); $s=fread($f,50000); $a=split('£',$s); fclose($f); // Alla olevalla for-silmukka luo linkit tämän vuoden uutisille. for ($i=1;$i<count($a);$i++) { $p=substr($a[$i],8); if (($p!=NULL)&&($p!="")) { $f=substr($p,0,strpos($p,"*")); $k=substr($p,strpos($p,"*")+1); print"<A HREF=\"$t/$f\">$k</a><br>\n"; } } ?> </body></html>
Onpas pitkä koodivinkki :D
Ei voi muuta sanoa kuin että: erittäin järkeviä kommentteja taas makeuulta.
Etkö sää T.M. osaa muuta kun valittaa?
Olisko esimerkkisivua? Vaikka selitykset luinkin ja koodiakin vähän vilkasin, niin en silti nää mitä hyötyä tästä on. Esimerkkisivu voisi hieman valaista asiaa.
Uploadin takia pieni tieturha riski, mutta laitetaan kuitenkin linkki, jossa käytän ko. tiedostoja:
http://koti.mbnet.fi/sojanen/inssit/viini/
Tässä sivussa ei voi kokeilla toimintoja, mutta näiden toimintojen avulla ylläpidän ko. sivuston osaa.
Kyseinen linkki vastaa htmllista.php:tä, tosin ulkoasua on hivenen kaunisteltu. Tavaraa vuosikansioihin voi siirtää myös ftp:llä, ja sen voi päivittää sitten muokkaalistaa.php:n päivitä toiminnolla.
"Kirjoitit uuden salasanan toisella kerralla eri tavalla kuin ensimmäisellä kerralla" on mielestäni melko pitkästi selitetty. Ehkäpä mieluummin "Salasanat eivät täsmää" ?
lainaus:
Etkö sää T.M. osaa muuta kun valittaa?
Niimpä :D
lainaus:
lainaus:
Etkö sää T.M. osaa muuta kun valittaa?
Niimpä :D
Olen muuten samaa mieltä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.