PHP Session (Dateien, Verzeichnisse und PHP, die Arbeit mit Dateien)



file_exists
Bevor Sie Operationen an einer Datei durchführen, ist es oft notwendig, um sicherzustellen, dass die Datei vorhanden ist. Diese befasst sich auch mit der Funktion file_exists. Diese Funktion kann nur zwei Werte zurück, wie Sie sich vorstellen können, TRUE (wenn die Datei vorhanden ist) und FALSCH. Typischerweise ist die Verwendung dieser Funktion wie folgt:
if ( !file_exists("somefile.txt") ) exit("Указанный файл не существует");
Beachten Sie, dass die Funktion nur auf lokale Dateien arbeitet, das heißt, wenn Sie wollte zu überprüfen, ob Yandex die Datei robots.txt erworben, werden Ihre Bemühungen vergeblich sein. Aber es ist möglich, eine beliebige Datei zu überprüfen, die auf dem lokalen Server liegt, unabhängig von der Position des Verzeichnisses.

Dateigröße

Wie der Name schon sagt, bestimmt die Funktion die Größe der Datei und gibt sie in Byte. Nützlich, wenn Sie die Datei für die Informationen zu überprüfen, wollen sie enthält (wie Sie wissen, eine leere Datei enthält 0 Byte), so gut wie möglich die Dateigröße überschritten eine bestimmte Grenze zu überprüfen.


Datei

Diese Funktion ist bereits direkt mit der Datei. Es gibt den Inhalt der Datei, und es macht es in einem Array, wobei jedes Element eine Zeile in der Datei ist. Die Funktion ist nützlich, wenn eine einzelne Datei ist notwendig, mehrere verschiedene Werte zu erhalten, die nicht überschritten werden darf. Dann wird jeder Wert in einer separaten Zeile gespeichert, und die Datei-Lesefunktion, die eine Anordnung zurückkehrt, so dass die Bezugnahme auf eine spezifizierte Variable durch Lesen der Werte von dem Array-Element mit dem Index an die Zeile in der Datei entspricht, durchgeführt wird.

Des Weiteren sind alle möglichen Wiedervereinigung Array-Elemente in einer einzigen Variablen zurückgegeben. Dies geschieht Funktionen mit Arrays implodieren verwenden. $text_file = implode("", file("somefile"));
echo $text_file;
Datei ( "somefile")); $text_file = implode("", file("somefile"));
echo $text_file;



ReadFile-

Wie die vorherige Funktion zeigt ReadFile- den Inhalt der angegebenen Datei und gibt die Anzahl der Zeichen in einer Datei (oder eine Anzahl von Bytes, wie Sie wollen, da ein Zeichen ein Byte). Aber beachten Sie, dass im Gegensatz zu der Datei, ist diese Funktion nicht für die Zuordnung stellt den Inhalt der Variable-Datei zu lesen. Wenn Sie dies versuchen, ordnen Sie nur eine variable Anzahl von gelesenen Zeichen. $bytes = readfile ("somefile");
echo "Итого - ".$bytes." символов";
); $bytes = readfile ("somefile");
echo "Итого - ".$bytes." символов";



fopen

Wenn eine vorherige Funktion autark ist und nicht im Allgemeinen mit anderen Merkmalen verbunden sind, arbeiten die folgende Datei-Management-Funktionen in Verbindung mit fopen. Diese Funktion öffnet die angegebene Datei und gibt eine Verbindungskennung mit der Datei, die für geschäftliche Zwecke verwendet wird. Mit dem Inhalt der Datei, ist diese Funktion nicht in irgendeiner Art und Weise verbunden.

fopen Funktion hat mehrere Betriebsarten mit der Datei. Sie geben den Dateinamen und sind der folgenden Bezeichnungen:
    "R" Datei geöffnet wird nur für seinen Inhalt zu lesen.
    "R +" Öffnen Sie eine Datei zum Lesen und Schreiben.
    "W" wird die Datei zum Zweck der Aufnahme geöffnet wird.
    "W +" eine Datei zum Lesen und Schreiben öffnen.
    "A" Datei wird zum Schreiben in die Datei geöffnet (anhängen).
    "A +" Öffnet zum Lesen und Anhängen.


fgets

Datei Lesefunktion, die open-Funktion fopen. Aber im Gegensatz zu einer Datei, diese Funktion für jedes Mal seine Ausführung gibt nur eine Zeile der Datei, während es die internen Dateizeiger auf die nächste Zeile bewegt, die sie auf den nächsten Aufruf der Funktion lesen. Deshalb, wenn Sie die gesamte Datei lesen müssen, müssen Sie diese Funktion in einer Schleife verwenden.

