This page has been robot translated, sorry for typos if any. Original content here.

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



file_exists
Bevor auf einer Datei auf den Betrieb einsteigen, ist es oft notwendig, um sicherzustellen, dass die angegebene Datei vorhanden ist. Dies ist der Zweck Funktion file_exists. Diese Funktion kann nur zwei Werte zurück, wie Sie sich vorstellen können, TRUE (wenn die angegebene 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 gewünscht haben zu prü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 unabhängig von seinem Standort-Verzeichnis auf dem lokalen Server liegt.

Dateigröße

Wie der Name schon sagt, bestimmt die Funktion, die Größe der Datei und gibt es in Bytes. Nützlich, wenn Sie die Datei für die darin enthaltenen Informationen überprüfen möchten (wie Sie wissen, eine leere Datei enthält 0 Bytes), und es ist auch möglich, die Dateigröße eine bestimmte Grenze überschritten zu überprüfen.


Datei

Diese Funktion ist bereits direkt mit der Datei. Sie liefert den Inhalt der Datei, und es tut 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.

Darüber hinaus ist die Möglichkeit einer Zusammenführung aller Elemente des zurückgegebenen Arrays in einer einzigen Variablen. Dies wird durch den Betrieb der Funktion implodieren Arrays durchgeführt. $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 die Anzahl von Bytes, wie Sie mögen, als ein Zeichen ein Byte entspricht). Aber beachten Sie, dass im Gegensatz zu der Datei, ist diese Funktion nicht einen Auftrag enthält 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 ist, arbeiten die folgenden Dateiverwaltungsfunktionen 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 Betriebsmodi mit der Datei. Sie werden nach dem Dateinamen angegeben und sind die folgenden Bezeichnungen:
    „R“ Datei geöffnet wird nur für seinen Inhalt zu lesen.
    „R +“ Öffnen einer Datei zum Lesen und Schreiben.
    „W“ Die Datei wird zum Zweck der Aufzeichnung geöffnet.
    „W +“ eine Datei zum Lesen und Schreiben öffnen.
    „A“ Datei zum Schreiben am Ende der Datei geöffnet ist (append).
    „A +“ öffnet zum Lesen und Anhänge.


fgets

Datei-Lesefunktion, die open-Funktion fopen. Aber im Gegensatz zu einer Datei, diese Funktion für jedes Mal seiner Ausführung gibt nur eine Zeile der Datei, während es die internen Dateizeiger auf die nächste Zeile bewegt, die sich auf dem nächsten Aufruf die 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 sind die Länge, das die maximale Länge der Leitung in der Datei zum Lesen anzeigt. Wenn das Leitungsvolumen diese Zahl überschreitet, dann gibt der Funktion, es zu der „verkürztes“ Form mit einem Volumen von der Anzahl von Bytes Länge. Standardmäßig wird dies auf 1024 Bytes festgelegt, oder einem Kilobyte. Besonders achten Sie auf diese Option, wenn Sie große Dateien verwenden, da PHP-Laufzeitpuffer überlaufen können, wenn diese Dateien zu lesen (das Volumen wird in der Konfigurationsdatei angegeben), wird es zum Absturz bringen.



PHP und HTTP: Header



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

Zuerst ein paar Worte über die HTTP-Header selbst.

Gemäß der HTTP-Spezifikation unterstützt das Protokoll die Übertragung von Service-Informationen vom Server an den Browser, in Form von speziellen Titeln entworfen.

So HTTP-Header - es bedeutet, den Server mit einem Remote-Client zu kommunizieren. Jeder Header besteht normalerweise aus einer einzigen Zeile von ASCII-Text mit einem Namen und einem Wert. Sami Titel erschien nicht im Browser-Fenster, kann aber oft dramatisch die Anzeige des zugehörigen Dokuments ändern.

Der Mechanismus der HTTP - Header in PHP sendet.

Der Mechanismus des Sendens Headern in PHP wird durch header () Funktion dargestellt. Feature des HTTP-Protokolls ist, dass der Titel vor dem Versenden andere Daten gesendet werden soll, so dass die Funktion am Anfang des Dokuments aufgerufen werden muss, und soll wie folgt aussehen:
header("HTTP заголовок", необязательный параметр replace);

Ein optionaler Parameter annehmen kann Werte Typen Bool (wahr oder falsch) ersetzen und zeigt sollten vorherige Header dieser Art dort zu dem bestehenden Kopf ersetzt oder hinzugefügt werden.

Im Hinblick auf die Funktion header () wird häufig headers_sent () Funktion verwendet, die das Ergebnis als wahr im Falle einer erfolgreichen Übersendung eines Headers und andernfalls false zurückgibt.

Betrachten Sie die am häufigsten verwendeten HTTP-Header.

Cache-control.

"Cache-control:" Wert

Titelseite Caching Kontrolle. Im Allgemeinen ist diese Funktion eine der häufigsten Verwendung von Headern.

Dieser Header kann mit den folgenden Bedeutungen verwendet:

* No-cashe - Verbot-Caching. Wurde in den häufig aktualisierten Seiten oder Seiten mit dynamischen Inhalten. Seine deysvtie wie ein META-Tag "Pragma: no-cache".
* Public - Seiten-Caching-Lösung wie ein lokaler Client und ein Proxy-Server.
* Private - Lassen Sie nur die lokale Caching-Client.
* Max-age - Aktivieren der im Cache gespeicherten Dokuments 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

Er legt das Datum und die Zeit, nach der das Dokument veraltet betrachtet. Das Datum muss im folgende 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 00.00.00 GMT

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

Vielleicht ist die Verwendung des HTTP-Header-Caching zu 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 der 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 des Änderungsdatum setzen.

Möglich, die Seite zu machen wird immer dann 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. Der Effekt ist mit dem META-Tag Refresh vergleichbar:
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=someURL">

Zum Beispiel kann dieser Header wie folgt verwendet werden:
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 vorigen Lektion haben wir über die Beziehung des HTTP-Protokolls und die PHP-Sprache im HTTP-Header-Ebene. In dieser Lektion stellen wir noch eine weitere spezifische HTTP-Header - Cookie.

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

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 werden und können dort fast unbegrenzt haltbar.

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

Implementation Mechanismus von Cookies in PHP.
Umsetzungsmechanismus von Cookies, die von einer einzigen Funktion setcookie dargestellt (). Wie ist der Fall mit HTTP-Header, muss diese Funktion vor dem Senden alle Daten auf den Remote-Client nicht einmal „leer“ Zeichen erlaubt aufgerufen wird, dann gibt es eine Lücke, Zeilenumbrüche und so weiter.

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

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

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


Beachten Sie, dass Daten sendet, muss in Form einer Linie hergestellt werden, ein Versuch, das Array von Werten zu lesen vorher zu nichts führen ausgesendet.

Cookie, in dem obigen Beispiel gesetzt ist, wird unmittelbar nach dem Schließen des Browsers des Benutzers zerstört wird als Standard-Cookie-Laufzeit wird auf Null gesetzt. Um dies zu ändern, müssen Sie die dritte Option verfallen bieten. Die Definition dieser Parameter kann auf zwei Arten erfolgen:

