/tutorial-sessions_cookies.html PHP Cookies und Sessions - Cookie delete und Erstellen sowie Session Erzeugung
  PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Downloads Trennlinie Was brauche ich ? Trennlinie Entwickler Jobs Trennlinie Kontakt Trennlinie Impressum Buttons
 
 
Menu
Allererste PHP Schritte
- Webserver Installation
- PHP Editor Installation

PHP Grundlagen
- PHP Grundwissen
- Mein erstes Programm
- Kommentare einfügen
- Variablen
- PHP+HTML mischen
- If Abfragen
- Rechenarten
- Arrays
- Schleifen
- Funktionen
- Klassen
- Includes
- Sessions und Cookies
- Login mit Sessions
- Login mit Datenbank
- Referer auslesen
- Wert aus Datenbank
- Variablen übergeben

MySQL Grundlagen
- Was ist das ?
- Erste Schritte
- Verbindung herstellen
- Einfache SQL Befehle
- SQL Injection

Häufig gefragt
- Was ist Adwords ?
- Interessante Links
- Wasserzeichen mod_rewrite
- Thumbnails erstellen
- PHP Gästebuch
- PHP Header
- Webseiten auslesen
- Socket Verbindungen
- E-Mail Adressen prüfen
- E-Mails versenden
- $_GET & $_POST
- Datenbank sichern
- Server DDOS Angriffe Abwehren
- Webhosting - Worauf ist zu achten ?
- Fachübersetzungen

Interessante Artikel
- Soft-Skill-Zertifizierung
- Sicherheits Workshops


Sessions und Cookies

Bevor wir zu den Datenbanken (MySQL) und deren Behandlung kommen denke ich sollte man den Einsatz von Sessions und Cookies kennen. Diese bieten neben den Datenbanken auch die Möglichkeit Daten komfortabel über einen gewissen Zeitraum zu speichern. Der große Unterschied zu Datenbankanwendungen ist, dass Datenbanken sicher für größere Speichermengen gedacht sind, die nicht nach einer gewissen Zeit "verfallen" sollen. Sessions und Cookies werden eingesetzt um bestimmte Daten die man während der Surfer auf der Homepage ist temporär zu sichern - also für einen gewissen Zeitraum.

Unterschied Session & Cookie


SESSION: COOKIE:
Lebensdauer: Bis der Browser geschlossen wird, oder bis man es per Befehl zerstört. Bis das Cookie abläuft. Man kann zeitlich festlegen wann dies sein soll, oder es löschen indem man die Gültigkeit in die Vergangenheit datiert und überschreibt.
Speicherort: Auf dem Server. Beim Surfer auf der Festplatte.
Vorteile: Nicht so leicht manipulierbar, da es auf dem Server abgelegt wird und nicht beim Surfer. Es ist nur kurzfristig gültig (Sicherheit). Der User kann auch beim erneuten Besuch eingeloggt sein, ohne die Daten erneut eingeben zu müssen.


Sessions/Cookies von fremden Homepages auslesen

Es ist nicht möglich von einer anderen Homepage die Sessions zu lesen, da diese wie oben beschrieben Serverseitig gespeichert werden. Jetzt werdet Ihr denken: "Ok, aber Cookies liegen ja beim Surfer, die kann man bestimmt auslesen". Nein !

Man kann keine Cookies auslesen, die nicht von der eigenen Seite stammen. Man kann nur die Cookies auslesen, die auch für die eigene Domain beim Surfer gespeichert wurden.

TIP: Genau das kann Probleme bei "Weiterleitungs URLs" machen, die eigentlich andere Internetadressen in einem Frame darstellen. Es gibt tausende von Anbietern, die kostenlose Domains anbieten, die Weiterleitungen sind. Man registriert sich also umsonst eine kostenlose Weiterleitung, damit die Internetadresse in der Browserzeile schöner aussieht. Der geladene Seiteninhalt ist aber von einer anderen Adresse wie oben angezeigt wird, da der Anbieter der Weiterleitungen den neuen Inhalt in Frames lädt. Speichert man jetzt einen Cookie beim User, kann es passieren dass das Cookie gültig für die Adresse der Weiterleitung ist und nicht für die wirkliche eigene Adresse, auf der die Homepage wirklich ist. Will man nun Cookies auslesen, die man selbst gespeichert hat verbietet dies die Standardsicherheitseinstellung des Internetexplorers und man kann es nicht auslesen (Auslesen von Drittanbietercookies).

Dies sei als Tip angemerkt, wenn man Probleme mit Cookies hat und andere Seiteninhalte in Frames von anderen Internetadressen anzeigen lässt ! Dann sollte man sich darauf besinnen, dass das Problem genau dadran liegt. Aber in den heutigen Zeiten sollte jeder der ein bischen mit dem Web rumspielt, 1-2 Euro für eine Domain übrig haben.

Sessions oder $_SESSION