Beachten Sie, dass die Funktion verwendet fgets optionale Parameter Länge, die für das Lesen der maximalen Länge der Zeile in der Datei angibt. Wenn das Volumen der Leitung diese Zahl überschreitet, dann gibt die Funktion, es zu "cut down" ein Volumen in der Anzahl der Länge Bytes. Standardmäßig ist dies auf 1024 Bytes festgelegt, oder ein Kilobyte. Vor allem die Aufmerksamkeit auf diese Option zu zahlen, wenn Sie große Dateien verwenden, da die PHP-Laufzeitpuffer überlaufen kann, wenn diese Dateien zu lesen (der Umfang ist in der Konfigurationsdatei angegeben), wird es zum Absturz bringen.



PHP und HTTP: Header



PHP, wobei die Sprache vebprogrammirovaniya, unterstützt die Implementierung von HTTP-Header-Mechanismus zu senden.

Zunächst ein paar Worte über die HTTP-Header selbst.

Gemäß der HTTP-Spezifikation unterstützt das Protokoll die Übertragung von Dienstinformation von dem Server an den Browser, in Form von speziellen Titel gestaltet.

So HTTP-Header - ein Mittel der Kommunikation mit dem Server ein Remote-Client. Jeder Header besteht typischerweise aus einer einzigen Zeile von ASCII-Text mit dem Namen und Wert. Sami Titel erschien nicht im Browser-Fenster, kann aber oft stark die Anzeige des zugehörigen Dokuments ändern.

Der Mechanismus der HTTP - Header in PHP zu senden.

Der Mechanismus der Header in PHP Senden dargestellt header () Funktion. Das Merkmal des HTTP-Protokoll ist, dass der Titel vor dem Senden anderer Daten gesendet werden sollen, so dass die Funktion am Anfang des Dokuments aufgerufen werden muss und sollte, wie folgt:
header("HTTP заголовок", необязательный параметр replace);

Der optionale ersetzen Parameter kann einen Wert vom Typ bool (true oder false), und zeigt an, dass der vorherige Header sein muss, wenn dieser Typ auf dem Header des bereits vorhandenen ersetzt oder hinzugefügt werden.

In Bezug auf die Funktion header () wird häufig verwendet, headers_sent () Funktion, die als Ergebnis true zurück, wenn sie erfolgreich einen Header und andernfalls false sendet.

Betrachten Sie die häufigsten HTTP-Header.

Cache-control.

"Cache-control:" Wert

Überschrift Steuer Caching von Seiten. Im Allgemeinen ist diese Funktion eine der am häufigsten in Gebrauch von Überschriften.

Dieser Header kann mit den folgenden Werten verwendet werden:

* No-cashe - Verbot-Caching. Wird in den häufig aktualisierten Seiten und Seiten mit dynamischen Inhalten. Seine deysvtie wie ein META-Tag "Pragma: no-cache".
* Public - Caching der Seite Auflösung als lokaler Client und Proxy-Server.
* Private - Lassen Sie nur das lokale Caching-Client.
* Max-age - Aktivierung von zwischengespeicherten Dokument innerhalb der angegebenen Zeit in Sekunden. header("Cache-control: private, max-age = 3600") /* Кеширование локальными клиентами и использование в течение 1 часа */ , max-age = header("Cache-control: private, max-age = 3600") /* Кеширование локальными клиентами и использование в течение 1 часа */ von header("Cache-control: private, max-age = 3600") /* Кеширование локальными клиентами и использование в течение 1 часа */

Läuft ab.

"Gültig bis:" HTTP-date

Stellen Sie das Datum und die Zeit nach dem das Dokument veraltet betrachtet. Das Datum muss im folgenden Format angegeben werden (in englischer Sprache):

Tag der Woche, die Zahl (2-stellig) Monat (Abk.) Jahr Stunden (Abk.): Minuten: Sekunden GMT

Zum Beispiel, Fr, 9. Januar 2002 12.00.00 GMT

Es ist in diesem Format zurückkehrt gmdate () Funktion wie folgt:
echo gmdate("D, d MY H:i:s")."GMT";

Vielleicht ist die Verwendung des HTTP-Headers auf caching deaktivieren. Um dies zu tun, müssen Sie das Datum in der Vergangenheit an.

Last-Modified.

"Last-Modified:" HTTP- Datum

Zeigt das Datum der letzten Änderung des Dokuments. Das Datum muss wie im Fall des Expires-Header im gleichen Format angegeben werden. Dieser Titel kann nicht für dynamische Seiten verwendet werden, da viele Server (zB Apache) für diese Seiten das Änderungsdatum tun aussetzen.

