|
|
|
Nopaste
Zurück zur Übersicht Moin Moin,
Ich habe mir gedacht ich Code mal mein eigenes Nopaste sowas wie pastie.org. Nun kommen wir dazu was ist ein nopaste überhaupt ? Ein Nopaste ist dazu dass Chats nicht mit irrem langen Code zugeschauffelt wird und dieser wird beim Nopaste auch noch farblich untermalt dies nennt man Highlighten. Jezt kommen wir aber endlich zum Punkt.
Kommen wir zur Datenbank die sollte wie folgt aussehen:
ID INT (11) Auto increment Unsigned
language Text
code Text
Erstmal brauchen wir ein Formular wo der User den Code und die Sprache des Codes wählen kann das sieht ganz simpel einfach so aus
pastie.form.html
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Stex No Paste</title>
</head>
<body>
<h1>Stex's Nopaste</h1>
<form action="pastie.php" method="post">
Code:<br>
<textarea name="code" cols="40"
rows="12" ></textarea><br><br>
Sprache:
<select name="Language" ><br>
<option selected value="PHP">PHP</option<br>
<option value="html4strict">HTML</option><br>
<option value="Javascript">Javascript</option><br>
<option value="C">C</option><br>
<br><input type="submit" value="Submit"><br>
</form>
</body>
</html>
|
|
Natürlich kann man auch mehr Sprachen auswählen aber dazu kommen wir gleich. So nun soll der gespeicherte Code sicher in einer DB eingetragen werden. Wie man das ganze macht seht ihr nun hier. Der Code ist ausführlich kommentiert.
pastie.php
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
|
<?php
$verbindung = mysql_connect ("localhost",
"XXX", "XXX")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch"); // Normale MYSQL Verbindung
mysql_select_db("XXX")
or die ("Die Datenbank existiert nicht.");
$code = mysql_real_escape_string($_POST["code"]); // Das escapen ist hier besonders wichtig da sonst der Code ausgeführt wird !!!
$datum = time();
$language = mysql_real_escape_string($_POST["Language"]);
if($code == "" OR $language == "") // Überprüfung ob die Felder ausgefüllt wurden
{
echo "Bitte alle Felder ausfüllen";
exit;
}
$eintrag = "INSERT INTO `paste` (`date`,`language`,`code`) VALUES ('$datum' , '$language' , '$code')"; // Einaches eintragen der Wert in die Datenbank
$eintragen = mysql_query ($eintrag);
if ($eintragen == true)
{
echo "Ihr Eintrag wurde erfolgreich gespeichert.";
?>
<a href="show.php?id=<?php echo mysql_insert_id(); ?>">http://www.stex-cash.bplaced.net/paste/show.php?id=<?php echo mysql_insert_id(); ?></a>
<?php
}// Die Funktion bzw die Anweisung mysql_insert_id(); gibt die ID zurück die beim INSERTEN automatisch hochgezählt wurde.
else
{
echo "Error. Bitte kontaktieren sie den Webmaster"; // Falls das speichern nicht geklappt hat Error anzeigen lassen;
}
?>
|
|
Nun wurden die Daten eingetragen und der Link zum anschauen des Codes ausgegeben. Bevor es weiter geht müssen wir uns den Code Highlighter Geshi downloaden. Dies kann man unter der Geshi Website : http://qbnz.com/highlighter/ tun. Nach dem Download einfach die Zip datei auf dem FTP entpacken. Jezt geht es weiter mit der show.php
show.php
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
|
<?php
$verbindung = mysql_connect ("localhost",
"XXX", "XXXX")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");
mysql_select_db("XXXX")
or die ("Die Datenbank existiert nicht."); // Wieder Verbinden
$id = mysql_real_escape_string($_GET["id"]); // Die ID escapen um uns vor SQL_INJECTIONS zu schützen-
if ($id == 0) // Wenn die ID 0 sein sollte Meldung ausgeben.
{
echo "Es wurde keine id gewählt";
exit;
}
$abfrage = "SELECT * FROM `paste` WHERE id=$id";
$abfragen = mysql_query($abfrage); // Alles aus der DB holen wo die id= unser Id ist.
$menge = mysql_num_rows($abfragen);
if ($menge == 0) // Wenn der ID nicht in der DB vorhanden ist dann Meldung ausgeben und Script unterbrechen
{
echo "Die ID gibt es nicht in unser DB";
exit;
}
$row = mysql_fetch_object($abfragen);
include_once 'geshi.php'; // Die geshi.php includen also den Highlighter
$language = $row->language;
$source = $row->code;
$source = StripSlashes($source); // Die Backslahses im Code entfernen die mysql_real_escape_string gesetzt hat
$geshi = new GeSHi($source, $language); // Die Klasse ansprechen um den Code zu highlighten
echo $geshi->parse_code(); // Ausgabe des gehilighteten Codes
?>
|
|
Natürlich kann Geshi viel mehr als nur PHP,HTML,Javascript und C zu highlighten es kann eigentlich jede Sprache interpretieren für Infos müsst ihr einfach auf der Seite gucken.
Nun sind wir schon fertig. Falls ihr noch fragen habt oder Anregungen und Kritik gerne her damit. Eine Online Demo des Pasties findet ihr hier :
http://www.stex-cash.bplaced.net/paste/pastie.form.html
Edit : Buggs gefixed
Kommentare
Zurück zur Übersicht
Autor stex
|
|
|
|