Sivusto hallinta 0.1 by djmiksu

empty 20.02.03 15:39

Ok, eli tässä on yks html-sivustohallinto systeemi. Ohjeet: Tee kansio, jonka oikeudet ovat 777. Tee siihen kansioon uusi kansio, nimeltä admin (oikeudet 755 eli normaali). Pistä sinne nämä seuraavat tiedostot (oikeudet 644 eli normali). HUOM: .htpasswd-tiedoston käyttäjä tunnus ja salasanat voi tehdä osotteesta: http://www.mbnet.fi/mbinternet/ohjeet/suojaus/

 Tekstiversio  Arvo: 0 (8 ääntä)  Äänestä: +  -
// index.php
<html>
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<table align="center" width="700">

<tr>
<td valign="top">

<b>Lista tiedostoista</b><br>
<?php
$d = dir("../");
while (false !== ($entry = $d->read())) {
echo $entry."<br>\n";
}
$d->close();
?>
<br><br>
<a href="../">Koita sivuja</a>

</td>

<td valign="top">

<form method="post" action="teefilu.php">
<b>Tee uusi tiedosto</b><br>
Nimi: <input type="text" name="filunimi">
<select name="filumuoto">
<option value=".html">.html</option>
<option value=".txt">.txt</option>
<option value=".dat">.dat</option>
</select>
<br>
<input type="submit" value="Tee">
</form>

<hr>

<form method="post" action="poistafilu.php">
<b>
Poista tiedosto</b><br>
Nimi: <input type="text" name="poistettavafilu">
<input type="hidden" name="hakemisto" value="../">
<br>
<input type="submit" value="Poista">
</form>

</td>

<td valign="top">

<form method="post" action="muokkaa.php">
<b>Muokkaa</b><br>
Nimi: <input type="text" name="nimi">
<select name="nimimuoto">
<option value=".html">.html</option>
<option value=".txt">.txt</option>
<option value=".dat">.dat</option>
</select><br>
<input type="submit" value="Muokkaamaan">
</form>

<hr>

<form method="post" action="nimeafilu.php">
<b>
Nimeä uudelleen</b><br>
Nimi:
<input type="text" name="nimi">
<br>
Uusi nimi:
<input type="text" name="uusinimi">
<br>
<input type="submit" value="Vaihda">
</form>

</td>
</tr>

<tr>
<td>
</td>
<td colspan="2">

<hr>
<?php
$max_file_size = "1024";
$upload_path = "./../";
$banned_files = array(".vir");
$chmod = "0777";

if (isset($_POST['laheta'])) {

$max_size = 1024*$max_file_size;

function is_banned ($files, $name) {
    if (is_array($name)) {
    foreach ($files as $file) {}
    if (strstr($file, $name))
        return true;
    else
        return false;
    }
    else
        return false;     
}

if (is_banned($banned_files, $_FILES['file']['name'])) {
        echo "Tiedoston on bannattu!";
}         
    elseif ($_FILES["file"]["size"] == 0) {
        print ("Tiedoston koko on 0 - sitä ei voida lähettää");
}
    elseif (file_exists($upload_path.$_FILES['file']['name'])) {
        echo "Tiedosto on jo olemassa - ei voida lisätä toista samanlaista tiedostoa.";
}
    elseif ($_FILES["file"]["size"] < $max_size) {
        move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.$_FILES['file']['name']);
        $size_kt = round($_FILES["file"]["size"] / 1024, 0) . " kilotavua";
        print("Tiedosto ".$_FILES["file"]["name"]." on lisätty!<br>");
        print("Tiedoston koko on $size_kt <br>");
}
    else {
    print "Liian suuri tiedosto!";
}
    print "";
}

?>

<br>
<center>
<b>Lataa palvelimelle:</b>
<form enctype="multipart/form-data" action="<?php print $PHP_SELF?>" method="post">
<input type="file" name="file">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php print ("$max_size"); ?>">
<input type="submit" name="laheta" value="Lataa">
</form>

</center>
</td>
</table>
<center><font size="1">HUOM: Kaikki tiedostojen oikeudet ovat 777:ssa, paitsi ne, jotka olet ladannut.</font></center>

</body>
</html>

//kirjota.php
<html>
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<?php
$tiedosto = fopen("../$filunimi", "w") or die("Tiedostovirhe");
fwrite($tiedosto, $uusikoodi);
fclose($tiedosto);
print "Kirjoitetaan...";
print "<script>document.location=\"index.php\"</script>";
?>