machen Vielleicht eine Seite immer aktualisiert:
header("Last-Modified: ".gmdate("D, d MY H:i:s")." GMT");

Lage.

"Location:" eine absolute URL

Nützliche Header, der den Browser an die angegebene Adresse umleitet. Seine Wirkung ist mit dem META-Tag Refresh vergleichbar:
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=someURL">

So kann beispielsweise der Titel verwendet werden, wie folgt:
if ($login != $admin_login) header("Location: http://www.server.com/login.php");
else header("Location: http://www.server.com/admin.php?login=$login");

if (!headers_sent()) exit("Произошла ошибка! Пройдите <a href='http://www.server.com/login.php'>авторизацию</a> заново");



PHP und HTTP: Cookie.



In der vorherigen Lektion haben wir über die Beziehung des HTTP-Protokolls und die PHP-Sprache an den HTTP-Level-Titel. In dieser Lektion stellen wir noch eine andere spezifische HTTP-Header - Cookie.

Was sind Cookies?
Die Tatsache, dass es ein sehr ernstes Problem bei der Entwicklung von www-Technologien und die Einführung von Internet Programmiersprachen war Entwickler zu programmieren - wie die Ergebnisse des Algorithmus für eine lange Zeit für jeden spezifischen Benutzer zu halten? Von selbst, hat das HTTP-Protokoll keine Möglichkeit, die Software-Prozesse Ergebnisse der Festsetzung. und Sitzungen unter Verwendung ist keine Lösung, da ihre Wirkung beendet wird unmittelbar nach der Verbindung mit dem Server.

Das Problem wurde mit der Einführung des Mechanismus der Cookies gelöst (dh in der Übersetzung aus dem Englischen - "Cookies"). Cookies haben eine bemerkenswerte Eigenschaft - sie auf der Festplatte des Benutzers gespeichert und können dort fast unbegrenzt haltbar.

In seinem Herzen Cookies - das sind normale Textdateien, die in einem speziellen Verzeichnis gespeichert werden vom Browser verwendet (in der Regel der Ordner Temporary Internet Files genannt), und man kann sie sehen, indem über die Menüpunkte Dienst in das Verzeichnis (den schnellen Zugriff auf sie für IE-Browser gehen -> Internetoptionen -> Temporäre Internetdateien -> Einstellungen -> Dateien anzeigen).

Implementation Mechanismus von Cookies in PHP.
Die Umsetzung Mechanismus der Cookies durch eine einzelne Funktion setcookie () dargestellt. Wie ist der Fall mit HTTP-Header, muss diese Funktion vor dem Senden alle Daten auf dem Remote-Client aufgerufen werden, nicht einmal die "leere" Zeichen, dh Raum, Zeilenumbrüche und so weiter erlaubt.

Die Funktion hat die folgende Syntax:
setcookie(имя куки, значение, срок годности, информация о пути, домен, защищенность)

Alle Parameter außer dem Namen des Cookies sind optional. Wenn das Cookie nur mit diesem Parameter gesendet wird, wird es sofort von der entfernten Client zerstört, so von selbst diese Option nicht den Datenverkehr zu tragen. Voll ausgestattete Cookie tun, um die folgenden zwei Parameter: den Wert inhärent im Cookie, und die Zeit, zu der dieses Cookie verwendet werden kann.

Ein Wert, der Cookie trägt, kann eine beliebige Zeichenfolge von ASCII-Zeichen sein. Zum Beispiel können Sie ein Cookie mit dem Namen und dem Nachnamen des Besuchers festgelegt, die er zuvor in ein Formularfeld eingegeben hatte.
$data = $name."||".$surname;
setcookie("username", $data);


Notiz, die Daten sendet, muss in Form einer Linie durchgeführt werden, ein Versuch, die Anordnung von Werten zu lesen, die zuvor zu nichts führen ausgesendet.

Das Cookie, in dem obigen Beispiel gesetzt ist, wird unmittelbar nach dem Schließen des Browsers des Benutzers als Standard-Cookie-Laufzeit auf Null gesetzt zerstört werden. Um dies zu ändern, müssen Sie den dritten Parameter angeben abläuft. Die Definition dieses Parameters kann auf zwei Arten erfolgen:

* Stellen Sie die Zeit mit () otnostitelno Gültigkeit, ist die Anzahl der Sekunden, um das Speichern von Cookies auf dem hinzugefügt. Zum Beispiel kann das Cookie für zwei Stunden , um festzustellen , ist notwendig , zu schreiben: setcookie("test 1", "это тестовая куки", time() + 3600 * 2); // 3600 - количество секунд в часе - setcookie("test 1", "это тестовая куки", time() + 3600 * 2); // 3600 - количество секунд в часе setcookie("test 1", "это тестовая куки", time() + 3600 * 2); // 3600 - количество секунд в часе

