Yksinkertainen pastebin. Tee mielellään alikansio paste, jonne sijoitat koodin tiedostoon index.php.
Jättää sisennykset pre-tagin ansiosta.
EDIT 19.3.2006: Koodia siistimmäksi.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fi"> <head> <title>PasteBin</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <!--CSS:llä rivinumerot + koodin muotoilu. Kiitokset ajv:lle.--> <style type="text/css"> div.rivinro { float:left; margin: 0 0.2em 0 0; padding: 0 0.4em 0 0; line-height: 1em; } pre.code { line-height: 1em; white-space:pre; } h1 { font-size: 1.17em; margin: 1em 0; padding: 0; } </style> </head> <body> <h1>PasteBin</h1> <?php if($_GET['id']){ #Jos tunnisteella löytyy if(file_exists($_GET['id'].'.pastebin')){ #Hae tiedosto $txt = file($_GET['id'].'.pastebin'); } else { #Jos ei löydy die("Tunniste ".$_GET['id']." on virheellinen."); } #Tulosta paste echo '<h2>Paste '.$_GET['id'] . ":</h2>\n\t".'<div class="rivinro">'."\n\t\t"; #Tulosta rivinumerot for($i=1;$i<=count($txt);$i++){ echo $i.":<br />"; } echo "\n\t</div>\n\t".'<pre>'."\n"; #tulosta rivi kerrallaan for($i=0; $i<=count($txt);$i++){ echo $txt[$i]; } echo "\n\t</pre>"; #Lukijalle linkki, johon uusi voidaan jättää uusi. Ota pois jos häiritsee. echo "\n\t<hr /><a href='index.php'>Lisää omasi!</a>"; } elseif($_POST['paste']){ #Otetaan pois HTML ja kenoviivat $_POST['paste'] = htmlspecialchars($_POST['paste']); $_POST['paste'] = stripslashes($_POST['paste']); #Uniikki id $id = uniqid(rand()); #Avataan pastebin-filu $xfile = fopen($id . '.pastebin', "w"); #Kirjoitetaan siihen fwrite($xfile, $_POST['paste']); fclose($xfile); #Informoidaan käyttäjää echo '<a href="index.php?id='.$id.'">Paste tallennettu tunnisteella '.$id.'</a>'; #Käydään läpi pastebin-tiedostot foreach(glob("*.pastebin") as $pbfilu){ #Tilan säästöä. #Jos yli 2 viikkoa vanha, niin poista armotta || vuosi vaihtunut-poikkeustapaus if(date(W,time())-date(W,filemtime($pbfilu)) >= 3 || date(W,time())-date(W,filemtime($pbfilu)) < 0){ unlink($pbfilu); } } #Jos ei haeta eikä laiteta uutta, niin lomaketta peliin } else { echo '<form action="index.php" method="get">'."\n\t\t"; echo '<label>Hae tunnisteella: </label></td><td><input type="text" name="id" id="id" /><input type="submit" value="Hae!" />'."\n\t\t"; echo '</form>'; echo '<br /><br /><form action="index.php" method="post">'."\n\t\t"; echo '<textarea cols="60" rows="15" id="paste" name="paste"></textarea>'."\n\t\t"; echo '<br /><input type="submit" value="Lähetä" />'."\n\t</form>\n"; } ?> </body> </html>
Tässä esimerkki, kuinka saa rivinumerot pastebiniin CSS:llä.
Edit: Varoituksen sanana laitappa vielä tuolle h1:lle nuo tyylimääritykset, muuten noiden koodirivien numerointi ei välttämättä natsaa kaikilla selaimilla, sillä eri selaimilla on hieman erilaiset oletusmääritykset eri elementeille. Esim Operalla ei taida näkyä oikein.
Muuten ihan ok pätkä.
Edit: Yllätys yllätys: IE ei ymmärä whitespace: pre;
Kiitos ajv ;D
Eikös toi koodi rivity ollenkaan? ajv:n esimerkin mukaisesti näyttää siltä ettei rivity...
Rivittyyhän se, nyt ;)
T.M. kirjoitti:
Eikös toi koodi rivity ollenkaan? ajv:n esimerkin mukaisesti näyttää siltä ettei rivity...
Juu, kun tein ton koodin, ei ollut IE käytössä. Fixailin vähän, nyt pitäs toimii IE:lläkin.
Warning: fopen(115169601042724733c9b58.pastebin): failed to open stream: Permission denied in /mbnet/d/dera/pastebin/index.php on line 58
Warning: fwrite(): supplied argument is not a valid stream resource in /mbnet/d/dera/pastebin/index.php on line 60
Warning: fclose(): supplied argument is not a valid stream resource in /mbnet/d/dera/pastebin/index.php on line 61
Paste tallennettu tunnisteella 115169601042724733c9b58
No sanoisko CHMOD sulle mitään...
Joten muistakaahan chmodata hakemisto (664 riittänee, jos ei, laittakaa 666), jonne tallennetaan pastet.
ai prkl unohdin sen kansion CHMOdata ku pitkään mietin että mikäs nyt kusee ;D
Mikäs kohta tässä määrittelee sen että mihin pastet lähtee?
Ku haluun ne tiettyyn kansioon enkä siihen samaan kansioon missä se pastebin on..
Vai eikö se sitten osaa ottaa niitä?
Siis sitten se ei varmaan osaa tehä sitä index.php?id=2y3788djs9384k3993 osotetta
rax kirjoitti:
Mikäs kohta tässä määrittelee sen että mihin pastet lähtee?
Muuta seuraavat funktiokutsut:
Vinkki kaipaisi vähän siistimistä: date-kutsuissa on määrittelemätön vakio W, aikatarkistus on muutenkin pielessä (ei poista koskaan loppuvuoden pasteja), stripslashes on yleensä nykyään turha ja vaatisi vähintäänkin magic_quotes_gpc-tarkistuksen, htmlspecialchars olisi tyylikkäämpi vasta tulostusvaiheessa, id:tä ei tarkisteta tai käsitellä (XSS-aukko virheilmoituksessa), die ei sovellu XHTML:n sekaan ja (X)HTML-koodi ei ole muutenkaan validia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.