</body>
</html>

//muokkaa.php
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<?php
$tiedosto = fopen("../$nimi$nimimuoto", "r+") or die("<br><b>Tiedestoa ei ole<b>");
$tiedot = fread($tiedosto, filesize("../$nimi$nimimuoto"));
fclose($tiedosto);
print "Nykyään koodi: <br>";
show_source("../$nimi$nimimuoto");
print "<br><br>";
print "<form method=\"post\" action=\"kirjota.php\">";
print "Uusi koodi:<br>";
print "<input type=\"hidden\" value=\"$nimi$nimimuoto\" name=\"filunimi\">";
print "<textarea rows=\"15\" cols=\"60\" name=\"uusikoodi\"></textarea> ";
print "<input type=\"submit\" value=\"Päivitä\">";
print "</form><br><br>";
print "<a href=\"index.php\">Takaisin etusivulle</a>";
?>

</body>
</html>

// nimeafilu.php
<html>
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<?php
  rename("../$nimi", "../$uusinimi");
print "Nimiä vaihdetaan...";
?>
<script>document.location="index.php"</script>

</body>
</html>

// poistafilu.php
<html>
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<?php
function poista_tiedosto($poistettavafilu, $hakemisto)
{

$sijainti = $hakemisto.$tiedosto;             
                             
$ok = (@file_exists($hakemisto.".") and @is_writeable($hakemisto."."));
if ($ok)
    {
    if (@is_file($sijainti))             
        {
        unlink($sijainti);             
        echo $poistettavafilu." poistettu. <BR>";     
        }
    else
        {   
        echo "Tiedostoa ".$poistettavafilu." ei ole olemassa! <BR>";     
        }
    }
else
    echo "Hakemiston oikeudet on asetettu väärin tai et ole sen omistaja! <BR>";


} // function poista_tiedosto($poistettavafilu)} // function poista_tiedosto($poistettavafilu,$hakemisto)
?>
<script>document.location="index.php"</script>

</body>
</html>

// teefilu.php
<html>
<head>
<title>Sivujen hallinta</title>
</head>
<body bgcolor="#CCCCC">

<?php
$tiedosto="../$filunimi$filumuoto";
if (!file_exists($tiedosto))
{
touch("$tiedosto");

chmod("$tiedosto",0777);
}
print "Tiedostoa tehdään...";
?>
<script>document.location="index.php"</script>

</body>
</html>

// .htaccess
/* eli salasanatoiminto onnistuu koti.mbnet.fi tyypeillä, paitsi jos jaksaa pähkäillä koodilla ja hoksata miten toi  AuthUserFile osote on... Ja muista, että /mbnet/T:stä toi t on aina tunnuksen eka kirjain... */

AuthUserFile /mbnet/T/TUNNUS/JOKU/admin/.htpasswd
AuthGroupFile None
AuthName "Kirjaudu hallintaan"
AuthType Basic

require valid-user

// .htpasswd
/* nyt salasana on "kuha" ja käyttäjätunnus "murea" */

murea:xbCBH.C3lx2AM

empty 15:40 20.2.03 
Joo, ja tiedoston poistaminen ei onnistunut multa, mutta kertokaa jos te onnistuitte poistaa jonkun tiedoston. Hiottu versio on varmaan ehkä sit tulossa myös...
empty 17:00 20.2.03 
En ymmärrä miksi muutit $tiedosto muuttujan $positettavafilu:ksi, mutta ei väliä..

Muunneltu poista_tiedosto aliohjelma ei toimi ellet muuta myös tätä kohtaa:
$sijainti = $hakemisto.$tiedosto;
tälläiseksi:
$sijainti = $hakemisto.$poistettavafilu;
empty 18:04 20.2.03 
Ei taida toimii siltikään...
empty 20:09 20.2.03 
No kokeileppas tätä scriptiä suoraan. Eli tee tästä vaikka testi.php file..