* Die zweite Möglichkeit - die Aufgabe der absoluten Cookie Ablaufdatum. Es ist mit mktime () Funktion installiert, die zum Entfernen von Cookies ein bestimmtes Datum zurückgibt. Wenn Sie die Cookie - Laufzeit bis Mitternacht gesetzt werden soll am 1. September 2003, ist es notwendig , das Cookie zu bestimmen , so: setcooikie("test 2", "куки с абсолютной датой удаления", mktime(0, 0, 0, 9, 1, 2003);

Optional Weise den Umfang der Cookie in einem bestimmten Verzeichnis zu begrenzen. Und in diesem Bereich umfasst alle Pfade von dem Wert in diesem Parameter zu starten. Zum Beispiel:
setcookie("test 3, "", 0, "/mus");

Wir setzen ein Cookie, überspringen Sie einen Parameterwert und Zeit und Festlegung des Umfangs aller Möglichkeiten, die mit der Zeichenfolge "/ Mus" beginnen, das heißt, dies umfasst das Verzeichnis "/ Musik /" und "/ Museen /". Um den Weg zu bestimmen, muss der Pfad durch einen Schrägstrich durchgeführt werden. Das ist das Cookie Verzeichnis "/ Mus" zu begrenzen, war es notwendig, in dem Parameter "/ Mus /" zu schreiben.

Ein weiterer optionaler Parameter ist der Parameter das Cookie innerhalb einer bestimmten Domäne zu bestimmen. Und der Wert dieses Parameters "someserver.com" entspricht nur auf die Website mit der Adresse http://someserver.com und Wert ".someserver.com" Match bereits http://someserver.com und http: //mail.someserver. com und http://my-someserver.com , das heißt, alle Domains mit dieser Linie endet.

Zuletzt setcookie () Parameter gibt an, dass das Cookie über eine sichere Verbindung gesendet werden soll (HTTPS). Dieser Parameter ist erforderlich, wenn Sie Cookie mit Vertraulichkeit der Daten zu installieren.
setcookie("my_cookie", $value, time() + 3600 * 24 * 5, "/", ".myphp.dem.ru", 1);

Lesen Cookie.
Appell zu setzen Cookie durch ihren Namen geht. Zum Beispiel, oben mit dem Beispiel weiter, können Sie das Cookie wie folgt lauten:
echo "У вас сохранены следующие данные:<br>";
echo $my_cookie;


Der Zugriff auf die im Cookie gespeicherten Daten, kann auch das Array auftreten durch $ HTTP_COOKIE_VARS. Es ist ähnlich wie andere ähnliche Anordnungen, wie beispielsweise $ HTTP_POST_VARS und andere, und enthält alle Werte aus dem Cookie gelesen wurden.

Löschen von Cookies.
Cookie löschen, einen neuen Cookie mit dem ohne weitere Einstellungen entfernt Namen zu senden.

Zum Beispiel:
$data = $my_cookie;
setcookie("my_cookie");
echo "Следующие данные были удалены:<br>" . $data;

Die regelmäßige Anwendung.



Diese Lektion ist ein bisschen nicht in eine logische Kette unserer Klassen passen, und wurde von "öffentlichen Druck" erstellt, die auf Antrag der Leser ist, und wird zu regulären Ausdrücken und Funktionen gewidmet werden, um mit ihnen zu arbeiten. Wahrscheinlich wird meine Berechnungen, dass Artikel Alexander Grimalovskogo "Reguläre Ausdrücke" ausreichend sein, um das Thema zu verstehen, erwies sich als falsch sein.

Also, in der Hoffnung, dass Sie den oben genannten Artikel gelesen haben, beginnen wir die heutige Lektion.

Reguläre Ausdrücke selbst sind nicht neu, prevnesennoy PHP. In der einen oder anderen, sind sie für eine recht lange Zeit und sind ein sehr leistungsfähigen Mechanismus für die Arbeit mit String-Daten verwendet.

Ein regulärer Ausdruck ist eine Art Schablone, die für verschiedene Aktionen verwendet wird, in Abhängigkeit von der Funktion, die einen regulären Ausdruck verwendet. Sonderzeichen werden verwendet, um eine Vorlage zu spezifizieren.

Die Funktionen arbeiten mit regulären Ausdrücken.
Es muss gesagt werden, dass sowohl PHP einen eigenen Mechanismus hat mit regulären Ausdrücken (POSIX) für die Arbeit, und von einem anderen Server der Programmiersprache Perl entlehnt. sie sind von außen, einfach durch die Namen von Funktionen zu unterscheiden: die erste Art-Funktion mit dem Zeichen "ereg" beginnen, und die zweite - "Preg".

Jedoch sind die Funktionsnamen nicht der einzige Unterschied zwischen ihnen. Zuallererst sie enthalten einige Unterschiede in der Syntax von regulären Ausdrücken. Also, Perl-like Funk Begrenzungszeichen erfordern: $str = "регулярное выражение"; // просто строка
$preg = preg_replace("/р.+е/i", "<i>[вырезано]</i>", $str);
$ereg = eregi_replace("р.+е", "<i>[вырезано]</i>", $str);
echo $preg."<br>".$ereg;
$str = "регулярное выражение"; // просто строка
$preg = preg_replace("/р.+е/i", "<i>[вырезано]</i>", $str);
$ereg = eregi_replace("р.+е", "<i>[вырезано]</i>", $str);
echo $preg."<br>".$ereg;

Wie Sie sehen können, verwenden wir die Ersatzfunktion des Strings mit regulären Ausdrücken. Achten Sie auf die Template-Funktion preg_replace: als Trennzeichen Schrägstriche hier zu erscheinen, und nach dem Endbegrenzer muss der Modifikator i, was darauf hinweist, dass das Muster Groß- und Kleinschreibung ist. Der gleiche Effekt wird durch Verwendung von POSIX-Funktionen mit dem Suffix i (eregi_replace) erreicht.

preg_replace Funktion in dem Beispiel die sogenannten "Gier" gezeigt und bedeckte die ganze Zeile, die mit dem Buchstaben "p" und endet mit "e" beginnt. Machen Sie die Funktion nicht "gierig" Modifikator hilft U.

Funktion finden Sie den Mindestabstand zwischen den Buchstaben "p" und "f" und ersetzen Sie es mit der angegebenen Zeichenfolge.

eregi_replace Funktion zeigte auch, "Gier", aber diese Ordnung nicht ändern kann, wie in POSIX-Funktion, die durch die Verwendung von Modifikatoren zur Verfügung gestellt.

Beispiele für reguläre Ausdrücke.

Transferzeit zum Standardzeit Unix.

Angenommen, wir haben eine Datenbank oder andere Quelldaten in folgendem Format gespeichert:
Stunden: Minuten: Sekunden - Tag.Monat.Jahr
Aber aus irgendeinem Grund (zum Beispiel aus Redesign der Website), müssen wir das Datum in der folgenden Form angezeigt:
Tag.Monat.Jahr Stunden: Minuten

Wie Sie sich vorstellen können, dies manuell tun - verrückt, so schreiben wir ein Skript, das die erste Stufe führen Datum der Form Stunden betragen: Minuten: Sekunden Monat / Tag / Jahr, und dann strtotime () verwenden, übersetzt diese Aufzeichnung in Standardzeit UNIX-Funktionen dass wir in der Lage zu zeigen, wie Sie möchten.

Die interessanteste - die erste Stufe. Es ist etwas, das wir bei der Verwendung von regulären Ausdrücken interessiert sind. $str = "12:57:43 - 10.03.02"; // $str содержит некоторую дату
$str = preg_replace("!(\d{2})\.(\d{2})\.(\d{2})!", "\\2/\\1/\\3", $str);
; $str = "12:57:43 - 10.03.02"; // $str содержит некоторую дату
$str = preg_replace("!(\d{2})\.(\d{2})\.(\d{2})!", "\\2/\\1/\\3", $str);

Mit Hilfe des regulären Ausdrucks ändern wir das Aufnahmeformat von Tag, Monat und Jahr, jedes Element, das die Klammern trennt. Im zweiten Parameter der Funktion, verweisen wir auf die Ergebnisse der Konformitäts in Klammern. Hier ist, wie es funktioniert:

    \\ 0 - enthält einen String an das gesamte Muster entspricht (in unserem Beispiel "03/10/02").
    \\ 1 - enthält Symbole nur mit dem ersten Element entspricht, in Klammern (zB "10").
    \\ 2 - enthält Symbole nur auf das zweite Element, in Klammern (dh "03") entspricht.
    usw.


Zu diesem Zeitpunkt erhalten wir ein Datum "00.57.43 -. 10/03/02" Jetzt bringen wir es bis zum Ende.
$str = str_replace("-", "", $str); // вырезаем знак "-"
$time = strtotime($str);


Jetzt können Sie die Variable $ Zeit nutzen, wie es will.