<?php
// Älä tulosta tätä funktiota ennen yhtään mitään!
// Jopa yksi tulostettu merkki, vaikkapa välilyönti
// aiheuttaa scriptin toimimattomuuden.
// Myöskään <?php -tagia ennen ei saa laittaa
// mitään HTML-koodia tai tekstiä.
ob_start();
/////////////////////////////////////////////
// Yksinkertainen linkkilista by T.M. www.HC-Codes.net
// Saa muokata vapaasti, kunhan tämä tekstilaatikko säilyy.
/////////////////////////////////////////////
function karsi_url($url){
$url = strtolower($url); // Kaikki merkit pieniksi
$url = str_replace("www.", "", $url); // Poistetaan www.
$url = str_replace("koti.", "", $url); // ...
$url = str_replace("home.", "", $url); // ...
// Poistetaan kaikki muut merkit paitsi aakkoset ja numerot:
$url = preg_replace("/[^a-z0-9]/", "", $url);
return $url;
}
// Muuttujat helpommin käsiteltävään muotoon:
$act = $_GET['act'];
$do = $_GET['do'];
$SELF = basename($_SERVER['SCRIPT_URI']); // Pelkkä tiedoston nimi
// Tiedosto taulukkoon, jossa on linkit ja muu data:
$linkit = file("linkkitiedosto.txt");
$max = count($linkit);
if($act == "addlink"){
print"<A HREF=\"$SELF\">Takaisin</A>";
// Muuttujat helpommin käsiteltävään muotoon:
$k_nimi = $_POST['k_nimi'];
$k_osoite = $_POST['k_osoite'];
$k_kuvaus = $_POST['k_kuvaus'];
// Lisätään http:// linkin alkuun, jos sitä ei löytynyt sieltä:
if(substr($k_osoite, 0, 7) != "http://") $k_osoite = "http://$k_osoite";
print"<FORM METHOD=\"POST\" ACTION=\"?act=addlink&do=add\">";
print"Sivun nimi: <INPUT TYPE=\"text\" NAME=\"k_nimi\" value=\"$k_nimi\"><br>";
print"Sivun osoite: <INPUT TYPE=\"text\" NAME=\"k_osoite\" value=\"$k_osoite\"><br>";
print"Kuvaus sivustosta: <INPUT TYPE=\"text\" NAME=\"k_kuvaus\" value=\"$k_kuvaus\"><br>";
print"<INPUT TYPE=\"submit\" value=\"Lähetä\">";
print"</FORM>";
if($do == "add"){
// Virheet sisältävä taulukko tyhjäksi:
$error = array();
// Käydään linkkitiedosto läpi:
foreach($linkit as $linkki){
$osa = explode("<>", $linkki);
// Verrataan kahta osoitetta toisiinsa karsi_url() funktion avulla:
if(karsi_url($osa[0]) == karsi_url($k_osoite)){
$error['osoite'] = "Antamasi sivusto on jo listalla, url: $osa[0]";
break;
}
}
$k_nimi = trim($k_nimi); // Poistaa välilyönnit ym tekstin alusta ja lopusta.
$k_nimi = stripslashes($k_nimi); // Muuttaa \" ym muunnokset takaisin " muotoon.
$k_nimi = htmlspecialchars($k_nimi); // Ei sallita HTML:ää.
$k_osoite = trim($k_osoite);
$k_osoite = stripslashes($k_osoite);
$k_osoite = htmlspecialchars($k_osoite);
$k_kuvaus = trim($k_kuvaus);
$k_kuvaus = stripslashes($k_kuvaus);
$k_kuvaus = htmlspecialchars($k_kuvaus);
// Tarkistetaan onko annettu tyhjiä tekstikenttiä, jos on, ilmoitetaan virheestä:
if($k_nimi == "") $error['nimi'] = "Kirjoita sivustosi nimi";
if($k_osoite == "" || $k_osoite == "http://") $error['osoite'] = "Kirjoita sivustosi osoite";
if($k_kuvaus == "") $error['k_kuvaus'] = "Kirjoita sivustosi kuvaus";
if($error){
// Jos error taulukko ei ollut tyhjä:
$ers = count($error);
print"<B>$ers</B> virhettä huomattiin:<br>";
// Käydään kaikki virheet läpi:
foreach($error as $rivi){
print"<li>$rivi<br>";
}
print"Ole hyvä ja korjaa virheet.";
}else{
// Jos virheitä ei löytynyt, eli error taulukko oli tyhjä:
$aika = time(); // tämänhetkinen UNIX aikaleima
$data = "$k_osoite<>$k_nimi<>$k_kuvaus<>$aika<>";
// Korvataan kaikki mahdolliset rivinvaihdot välilyönneiksi (ettei tiedosto mene sekaisin):
$data = str_replace(array("\r\n", "\n", "\r"), " ", $data);
// Avataan tiedosto siten, että sen loppuun lisätään tallennettava data (a=append):
$save = fopen("linkkitiedosto.txt", "a");
fwrite($save, $data."\n"); // Tallennetaan data tiedostoon, ja lisätään loppuun rivinvaihto
fclose($save);
header("Location: $SELF"); // Siirrytään takaisin linkkilista sivulle.
}
}
}
if($act == ""){
print"<A HREF=\"?act=addlink\">Lisää linkki</A><br><hr>";
if($max > 0){
print"Yhteensä $max linkkiä, (uusin ensimmäisenä).";
}else{
print"Ei vielä yhtään linkkiä, <A HREF=\"?act=addlink\">lisää</A> omasi!";
}
print"<br><BR>";
print"<TABLE border=\"1\" style=\"font:12px verdana\" width=\"600\">";
// Käydään linkit läpi viimeisestä ($max-1) ensimmäiseen (0):
for($u = $max-1; $u >= 0; $u--){
$osa = explode("<>", $linkit[$u]);
$paivays = date("j.n.Y - H:i:s", $osa[3]);
print"<TR>";
print" <TD valign=\"top\"><A HREF=\"$osa[0]\">$osa[1]</A></TD>";
print" <TD valign=\"top\" width=\"400\">$osa[2]<p style=\"font:9px verdana; color:#888888; margin:0\" align=\"right\">Lisätty: $paivays</p></TD>";
print"</TR>";
}
print"</TABLE>";
}
ob_end_flush();
?>Aihe on jo aika vanha, joten et voi enää vastata siihen.