<?php
function poista_tiedosto($tiedosto, $hakemisto)
{
// Kuvaus: Poistaa halutun tiedoston, halutusta hakemistosta.
// Esim: poista_tiedosto("tuhoa.txt","/html/testi/");
// Huom! Hakemisto, josta tiedosto poistetaan pitää
// kirjoitus ja suoritus oikeudet olla päällä. (chmod 777).

// Hakemisto(777!) + tiedosto
// Huom! Hakemiston oikeudet pitää chmodattu 777 (766 ei käy)
$sijainti = $hakemisto.$tiedosto;

// Tarkistetaan onko hakemistolla kirjoitus ja suoritus oikeudet
$ok = (@file_exists($hakemisto.".") and @is_writeable($hakemisto."."));
if ($ok)
{
// Tarkastetaan onko tuhottava tiedosto olemassa.
if (@is_file($sijainti))
{
// Tuhoaa tiedoston, jos on tiedosto on olemassa
unlink($sijainti);
echo $tiedosto." tuhottu. <BR>";
}
else
{
// Tiedosto ei ole olemassa -> Virheilmoitus
echo "Tiedostoa ".$tiedosto." ei ole olemassa! <BR>";
}
}
else
echo "Hakemiston oikeudet on asetettu väärin tai et ole sen omistaja! <BR>";


} // function poista_tiedosto($tiedosto)}

// Aliohjelma, joka poistaa testi.txt nimisen
// tiedoston, hakemistosta /mbnet/m/miksunet/testi
poista_tiedosto("testi.txt","/mbnet/m/miksunet/testi/");
?>

Kopioi tämä scripti (testi.php) päähakemistoon. Seuraavaksi luo sinne miksunet kansioosi testi niminen kansio ja anna sille oikat 777. Sitten kopsi sinne testi-hakemistoon vielä, testi.txt tiedosto.

Jos tämä toimi minullakin, niin se toimii myös sinulla.
teemuri 21:38 20.2.03 
Eikös ois pätevää, että "muokkaa" toiminnossa "nykyinen koodi" ois myös tossa textboxissa? Pitää vetää aina copypaste siihen textboxiin jos esim. haluaa hallita sisältöä scriptillä.
pikkumyy 22:18 20.2.03 
Johan on koodipläjäys :O

Ihan kätsyltä toi näyttää noin pikkuvilasun jälkeen. Kommentteja sais olla soodissa kyl enemmän
Changty 21:15 3.3.03 
Idea on todella hyvä, mutta toteutus ontuu vielä vähän. Esim. linkkejä ei pysty luomaan sillä " -merkin eteen tulee aina \ jota html tiedosto ei ymmärrä. Vaikka tiedostomuodon muuttaisi .php:n ei linkki toimi kuitenkaan.
Changty 21:18 3.3.03 
Korjaus edelliseen, lisää aina " -merki neteen / -merkin =)
empty 22:00 4.3.03 
Aika hyvä huomio... En jaksa enää sählätä ton koodin kanssa enää, mut tossa on nyt mun ensimmäinen pitkä koodipätkä...
loupe 01:55 16.3.03 
"-merkkien eteen tulevat \-merkit saa pois laittamalla php.inistä magic quotet pois päältä. Merkit voi tietysti korvata: $str = str_replace("\\\"", "&quot;", $str);
N00b2k3 13:47 5.5.03 
Tää ois loistava ku ei vaadi MySQl tjsp. ja toimii jopa koti.mbnetissä =) tämmöst kaipasin, mut harmi noi pari bugia, neku ois kunnos ni ..
Mut erittäin hyvä ja tarpeellinen
empty 14:56 24.5.03 
Otin php:muodon pois, koska siinä oli se " ongelma... Eli pystyy tehä vain html muotosii nettisivuja. Tiedoston poistaminen ei taida vieläkään onnistua, joten jos joku kekkasee toimivan, niin laitan sen tohon koodiin...
empty 23:49 8.6.03 
No offense, mutta kyllä tämä on aika suolesta.
a-h 16:00 17.12.03 
nii on vaa pakko sanoa kun tossa kaks ylemäs kommentis sanotaan :
"Tää ois loistava ku ei vaadi MySQl tjsp. ja toimii jopa koti.mbnetissä =) tämmöst kaipasin, mut harmi noi pari bugia, neku ois kunnos ni ..
Mut erittäin hyvä ja tarpeellinen"


nii sitä mää vaan että kun mbnetis on valmiiks kotisivu muokkain et joku ei oikein tiedä juttuja
Aceman87 01:32 18.11.04 
tai sit joku tarvii tollasen muihin tarkoituksiin, kuten myös minä
konst-a 17:11 25.1.05 
alkaa silleen mukavasti "anna chmod 777" :(
Tontttu 22:07 6.7.05 
Muuten hyvä, mut paiskoo /viivoja minne sattuu ja kääntelee niitä väärinpäin. ( \ ) Mites ton asian sais korjattua?

-Noob 8)