This is an old revision of the document!
Eine Datei auf dem Server mit PHP schreiben und lesen
Technische Voraussetzungen
- PHP muss auf dem Webserver konfiguriert sein.
- Der Benutzer des Webservers (www-data) muss die Erlaubnis haben, in ein bestimmtes Verzeichnis zu schreiben.
- Das Vezeichnis sollte vor direktem Webzugriff geschützt sein.
Vorbereitung
Damit der Webserver Zugriff hat, kann man als Benutzer Schreibrechte für alle auf ein Verzeichnis geben, oder der Administrator kann ein Verzeichnis anlegen, auf das www-data Schreibrechte hat.
Damit der Webserver aber keine Datei darin direkt ausliefert, wurde darin die Datei .htaccess
mit folgendem Inhalt angelegt:
Order deny,allow deny from all
Das wurde mir folgendem bash-script erledigt:
set -x user=$1 home=`eval echo ~$user` data=$home/www-data-dir mkdir -p $data echo -e "Order deny,allow\ndeny from all" > $data/.htaccess chown -R $user:www-data $data chmod g+rwx $data
Minimalbeispiel in PHP
Kopieren Sie den Ordner simple-file-io
vom Archiv https://ofi.tech-lab.ch/2023/teach/76f5054a/simple-file-io.zip in Ihr Homeverzeichnis auf dem Webserver.
Testen Sie den Code online und studieren Sie den PHP-Code in den PHP-Dateien.
HTTP GET
Bei einem Zugriff auf einen Webserver mit der GET-Methode werden alle Parameter in der URL gespeichert (Bildquelle):
Diese Parameter können in PHP im Objekt $_GET
ausgelesen werden.
Im Gegensatz dazu können Daten mit HTTP POST direkt zum Server gesandt werden, die nicht in der URL erscheinen. Dies ist z.B. absolut nötig für vertrauliche Information, wie z.B. Passwörter etc.
URL in JavaScript bauen und darauf zugreifen
Dazu sollte
CORS (Cross origin resource sharing)
Szenario: Der Live-Server auf localhost
möchte per XMLHttpRequest
auf ofi.tech-lab.ch
zugreifen.
Das schlägt fehl, der Browser unterbindet aus Sicherheitsgründen solche Requests. Wenn aber der ofi.tech-lab.ch
-Server dem localhost
, bzw. 127.0.0.1
die Erlaubnis für den Zugriff erteilt, funktioniert das.
Dazu deponieren Sie im Verzeichnis, wo die aufgerufene URL liegt folgenden Inhalt in die Datei .htaccess
:
Header add Access-Control-Allow-Origin "http://127.0.0.1:5500"
(Dazu muss im Apache Webserver das Module headers
aktiviert sein, was bei unserem Server gemacht wurde).