Wenn ich Sessions benutze, dann entstehen diese in dem Moment, wo der Surfer das erste mal mit seinem Browser meine Homepage betritt. Ich kann nun fortlaufend Daten in der Session speichern. Dem Surfer wird praktisch eine "Nummer" zugewiesen, die sogenannte Session ID (man liest auch oft von SID). Diese Session bleibt dann solange erhalten wie er den Browser geöffnet hat. Macht er den Browser zu und öffnet einen neuen, dann erhält er beim Betreten der Seite wieder eine neue Session ID.

Wie starte ich eine Session ?

Hierfür benötigen wir den session_start(); Befehl:

<?php
    session_start
();
?>


Jetzt gibt es ein Array. Arrays haben wir schon in dem Kapitel "Arrays" behandelt. Das Array heisst $_SESSION. In diesem Array können wir sämtliche Informationen speichern die wir möchten und sie bleiben die ganze Zeit erhalten, bis der Surfer den Browser schliesst. Es gibt Server, da werden die Sessions in der Adresszeile vom Browser immer mit angezeigt und es gibt auch welche wo man diese nicht explizit sieht (je nach Servereinstellung). Da Sessions serverseitig gespeichert werden, könnte jemand wenn er die Internetadresse mit der Session hat theoretisch damit unheil anrichten (mit Ihrem Useraccount eingeloggt sein, oder ähnliches).

Jetzt speichern wir ein paar Daten in der $_SESSION:

<?php
    session_start
();

    
$_SESSION["tier"] = "Hund";
    
$_SESSION["farbe"] = "Schwarz";
?>


Damit die Daten während der gesamten Laufzeit, bei jedem erneuten Seitenaufruf für meine PHP Skripte zur Verfügung stehen muss ich immer zuerst SESSION_START();am Anfang meines Skriptes machen und das BEVOR AUCH NUR 1 ZEICHEN AN DEN BROWSER GESCHICKT WIRD ! Schreibt man auch nur einen Buchstaben bevor man den Befehl gemacht hat, dann bekommt man Fehlermeldungen. Dies ist wichtig zu beachten. Häufig treten solche Fehler auf, wenn man unbeabsichtigt beim Start des PHP Codes oder am Ende ein Leerzeichen am Ende der Zeile hat oder einfach ein Return gedrückt hat. Auf den ersten Blick sieht man die Ausgabe nicht , aber sie ist da und verursacht Fehler (vor dem <?php oder nach dem ?>).

Will man manuell eine Session zerstören, da der User sich zum Beispiel ausgeloggt hat kann man die Session auch mit SESSION_DESTROY(); zerstören.

Interessanter Session Workshop: www.MyWebSolution.de


Cookies oder $_COOKIES

Cookies speichern Daten genauso wie eine Session. Ein Cookie wird jedoch beim Surfer auf der Festplatte gespeichert und nicht auf dem Server. Man kann dem Cookie auch sagen wie lange es existieren darf, bevor es ungültig wird. Wenn man ein Cookie erstellt gibt man ihm eine Lebensdauer mit. Cookies setzen tut man mit dem Befehl setcookie();. Wenn nach dem Setzen des Cookies dann die nächste Seite geladen wird , stehen die Cookieeinträge in $_COOKIES zur Verfügung.

Ein Beispiel:

<?php
    $meinwert 
"Hallo Welt";

    
setcookie("Test"$meinwert);
    
setcookie("Test"$meinwerttime()+3600); # 1 Stunde gültig
?>

Dieses Cookie ist nun eine Stunde gültig (3600 Sekunden). Den Inhalt des Cookies kann man nun beim Laden der nächsten! Seite kontrollieren und ausgeben:

<?php
    
echo $_COOKIE["Test"];
?>

Cookies löschen:

Will ich dieses Cookie nun wieder löschen, dann gibt es keinen expliziten Befehl um dies zu tun. Man muss praktisch wieder genau den gleichen Cookie setzen und die Gültigkeit des Cookies in die Vergangenheit legen.

<?php
    setcookie
("Test"""time() - 3600);
?>

Hier haben wir die Gültigkeit auf vor! einer Stunde gesetzt - es ist also ungültig und ist somit praktisch gelöscht !

Häufiger Fehler: wenn man keine echte Domain hat und sich einer Weiterleitung bedient, dann kann es zu Problemen kommen. Es gibt ja Möglichkeiten zum Beispiel mit einer Frame Weiterleitung eine Domain oben in der Adresszeile zu lassen, die ja eigentlich nicht die wirkliche Adresse ist. United-Domains und andere Provider hatten in der Vergangenheit alle diese Möglichkeit für ihre Kunden. Setzt man nun ein Cookie kann es zu problemen kommen, weil das Cookie praktisch fuer eine fremde Domain gesetzt wird und man darf als Skript ja nur die Cookies auslesen, die für die eigene Domain sind - dies gibt Konflikte und dann funktionieren die Cookies nicht so wie man es von Ihnen erwartet, was aber auch logisch ist. Ihr Skript denkt es liegt auf "web1.server1.de" und oben in der Adresszeile steht für den Surfer dank Frame Weiterleitung "www.abc.de", worauf dann auch die Cookies gespeichert werden. Alleine die Standardeinstellung vom Internetexplorer steht schon hoch genug, um das Auslesen dieser Cookies dann zu verhindern.





