php-resource.de

PHP Tutorial: Verschlüsslung bzw. Codierung von HTML Code in ASCII

HTML Code können wir ebenso gut in ASCII Code umwandeln. Zunächst einmal ein paar Sätze dazu, wozu man ASCII Zeichen benötigt und wozu Ihnen dieses Script dient.

|27.02.2004 | Lukas Beck | 12725 | KAT : PHP | | Kommentare 0


1

1

HTML Code können wir ebenso gut in ASCII Code umwandeln. Zunächst einmal ein paar Sätze dazu, wozu man ASCII Zeichen benötigt und wozu Ihnen dieses Script dient.

Jeder kennt das Problem - in manchen Foren wollen Sie eine Internetadresse angeben, diese wird dann entweder gar nicht erst angezeigt, da die Tags "gestript" werden oder die Adresse soll ausgegeben, nicht als Link umgewandelt werden. Beides ist ärgerlich und mühsam zugleich. Hier ist es möglich, die Tags in ASCII zu wandeln.

Doch auch ein weiterer Aspekt sollte heutzutage in Betracht gezogen werden. Massive Probleme bereiten immer mehr die zunehmenden Spamer und damit primär natürlich verbunden die Spam Roboter, die den Müllversand erst ermöglichen. Eine gute Variante bot lange Zeit die Darstellung des @ Zeichens durch einen ASCII Code. Doch immer mehr Roboter gehen dazu über, dieses ja bekannte ASCII Zeichen einfach durch ein @ zu ersetzen und somit ist auch dieser Trick nicht mehr so sicher wie er einst mal war. Bislang ungeschlagen ist natürlich die bildhafte Lösung, die Mail Adresse einfach per Bilddatei darzustellen, leider aber nicht immer und überall möglich und daher meist auf den eigenen Webspace beschränkt.

Ich habe den Test gemacht und über mehrere Monate hinweg drei neu erstellte Mail Accounts auf eine gut besuchte Seite gestellt, eine von diesen ohne jeglichen Schutz, in der zweiten war lediglich das @ Zeichen durch einen ASCII Code ersetzt, die dritte - nun zum Tutorial - war komplett per ASCII Code dargestellt. Das SPAM Ergebnis war erstaunlich - auf die erste erhielt ich nach wenigen Wochen bereits Spam, die zweite blieb weitestgehend verschont, erhielt jedoch unregelmäßige, dennoch wenige unerwünschte Mails, die dritte ist bis heute Spamfrei. Resultat muss also sein, dass bislang wenige Spam Roboter sich die Mühe machen, den gesamten ASCII Code umzuwandeln - zudem kostet dies zusätzliche Rechenleistung.

Beginnen Sie also mit dem Standard HTML Teil, dem Titel und dem Body.

<html>
<head>
<title>Encrypter</title>
</head>
<body>

Ihr Script beginnt mit einem Formular, in dem Sie die Möglichkeit geben, eine URL, Mail oder Standardtext umzuwandeln. Dies ist natürlich beliebig erweiterbar, ändert auch nichts am eigentlichen Umwandlungsprinzip. Sie können das Script in HTML ausgeben, da dieses statisch bleibt. Hauptelement bildet das Formularfeld letters.

<form action="index.php" method="post">
<input type="text" name="letters"> <input type="submit" name="senden">
<br>
<input type="radio" value="standard" name="show"> Standard
<input type="radio" value="url" name="show"> URL
<input type="radio" value="email" name="show"> E-Mail
</form><br><br>

Zunächst wollen Sie ja wissen, wie Sie überhaupt umwandeln. Hierzu gibt es in PHP die hilfreichen Funktionen ord(); und chr(); - jeweils zum Darstellen und Umwandeln von ASCII Zeichen. Damit Sie den für HTML Code brauchbaren Zeichenstring erhalten, müssen Sie etwas tricksen und die Zeichen &# sowie das Semikolon per ASCII ausgeben, ansonsten erhalten Sie lediglich den puren ASCII Code. Hierzu führen Sie eine Verkettung durch, wie im unteren Script zu sehen ist.


