Ein PHP Obfuscator verschleiert den Quellcode von PHP-Scripts so, dass die Bedeutung von Menschen nur schwer nachvollzogen werden kann, bzw. es nicht so einfach ist, den Code zu lesen. Beim „sauberen“ Programmieren nutzt man in der Regel „sprechende“ Variablen- und Funktionsnamen, um die spätere Pflege des Codes zu erleichtern.

In dieser for-Schleife

// /////////////
// vorher

<?php
for ($ZeilenCounter = 0; $ZeilenCounter <= 10; $ZeilenCounter++) {
    echo "The number is: $ZeilenCounter <br>";
}
?>

weiß man auch nach mehreren Monaten noch, für was sie da ist. Hier könnte eine Textdatei zeilenweise ausgelesen und ausgegeben werden.
Im verschleierten Zustand ist dies für den Laien schon schwerer.

// /////////////
// nachher

<? for($nhufmkou9dd4e461268c8034f5c8564e155c67a6=0;$nhufmkou9dd4e461268c8034f5c8564e155c67a6<=10;$nhufmkou9dd4e461268c8034f5c8564e155c67a6++){echo"The number is: $nhufmkou9dd4e461268c8034f5c8564e155c67a6<br>";}?>

 

Jetzt stellt sich die Frage: „Warum der Ganze Aufwand“?
Man möchte bei der Weitergabe von PHP Scripten oft vermeiden, dass die genaue Funktionsweise oder der Code zu einfach erkannt und gelesen werden kann. Die Lesbarkeit von Variablen, Funktionen, … soll also deutlich erschwert werden. Ein PHP Obfuscator benennt dazu die Variablennamen, Interface-, Klassen- und Funktionsnamen in nichtssagende kryptische Zeichenkombinationen um. Leerzeichen, Leerzeilen, Zeilenumbrüche sowie ein- und mehrzeilige Kommentare, können aus dem Quellcode entfernt werden. Des Weiteren können Zeichenketten (mit der Ausnahme von „heredoc“-Blöcken) z.B. mit Base64 kodiert werden, was etwa zur Vermeidung von einfachen Änderungen der Script-Ausgabe nützlich sein kann.

Jedoch sei der Hinweis angebracht, dass auch mit einem PHP Obfuscator keine vollständige Unlesbarkeit des Quelltextes erreicht werden kann, da der PHP-Server das Script – auch ohne zusätzlich am Server installierte Software – wie jedes andere PHP-Script verarbeiten muss. Für den PC/Server spielt es also keine Rolle, ob die Variable „$zeilenCounter“ oder „$sdhatautt43wetz43“ heißt.