<<<< zurück Kapitelauswahl vorwärts >>>>




Kommentare: (absteigend sortiert)

Hier stehen noch alte Kommentare, die direkt über die Webseite gemacht wurden. Es kann dort nicht weiter kommentiert werden. Bitte nutzt dafür die Facebook Kommentare.

.:: 27.02.14 - 18:39 Uhr :: Name: php_rookie ::.
Also, ich lerne PHP erst seit knapp 4 Wochen. Ich schicke meine Daten zwischen Lehrgang und zu Hause immer per E-Mail hin und her. Im Kurs arbeite ich mit Windows und xampp, daheim mit OS X und mamp. Urplötzlich laufen meine php-Dateien nicht mehr auf dem lokalen Server (der aber eingeschaltet ist).
Habe mamp nun komplett neu installiert, nachdem ich zwischendurch probeweise mit xampp noch mehr Probleme hatte (Apache lief nicht).
Trotzdem funzt es immer noch nicht.
Können irgendwelche Cookie-Einstellungen Schuld daran sein? Kann es mit dem OS X-Sicherheitsupdate zusammenhängen?

Gruß,
php_rookie

.:: 25.02.14 - 20:23 Uhr :: Name: Daniel ::.
Hallo,

ich bin inzwischen ein Stammgast hier geworden und nutze die Seite immer wieder als nachschlagewerk, Lob an den ersteller.

Eine Sache Jedoch verstehe ich nie, wenn weder cookies noch Sessions ausgelesen werden können, wie schafft es dann zB Facebook, das man auf anderen Seiten wie zB. Myvideo.de automatisch eingelogged ist um seine Kommentare zu verfassen, denn als iframe läuft das ganze nicht.

lg
Anmerkung Charly: Nicht mit php ,... die verwenden aber Javaskript und verschicken Daten an die Server

.:: 17.09.13 - 09:23 Uhr :: Name: xray ::.
Vielen Dank! Hat mir sehr geholfen.

.:: 25.05.11 - 11:49 Uhr :: Name: Snouty (www.snouty.ch) ::.
Das, was du da über Cookies schreibst (dass man keine Cookies von einer anderen Website auslesen kann), stimmt nicht ganz. Es geht mit Crossside-Scripting (XSS) und in Windows kann man sogarmit einer Editierung der hosts-Datei dem Benutzer (und auch dem Browser) eine andere Seite vorgaukeln.

LG

.:: 07.08.10 - 10:43 Uhr :: Name: Charly ::.
Ja, hat er ;-) und das Semikolon am Ende der Zeile.

<?php
SESSION_START();
echo $_SESSION["username"];
?>

Gruß
Charly

.:: 02.08.10 - 13:36 Uhr :: Name: Max ::.
Kann es sein dass du das "echo" vergessen hast ?

MfG
Max

.:: 28.07.10 - 11:20 Uhr :: Name: freude am googlen!! ::.
Hallo

Ich habe das Datenbank Login von dir benutzt, und ich speichere in einer Session den Usernamen, also so:

<?php
SESSION_START();

$_SESSION["username"] = $_POST["username"];
?>

Wenn man dann 2 Skripte weitergeht und dort eingibt

<?php
SESSION_START();
$_SESSION["username"]
?>

.. wird nichts ausgegeben!



.:: 23.05.10 - 11:58 Uhr :: Name: Charly ::.
Hallo anonym ;-)

Das heisst der Login erfolgt in dem einem Frame und die Weiterleitung in dem anderen Frame ?

Du könntest den Erfolg des Logins in der Session speichern. Wenn Du aber verschiedene Frames hast, dann musst Du darauf achten, dass beide Skripte - sowohl der Login in dem einen Frame, als auch das Skript in dem anderen Frame auf die gleiche Session zugreifen.

Gut mit Beispiel beschrieben findet man dies zum Beispiel bei php.net unter: http://de2.php.net/manual/de/function.session-start.php

Gruß
Charly

.:: 09.05.10 - 21:47 Uhr :: Name: anonym ::.
zu häufige fehler bei cookies:

ich bediene mich einer frame-weiterleitung, aber wie kann ich dann das passwort u. ä. speichern??









Content
 
  Bottom Design  


PepperTools.de Software Download | Software Shop
www.imilkowski.eu - Software Programmierung und Webdesign


 


Persönliche Empfehlung
Mit Wix.com eine kostenlose Homepage erstellen ? Einfach, schnell und ohne Vorkenntnisse.