<?
  
echo "&#38;&#35;".ord($letters[$i])."&#59;";
?>

Zunächst müssen Sie wissen, wie lang der eingegebene String ist, Sie testen dies mit der Funktion strlen(); - es kommt eine for() Schleife zum Einsatz und die Umwandlung beginnt mit ord();. Um einen zusammenhängenden String zu erhalten, den Sie später benötigen, füllen Sie ein Array namens encrypt[]; nach und nach mit dem gesamten umgewandelten Code. Um den Text problemlos kopieren zu können, geben Sie die Zeichen in einem Formularfeld Textarea aus.


<?
  
echo "<textarea rows="5" cols="80" style="color:blue">";
  for(
$i=0;$i<strlen($letters);$i++)
  {
  echo 
"&#38;&#35;".ord($letters[$i])."&#59;";
  
$encrypt[] = ord($letters[$i]);
  }
  echo
"</textarea>";
?>

Sie wollen natürlich auch sehen, ob das, was ausgegeben wurde, auch so stimmt. Sicherheitshalber sollten Sie daher den ASCII Code nochmal umwandeln, um zu sehen, was dabei herauskommt. Dazu unterscheiden Sie zunächst nach der getätigten Auswahl E-Mail oder URL. Weiterhin bedienen Sie sich jetzt dem Array encrypt[];, welches Sie zuvor erstellt haben und lassen einfach noch einmal eine Schleife durchlaufen, mit dem Unterschied, dass Sie nun statt der verschlüsselnden Funktion ord(); die entschlüsselnde Funktion chr(); verwenden.


<?
    
echo "<br><br><b>Proof</b><br>";
    if(
$show == "email") echo "<a href="mailto:";
    elseif($show == "
url") echo "<a href="http://";
    if(
$show == "email" || $show == "url")  {for($i=0;$i<=count($encrypt);$i++)  {echo chr($encrypt[$i]); }  echo"">"; }
       for($i=0;$i<=count($encrypt);$i++)  {echo chr($encrypt[$i]); }
    if($show == "
email" || $show == "url") echo "</a>";
?></body>
</html>

Damit wäre das Script auch schon zu Ende.

Kurze Zusatzinformation zum ASCII Code, für diejenigen, die es interessiert: Der American Standard Code for Information Interchange war ursprünglich ein 8 Bit Code, dessen erste 7 Bit zur Darstellung von Buchstaben und Zahlen genutzt wurde. Das 8. Bit diente als Prüfbit. Zugunsten der Darstellung von einigen Sonderzeichen sowie Umlauten fungierte das 8. Bit jedoch schon bald nicht mehr als Prüfbit sondern wurde zur Darstellung weiterer Zeichen benötigt. Gebraucht wird dieser Standard für die Anzeige von E-Mails und HTML Code und anderem.

Hier noch einmal der gesamte Code:


<html>
<head>
<title>Encrypter</title>
</head>
<body>

<form action="index.php?lang=de&" method="post">
<input type="text" name="letters"> <input type="submit" name="senden">
<br>
<input type="radio" value="standard" name="show"> Standard
<input type="radio" value="url" name="show"> URL
<input type="radio" value="email" name="show"> E-Mail
</form><br><br>
<?
echo "<textarea rows="5" cols="80" style="color:blue">";
for(
$i=0;$i<strlen($letters);$i++)
{
    echo 
"&#38;&#35;".ord($letters[$i])."&#59;";
    
$encrypt[] = ord($letters[$i]);
}
echo
"</textarea>";
echo 
"<br><br><b>Proof</b><br>";
    if(
$show == "email") echo "<a href="mailto:";
    elseif($show == "
url") echo "<a href="http://";
    if(
$show == "email" || $show == "url")  {for($i=0;$i<=count($encrypt);$i++)  {echo chr($encrypt[$i]); }  echo"">"; }
       for($i=0;$i<=count($encrypt);$i++)  {echo chr($encrypt[$i]); }
    if($show == "
email" || $show == "url") echo "</a>";
?>
</body>
</html>
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
Lukas Beck

Lukas Beck

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni