Yksinkertainen PHP-skripti joka tallentaa tiedostojen kopiointitilastot tiedostoon josta ne voidaan lukea ja näyttää myöhemmin sivulla
kopioi.php
<?php $id = $_GET['file']; if (!file_exists("kopioinnit.dat")) { $ff = fopen("kopioinnit.dat", "w"); fclose($ff); chmod("kopioinnit.dat", 0777); } $fcon = file("kopioinnit.dat"); $found = false; for ($i = 0; $i < count($fcon); $i++) { $tmp = explode(":", trim($fcon[$i])); if (trim($tmp[0]) == $id) // tiedostolla on tilastotietoja { $cnt = trim($tmp[1]); $cnt++; $tmp[1] = $cnt; // lisätään yksi kopiointi $fcon[$i] = $tmp[0] . ":" . $tmp[1]; $found = true; break; } } if (!$found) { $ff = fopen("kopioinnit.dat", "w"); for ($i = 0; $i < count($fcon); $i++) { fwrite($ff, trim($fcon[$i]) . chr(13) . chr(10)); } fwrite($ff, trim($id) . ":" . "1" . chr(13) . chr(10)); fclose($ff); chmod("kopioinnit.dat", 0777); } else { $ff = fopen("kopioinnit.dat", "w"); for ($i = 0; $i < count($fcon); $i++) { fwrite($ff, trim($fcon[$i]) . chr(13) . chr(10)); } fclose($ff); chmod("kopioinnit.dat", 0777); } unset($fcon); echo '<HTML>\n'; echo '<HEAD>\n'; echo '<META HTTP-EQUIV="Refresh" content="0; URL=' . $id . '">\n'; echo '<TITLE>Aloitetaan kopiointi...</title>\n'; echo '</head>\n'; echo '<BODY>\n'; echo 'Jos kopiointi ei käynnisty automaattisesti, kopioi tiedosto <a href="' . $id . '">' . $id . '</a><br><br>\n'; echo '<a href="index.php">Takaisin etusivulle</a>\n'; echo '</body>\n'; echo '</html>\n'; ?>
Kopiointitilaston lukufunktio
<?php function LueKopioinnit($id) { if (!file_exists("kopioinnit.dat")) { echo "0"; return; } else { $fcon = file("kopioinnit.dat"); for ($i = 0; $i < count($fcon); $i++) { $tmp = explode(":", trim($fcon[$i])); if (trim($tmp[0]) == $id) // tiedostolla on tilastotietoja { echo $tmp[1]; return; } } echo "0"; // ei löytynyt return; } } ?>
Käyttöesimerkit
<!-- Kopiointitilastoja voidaan lukea esimerkiksi näin: --> Tämä tiedosto on kopioitu <?php LueKopioinnit("tiedosto.zip"); ?> kertaa <!-- Jotta tilastot päivittyisivät, tiedostoihin johtavat linkit tehdään alla olevan esimerkin mukaisesti: --> Tästä voit kopioida <a href="kopioi.php?file=tiedosto.zip">tiedosto.zip</a> tiedoston
kopioinnit.dat
Sisältää kopiointilastot jokaiselle tiedostolle tässä muodossa:
tiedosto1.zip:1 tiedosto2.zip:4
Siis tiedostox.zip on kopioidun tiedoston nimi ja 1 kopiointimäärä. Tiedostojen nimiä ei tarvitse lisätä tähän tiedostoon itse vaan skripti lisää tiedostonimen ja kopiointimäärän automaattisesti – edes tätä tiedostoa ei tarvitse luoda valmiiksi, koska sekin luodaan tarvittaessa automaattisesti.
Toimiva ja käyttökelpoinen skripti
Selkeää koodia, asialliset selostukset ja käytännöllinen skripti.
Onkohan tuossa rivityksessä jotain vikaa kun tuo "tilastotietoja" tulee uudelle riville näin pistäen skriptin toimimattomaksi?
Näyttäisi siltä, että rivit on katkaistu 70 merkin kohdalta jolloin mm. nuo kommentissa olevat rivit jakautuvat kahdelle riville - samoin kuin muutkin yli 70 merkkiä olevat rivit. Kun lähetin vinkin, niin siinä nimenomaan oli pitkiä rivejä.
No, ne jotka käyttävät tätä vinkkiä: korjatkaa väärin jakautuvat rivit niin, että ne ovat samalla rivillä!
Olenkin tuollaista kaipaillut. :)
"Yksinkertainen PHP-skripti joka ..." joo'o.. yksinkertainen...
***Kopiointitilaston lukufunktio
mihin tiedostoon toi laitetaan???? ei näytä wörrkkivän
Warning: chmod failed: Operation not permitted in /mbnet/w/winuus/kopy/kopioi.php on line 52
\n\n\n\n\n\nJos kopiointi ei käynnisty automaattisesti, kopioi tiedosto
Kopiointitilastojen lukufunktio pistetään sille sivulle jossa niitä tilastoja halutaan näyttää. Esim. omalla kotisivullani (http://trinit.cjb.net) olen sijoittanut sen index.php sivun alkuun koska etusivulla näytetään kopiointitilastoja. Katso mallia tekstitiedostosta http://www.saunalahti.fi/~trinit/index.txt . Siinä on siis index.php:n lähdekoodi.
chmod 777, hahahaha! eikä taida edes lukituksia hoitaa kunnolla? NAPS, ja viritys RIKKI kun tulee läjä osumia!!
anon, tämän skriptin tarkoitus ei ollutkaan olla täydellinen lukituksia myöten vaan _yksinkertainen_ koodivinkki. Sitä saa ja pitää parannella ja muokata omiin tarkoituksiin sopivaksi...
CHMOD-777:ssa ei ole yhtään mitään vikaa, niin kauan kuin tiedostoissa ei ole mitään tärkeää tietoa. Lukitukset voi lisätä itse, jos niitä pitää tärkeinä, eihän ole tarkoitus, että skriptit saadaan suoraan valmiina nenän eteen ;)
Mitä järkeä on väärin toimivien esimerkkein levittämisessä, eikös vinkkien tarkoituksena olisi opettaa kuinka asiat tehdään oikein eikä kuinka asiat tehdään väärin? Sen tarkemmin tuota vinkkiä tarkastelematta lukitukset ovat kuitenkin hyvin tärkeitä esim. tuollaisissa webbilaskureissa ym.
Lisäksi todellisuudessa kaikki tiedostot ovat tärkeitä, sillä muutenhan ne voi vaikka tuhota milloin vain? Ei liene mukavaa jos joku toinen samalla koneella majaileva käy kirjoittamassa "echo owned > /path/kopioinnit.dat".
Korjatkaa seuraava rivi jos käytätte tätä vinkkiä:
chmod("ZIP/kopioinnit.dat", 0777);
rivi muotoon:
chmod("kopioinnit.dat", 0777);
Kyseinen rivi löytyy kopioi.php tiedostosta viimeisen else-lausekkeen sisältä
Em. muutokset kopioi.php tiedostoon on nyt tehty itse koodiin joten koodin pitäisi olla heti käyttövalmis
Miks mulla tulee :: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /mbnet/m/munkansio/muntiedosto.php on line 57 :: Kansioiden nimet otettu pois Feikillä!!
Ja tuo rivi 57 on:
echo '<HTML>\n';
Parse error viittaisi johonkin puuttuvaan ] -merkkiin tai puolipisteeseen ; Ainakin itse sain yo. vinkin toimimaan samantien joten en keksi muuta neuvoa kuin että kopioit vinkin koodin uudestaan ja kokeilet taas. Jollei toimi niin katsotaan sitten taas uudestaan.
Warning: chmod(): Operation not permitted in /home/.../public_html/.../.../kopioi.php on line 52
\n\n\n\n\n\nJos kopiointi ei käynnisty automaattisesti, kopioi tiedosto xxxxxxxx.MPG
\nBACK\n\n\n
????????????????????????????????????????????????
Aihe on jo aika vanha, joten et voi enää vastata siihen.