Es stehen Ihnen wieder verschiedene Möglichkeiten offen:
Unter PHP & Formulare finden Sie ein kleines Beispielprojekt als Starthilfe mit PHP.
Werfen Sie noch einmal einen Blick auf die Seite Software, um die benötigten Tools zu haben.
(Und wenn Sie unter Linux oder Mac OS arbeiten: REPLs sind toll. Meistens. Der von PHP (php -a
) nicht so. Als Alternative gibt es PsySH.)
Unter studi.f4.htw-berlin.de/www/services/mysql/ können Sie sich auch eine MySQL-Datenbank anlegen. Alle Infos, die Sie zur Verbindung brauchen, werden Ihnen gleich angezeigt. Nutzen Sie phpMyAdmin zur leichteren Administration. Und legen Sie Ihre Datenbanken bevorzugt mit utf8_general_ci
an.
Für die Verbindung zwischen PHP und MySQL benutzen wir PHP Data Objects, kurz PDO; ältere Methoden wie mysql
und mysqli
sind zu vermeiden. Von tuts+ gibt es ein kleines Tutorial dazu. Bezüglich PDO sind vor allem die Funktionen query
, prepare
, bindParam
, execute
und fetch
wichtig. Und als Charset ist utf8mb4
zu empfehlen.
Zudem sollten Sie tunlichst jeden Fremd-Input prüfen und gegebenenfalls säubern – dazu gibt es die Funktion filter_var
und die dazu passenden Sanitize filters. Beispielsweise:
$url = filter_var($_POST['url'], FILTER_SANITIZE_URL);
filter_var
macht Probleme bei Zeilenumbrüchen, weswegen zum Säubern von HTML die Funktion htmlspecialchars
benutzt werden sollte.
$safe_html = htmlentities($input, ENT_QUOTES, 'UTF-8');
Es ist für reine PHP-Dateien üblich, keine schließenden PHP-Tags zu benutzen (also kein ?>
am Ende), da der Interpreter darauf folgende Leerzeilen an den Browser schicken würde, was es wiederum unmöglich macht, danach noch den HTTP-Header der Antwort zu verändern (weil er ja schon gesendet wurde).
Seien Sie vorsichtig mit PHP-Tags. <?php … ?>
funktioniert immer, ich persönlich mag auch <?= … ?>
als Abkürzung für <?php echo … ?>
, mit dem Risiko, dass es in Umfeldern, die ich nicht kontrollieren kann, nicht funktioniert. <? … ?>
und <% … %>
sollten vermieden werden.
Häufig finden Sie sogenannte Yoda-Conditions: if (5 == $number) {}
. Liest sich eigenartig, hat aber den Grund, dass es nicht versehentlich zu einer Zuweisung (if ($number = 5) {}
) kommen kann, was in PHP kein Fehler, sondern true
wäre und damit im schlimmsten Fall nicht auffällt.
Variablen in Strings mit doppelten Anführungszeichen werden ausgewertet, in Strings mit einfachen nicht.
$name = 'Hugo';
echo "Hallo $name"; // Hallo Hugo
echo 'Hallo $name'; // Hallo $name
Die Shebang-Zeile sollte #!/usr/bin/env php
, nicht #!/usr/bin/php
o.ä. sein. (Weil PHP ja auch woanders liegen kann…)
Es gibt noch viele weitere kleine Dinge, die hier der Übersichtlichkeit halber nicht mehr mit aufgeführt werden.