mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-10-19 18:05:02 +02:00
371 lines
14 KiB
HTML
371 lines
14 KiB
HTML
<html>
|
|
<head>
|
|
|
|
<title>PHP-Einfach.de - PHP Einführung - Dateien</title>
|
|
<meta name="Author" content="Andavos">
|
|
<meta name="Publisher" content="Andavos">
|
|
<meta name="Copyright" content="Andavos">
|
|
<link rel="stylesheet" href="css/main.css" tppabs="http://www.php-einfach.de/offline/css/main.css" type="text/css">
|
|
</head>
|
|
<body text="#000000" bgcolor="#DDDDDD" link="#004A95" alink="#004A95" vlink="#525252">
|
|
|
|
<table align="center" height="100%" width="100%" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td align="center" valign="middle" height="100%" width="100%">
|
|
|
|
<table height="100" width="750" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td height="100" bgcolor="#FFE09F" width="750"><img src="grafiken/banner_top.jpg" tppabs="http://www.php-einfach.de/offline/grafiken/banner_top.jpg" width="750" height="100" border="0" alt="">
|
|
<a name="oben"></a></td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<table height="650" width="750" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td valign="top" bgcolor="#FFE09F" width="160">
|
|
|
|
<table width="160" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td height="100" width="5"></td>
|
|
<td class="black" height="100" width="150">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<br><b><center><img src="grafiken/side_navigation.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_navigation.gif" width="150" height="25" border="0" alt=""></center></b>
|
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/index.php"><b>»</b> Startseite</a><br>
|
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_news.php"><b>»</b> Newsübersicht</a><br>
|
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_email.php"><b>»</b> Kontakt</a><br>
|
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_impressum.php"><b>»</b> Impressum</a><br><br>
|
|
|
|
|
|
<center><img src="grafiken/side_community.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_community.gif" width="150" height="25" border="0" alt=""></center>
|
|
<a target="_blank" class="blue" target="_blank" href="http://forum.php-einfach.de/"><b>»</b> Forum</a><br>
|
|
<a target="_blank" class="blue" href="http://www.php-einfach.de/nav_gaestebuch.php"><b>»</b> Gästebuch</a><br><br>
|
|
|
|
|
|
<center><img src="grafiken/side_tutorials.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_tutorials.gif" width="150" height="25" border="0" alt=""></center>
|
|
<a class="blue" href="einf_php.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php.php"><b>»</b> Einführung PHP</a><br>
|
|
|
|
|
|
<a class="blue" href="einf_php_anfang.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_anfang.php"><b>»</b> Anfang</a><br>
|
|
<a class="blue" href="einf_php_erste_schritte.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_erste_schritte.php"><b>»</b> Erste Schritte</a><br>
|
|
<a class="blue" href="einf_php_variablen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_variablen.php"><b>»</b> Variablen</a><br>
|
|
<a class="blue" href="einf_php_if-anweisung.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_if-anweisung.php"><b>»</b> if-Anweisung</a><br>
|
|
<a class="blue" href="einf_php_logische_operatoren.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_logische_operatoren.php"><b>»</b> Log. Operatoren</a><br>
|
|
<a class="blue" href="einf_php_uebung1.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_uebung1.php"><b>»</b> Übung</a><br>
|
|
<a class="blue" href="einf_php_dateien.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien.php"><b>»</b> Dateien</a><br>
|
|
<a class="blue" href="einf_php_schleifen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_schleifen.php"><b>»</b> Schleifen</a><br>
|
|
<a class="blue" href="einf_php_array.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_array.php"><b>»</b> Array</a><br>
|
|
<a class="blue" href="einf_php_dateien2.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_dateien2.php"><b>»</b> Dateien Teil 2</a><br>
|
|
<a class="blue" href="einf_php_datum.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_datum.php"><b>»</b> Datum & Zeit</a><br>
|
|
<a class="blue" href="einf_php_email.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_email.php"><b>»</b> Mail Funktion</a><br>
|
|
<div style="position: relative; left:15;" >
|
|
<a class="blue"href="einf_php_suchen_ersetzen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_suchen_ersetzen.php"><b>»</b> Suchen & Ersetzen</a><br>
|
|
<a class="blue" href="einf_php_nuetz_funktionen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_nuetz_funktionen.php"><b>»</b> Nützliche Funktionen</a><br>
|
|
</div>
|
|
<a class="blue" href="einf_php_sessions.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_sessions.php"><b>»</b> Sessions</a><br><br>
|
|
|
|
|
|
|
|
<a class="blue" href="einf_mysql.php.htm" tppabs="http://www.php-einfach.de/offline/einf_mysql.php"><b>»</b> Einführung MySQL</a><br>
|
|
|
|
<br>
|
|
<center>
|
|
<a target="_blank" href="http://www.php-einfach.de/nav_verlinkung.php"><img src="grafiken/php-einfach.gif" tppabs="http://www.php-einfach.de/offline/grafiken/php-einfach.gif" width="88" height="31" border="0" alt="PHP-Einfach.de"></a><br><br>
|
|
|
|
<a target="_blank" href="http://www.digicount.de/"><b>Counterdienst:</b></a>
|
|
<a target="_blank" href="http://www.php-einfach.de/nav_digicount.php"><div>
|
|
<img src="grafiken/digicount_livedemo.jpg" tppabs="http://www.php-einfach.de/offline/grafiken/digicount_livedemo.jpg" border="0" alt="Digicount.de"><br>
|
|
<small>Unser werbefreier Counter- und Statistikdienst</small></div>
|
|
|
|
</a>
|
|
</center>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</td>
|
|
<td height="100" width="5"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
<td valign="top" bgcolor="#FFFFFF" width="430">
|
|
|
|
<table width="430" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td height="100" width="10"></td>
|
|
<td valign="top" class="black" height="100" width="410">
|
|
<br>
|
|
<h4>Dateien</h4>
|
|
|
|
|
|
|
|
|
|
Bisher sind wir in der Lage, mit Variablen zu arbeiten, und diese zu überprüfen. <br>
|
|
Zwar können wir so schon einen geschützten Bereich programmieren, aber oft möchte man ja bestimmte Werte auch abspeichern. Dies können z.B. Daten aus einem Formular oder ähnliches sein. <br>
|
|
Das abgespeicherte möchte man dann später natürlich auch wieder ausgeben. Um genau das geht es in diesem Abschnitt.<br><br>
|
|
|
|
|
|
|
|
Zunächst ist zu beachten, dass das Arbeiten mit Dateien immer in drei Schritten abläuft. Eine Datei wird <b>geöffnet</b>, danach wir der Inhalt in die Datei <b>geschrieben</b> oder aus der Datei gelesen (oder auch beides) und zum Schluss wird sie wieder <b>geschlossen</b>.
|
|
|
|
Das öffnen von einer Datei ist eigentlich recht einfach:
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
$datei = fopen(<i>Dateiname</i>, <i>Modus</i>);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Der Befehl <b>fopen</b> öffnet die Datei <i>Dateiname</i>, der <i>Modus</i> bestimmt, was wir mit der Datei machen möchten (lesen bzw. schreiben).<br>
|
|
Außerdem müssen wir darauf achten, ab welcher Zeile PHP anfängt zu lesen (Anfang oder Ende der Datei).<br>
|
|
Auch wichtig ist, ob PHP eine Datei anlegt oder nicht, sofern diese noch nicht existiert. Wenn man mit PHP neue Dateien erstellen möchte, dann sollte man <b>nicht</b> r bzw. r+ benutzen.<br><br>
|
|
|
|
Folgende Modi kann man benutzen:<br><br>
|
|
|
|
<table align="center" bordercolorlight="#000000" bordercolordark="#000000" cellspacing="0" cellpadding="5" border="1" class="black">
|
|
<tr bgcolor="#E0E0E0">
|
|
<th>Modus</th>
|
|
<th>Funktion</th>
|
|
<th>Dateizeiger</th>
|
|
<th>Datei anlegen</th>
|
|
</tr>
|
|
<tr>
|
|
<td>r</td>
|
|
<td>Lesen</td>
|
|
<td>Anfang</td>
|
|
<td>Nein</td>
|
|
</tr>
|
|
<tr>
|
|
<td>r+</td>
|
|
<td>Lesen und Schreiben </td>
|
|
<td>Anfang</td>
|
|
<td>Nein</td>
|
|
</tr>
|
|
<tr>
|
|
<td>w</td>
|
|
<td>Schreiben </td>
|
|
<td>Anfang</td>
|
|
<td>Ja</td>
|
|
</tr>
|
|
<tr>
|
|
<td>w+</td>
|
|
<td>Lesen und Schreiben </td>
|
|
<td>Anfang</td>
|
|
<td>Ja</td>
|
|
</tr>
|
|
<tr>
|
|
<td>a</td>
|
|
<td>Schreiben </td>
|
|
<td>Ende</td>
|
|
<td>Ja</td>
|
|
</tr>
|
|
<tr>
|
|
<td>a+</td>
|
|
<td>Lesen und Schreiben </td>
|
|
<td>Ende</td>
|
|
<td>Ja</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
Wenn w / w+ benutzt, musst du darauf achten, das der Inhalt des Dokuments ohne Nachfrage überschrieben wird.<br><br>
|
|
|
|
Für das Anlegen eines <a target="_blank" href="http://www.php-einfach.de/tuts_php_logfiles.php">Logfiles</a> benutzt man den <b>Modus a</b>, da der neue Eintrag immer am Ende angehängt wird.<br><br>
|
|
|
|
|
|
Wir machen jetzt als Beispiel einen simplen Textcounter (ohne Reloadsperre), denn an diesem Beispiel lernen wir so gut wie alles, was wir später brauchen.<br><br>
|
|
|
|
Zu erst öffnen wir eine Datei, ich empfehle eine Textdatei (counter.txt) zu benutzen, aber man kann auch jedes andere Format benutzen.<br><br>
|
|
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
$datei = fopen("counter.txt","r+");
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Bei dem Modus <b>r+</b> müssen wir darauf achten, das es diese Datei bereits vorhanden ist.<br><br>
|
|
|
|
Dann wollen wir ja abfragen, wie viele Personen diese Seite schon aufgerufen haben, deswegen lesen wir die Datei zuerst aus.<br>
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
$counterstand = fgets($datei, 10);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Mit <b>fgets</b> lesen wir eine Datei, der erste Wert in der Klammer gibt an, welche Datei wir lesen, der zweite Wert wie viele Zeichen wir lesen.<br>
|
|
In diesem fall 10 Zeichen, weil ein Counter i.d.R. nicht mehr als 10 Zeichen hat.<br>
|
|
Das gelesene Speichern wir in der Variable $counterstand.<br><br>
|
|
|
|
Aber was ist wenn diese Datei leer ist?<br>
|
|
Dazu benutzen wir eine einfache if-Anweisung.<br>
|
|
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
if($counterstand == "")
|
|
{
|
|
$counterstand = 0;
|
|
}
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Hier wird überprüft, ob die Datei einen Inhalt hat, wenn sie keinen Inhalt hat, so wird der Counterstand auf 0 gesetzt.<br><br>
|
|
|
|
Wir wollen ja, wenn der Besucher die Site besucht, den Counterstand um 1 erhöhen.<br>
|
|
|
|
Dies geht mit <b>$counterstand++;</b>.<br>
|
|
Dabei wird der Wert von $counterstand um 1 erhöht. Der neue Wert ist wieder in $counterstand gespeichert.<br><br>
|
|
|
|
Danach müssen wir dem Besucher die Zahl ausgeben, das machen wir ganz einfach mit <b>echo</b>.<br>
|
|
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
$counterstand++;
|
|
echo $counterstand;
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Durch das lesen des Counterstandes/der Datei, ist der 'Dateizeiger' nicht mehr am Anfang der Datei.<br>
|
|
Würden wir jetzt den neuen Wert speichern, so würde der alte Wert <b>nicht</b> überschrieben werden. So würde aus dem Counterstand 1 plötzlich eine 12 werden.<br>
|
|
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
rewind($datei);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
Mit <b>rewind</b> setzten wir den Dateizeiger wieder an den Anfang der Datei.<br><br>
|
|
|
|
Und anschließend tragen wir den neuen Wert wieder in die Datei ein.<br>
|
|
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
fwrite($datei, $counterstand);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Mit <b>fwrite</b> (man kann auch <i>fputs</i> benutzen) tragen wir in die Datei ($datei) den neuen Counterstand (der in der Variable <i>$counterstand</i> ist) ein.<br><br>
|
|
|
|
Zum Schluss schließen wir noch die Datei:
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
fclose($datei);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Unser gesamte Code sieht dann so aus:<br>
|
|
<font color="#606060">
|
|
<pre>
|
|
<?php
|
|
$datei = fopen("counter.txt","r+");
|
|
$counterstand = fgets($datei, 10);
|
|
if($counterstand == "")
|
|
{
|
|
$counterstand = 0;
|
|
}
|
|
$counterstand++;
|
|
echo $counterstand;
|
|
rewind($datei);
|
|
fwrite($datei, $counterstand);
|
|
fclose($datei);
|
|
?>
|
|
</pre>
|
|
</font>
|
|
|
|
Durch die Arbeit mit Dateien sind auch noch viele weitere Anwendungen möglich, z.B. Logfiles, Newsscripts, Gästebücher und sogar Foren.<br><br>
|
|
|
|
Allerdings sind diese Sachen dann meistens alle recht Simpel gehalten und bieten kaum weitere Funktionen, da dies sehr schwer zu realisieren ist.<br>
|
|
Deswegen sollten wir uns nicht solange damit aufhalten, sondern lieber mit Datenbank (MySQL) arbeiten.<br><br>
|
|
|
|
|
|
<b>Wichtig:</b><br>
|
|
Wenn ihr mit diesen Prinzip auf eurem Server (Webspace) arbeitet, dann müsst ihr den Dateien, in denen ihr etwas schreiben möchtet, die Schreibrechte CHMOD(unix) 777 geben.<br>
|
|
Wie das geht erfahrt ihr <a href="http://www.php-einfach.de/downloads_clanbook_faq.php#schreibrechte">hier</a>.
|
|
|
|
<br><br>
|
|
|
|
Um eine Datei komplett auszugeben brauchen wir als erstes eine <a href="einf_php_schleifen.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_schleifen.php">Schleife</a>.<br><br>
|
|
|
|
|
|
<a href="http://www.php-einfach.de/nav_impressum.php">Autor Andavos</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div align="center"><a href="#oben">Nach oben</a></div>
|
|
</td>
|
|
<td height="100" width="10"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
<td valign="top" bgcolor="#FFE09F" width="160">
|
|
|
|
<table width="160" cellspacing="0" border="0" cellpadding="0">
|
|
<tr>
|
|
<td height="100" width="5"></td>
|
|
<td valign="top" class="black2" height="100" width="150">
|
|
|
|
<br><b><center><img src="grafiken/side_news.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_news.gif" width="150" height="25" border="0" alt=""></center></b>
|
|
|
|
|
|
<a target="_blank" href="http://www.php-einfach.de/nav_news.php">News</a>
|
|
<br><br>
|
|
|
|
<b><center><img src="grafiken/side_forum.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_forum.gif" width="150" height="25" border="0" alt=""></center></b>
|
|
<a target="_blank" href="http://forum.php-einfach.de/">Forum</a>
|
|
<br><br>
|
|
|
|
<b><center><img src="grafiken/side_newsletter.gif" tppabs="http://www.php-einfach.de/offline/grafiken/side_newsletter.gif" width="150" height="25" border="0" alt="Newsletter"></center></b>
|
|
|
|
<form target="_blank" method="post" action="http://www.php-einfach.de/clanletter/save.php">
|
|
|
|
|
|
<br> <br>
|
|
<div align="center">© PHP-Einfach.de 2003 - 2007 </div>
|
|
</td>
|
|
<td height="100" width="5"></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html> |