PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
Mathe Nachhilfe
Suchmaschinenoptimierung
PHP Forum

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

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Prinzip des Kampfsystemes kurz un ...

» Facebook Connect

» Geometrische Formen verlinken







© PHP-Einfach.de 2003 - 2010