* Stellen Sie otnostitelno die Gültigkeit, die Zeit () verwendet, um die die Anzahl der Sekunden, um das Speichern von Cookies wird 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 Methode - ein absolutes Verfallsdatum Cookie Ablauf einstellen. Es wird mit mktime () Funktion installiert, die zum Entfernen von Cookies ein bestimmtes Datum zurückgibt. Wenn es ein Leben lang Cookie bis Mitternacht ist die 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 von Cookies innerhalb bestimmter Verzeichnisse begrenzen. Und in diesem Bereich umfasst alle Pfade von dem Wert in diesem Parameter zu starten. Zum Beispiel:
setcookie("test 3, "", 0, "/mus");

Wir haben einen Cookie gesetzt, um einen Parameterwert und Zeit überspringt und den Umfang aller Möglichkeiten, um zu bestimmen, 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 abgeschlossen sein. Das ist das Cookie Verzeichnis „/ Mus“ zu beschränken, war es notwendig, in dem Parameter „/ Mus /“ zu schreiben.

Ein weiterer optionaler Parameter ist ein Parameter, die Cookie-Aktion innerhalb der angegebenen 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“ Spiel 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 das Cookie mit Vertraulichkeit der Daten zu installieren.
setcookie("my_cookie", $value, time() + 3600 * 24 * 5, "/", ".myphp.dem.ru", 1);

Cookie Lesen.
Beschwerde setzen Cookies durch ihren Namen geht. Zum Beispiel oben mit dem Beispiel fort kann das Cookie wie folgt gelesen werden:
echo "У вас сохранены следующие данные:<br>";
echo $my_cookie;


Zugriff auf in einem Cookie gespeicherten Daten, kann es auch durch die Anordnung auftritt $ HTTP_COOKIE_VARS. Es ist ähnlich wie andere ähnliche Anordnungen, wie $ HTTP_POST_VARS und andere, und enthält alle Werte aus dem Cookie gelesen wurden.

Löschen eines Cookies.
ein 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 die logische Kette unserer Klassen passen, und wurde von „öffentlichem Druck“ erstellt, die auf Antrag des Lesers ist, und wird zu regulären Ausdrücken und Funktionen gewidmet werden, um mit ihnen zu arbeiten. Wahrscheinlich meine Berechnungen, dass der Artikel Alexander Grimalovskogo „Reguläre Ausdrücke“ genug sein wird für das Verständnis des Themas, es war falsch.

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, waren sie für eine recht lange Zeit und sind ein sehr leistungsfähiger 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 die Vorlage zu definieren.

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

Allerdings sind die Funktionsnamen nicht der einzige Unterschied zwischen ihnen. Zunächst einmal, 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 Trenn hier schlitzt 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 unserer Probe zeigte, dass das so genannte „Gier“ und bedeckt die ganze Zeile, die mit dem Buchstaben „p“ und enden mit „e“ beginnt. Machen Sie die Funktion nicht „gierig“ Modifikator hilft U.

Funktion gefunden Mindestabstand zwischen den Buchstaben „p“ und „e“ und ersetzen Sie es mit der angegebenen Zeichenfolge.

eregi_replace Funktion zeigte auch „Gier“, aber diese Reihenfolge zu ändern, ist nicht mehr möglich, da die POSIX-Funktion durch die Verwendung von Modifikatoren zur Verfügung gestellt.

Beispiele für reguläre Ausdrücke.

Übersetzungszeit in Standardzeit Unix.

Angenommen, Sie haben eine Datenbank oder eine andere Quelle von gespeicherten Daten in folgendem Format:
Stunden: Minuten: Sekunden - Tag.Monat.Jahr
Aber aus irgendeinem Grunde (zum Beispiel einen Redesign) Wir müssen die Daten in folgendem Formular anzuzeigen:
Tag.Monat.Jahr Stunden: Minuten

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

Die interessanteste - die erste Stufe. Er 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 eines regulären Ausdrucks können wir die Aufzeichnung ändern Format von Tag, Monat und Jahr, wobei jedes Element der Isolate Klammern. Der zweite Parameter Funktion verweisen wir auf die Ergebnisse der Konformitäts in Klammern. Hier ist, wie es funktioniert:

    \\ 0 - enthält Zeichenfolge gesamtes Muster entspricht (in diesem Beispiel „03/10/02“).
    \\ 1 - Zeichen enthält, die nur auf das erste Element in Klammern (zB „10“) von Bedeutung sind.
    \\ 2 - enthält nur Symbole mit dem zweiten Element entsprechen, in Klammern (dh „03“).
    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.