mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-10-20 02:05:05 +02:00
340 lines
14 KiB
HTML
340 lines
14 KiB
HTML
|
<html>
|
|||
|
<head>
|
|||
|
|
|||
|
<title>PHP-Einfach.de - PHP Einführung - Sessions</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>Sessions</h4>
|
|||
|
|
|||
|
Mit Sessions hat man die Möglichkeit, bestimmte Daten während einer Folge von Aufrufen eurer Website festzuhalten.<br>
|
|||
|
Dem Besucher wird eine einzigartige <b>Session-ID</b> zugeordnet. Somit kann PHP den Besucher genau Identifizieren. Diese ID wird entweder als Cookie gespeichert oder mit an die URL gehängt.<br><br>
|
|||
|
|
|||
|
Mit Sessions könnt ihr jetzt theoretisch unendlich viele Variablen, ink. Werte, für einen Besucher speichern, z.B. seinen Username, was er ganz am Anfang in ein Formular eingegeben hat und vieles mehr.<br>
|
|||
|
Diese Werte könnt ihr später ausgeben und damit auch arbeiten, z.B. überprüfen lassen.<br> <br>
|
|||
|
|
|||
|
<b>Sicherheit und Anwendungsbereich</b>
|
|||
|
Session bieten zwar keine 100%tige Sicherheit, dennoch sind sie relativ sicher.<br>
|
|||
|
|
|||
|
Eine entführte (geklaute) Session-ID ermöglicht dem Dieb, auf alle Daten zuzugreifen, die mit dieser Session-ID verbunden sind. <br><br>
|
|||
|
|
|||
|
Man benutzt bei sehr vielen Scripts Sessions, z.B. Loginsysteme (Foren & Portale), Warenkörbe etc., deswegen lohnt es sich immer, diese Funktion zu erlernen.<br><br>
|
|||
|
|
|||
|
|
|||
|
<b>Wie bekommt der Angreifer denn die Sesion ID herraus?</b> <br>
|
|||
|
Das passiert vor allem, wenn die andere Person eine URL mit der Session ID an eine weitere Person weitergibt. Dies kann aber auch passieren, wenn die Session IDs in den Logfiles auftauchen. <br><br>
|
|||
|
|
|||
|
<b>Session ID durch Zufall erraten</b> <br>
|
|||
|
Natürlich kann der Dieb auch eine Session ID erraten, allerdings ist dies sehr unwahrscheinlich. <br><br>
|
|||
|
|
|||
|
<a target="_blank" href="einf_php_session_erraten.php.htm" tppabs="http://www.php-einfach.de/offline/einf_php_session_erraten.php">Wahrscheinlichkeitsrechnung anschauen</a> <br><br>
|
|||
|
|
|||
|
<br>
|
|||
|
<b>Erste Schritte</b> <br>
|
|||
|
Ganz oben auf der Site, <b>bevor</b> wir irgend etwas Ausgeben, egal ob mit PHP oder mit HTML, muss folgendes stehen:
|
|||
|
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
session_start();
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Mit <b>session_start();</b> sagen wir dem PHP Script, dass diese Seite mit Session arbeitet.<br>
|
|||
|
Dieser Code <b>muss immer</b> ganz oben stehen, wenn ihr mit irgendwelchen Session Befehlen arbeitet.<br>
|
|||
|
<br>
|
|||
|
|
|||
|
|
|||
|
Hier sind zwei mögliche Fehlerquellen:<br><br>
|
|||
|
<b>1.</b> <i>Cannot send session cookie - headers already sent by</i>
|
|||
|
Wenn diese Fehlermeldung erscheint, dann ist irgendwo vor dem kleinen Script eine Ausgabe. Eine leere Zeile (Zeilenumbruch) oder ein Space reicht schon aus.<br><br>
|
|||
|
|
|||
|
<b>2.</b> <i>Warning: session_start() [function.session-start]: open(...) failed: No such file or directory</i><br>
|
|||
|
Wenn diese Warnung erscheint, dann ist der angegebene Pfad zur Speicherung der Session Datei nicht verfügbar.<br><br>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Als nächstes schauen wir, wie wir eine Session-Variable registieren:
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
$_SESSION['name'] = "wert";
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Falls du eine ältere PHP Version als <b>4.1.0</b> benutzen, musst du <b>$HTTP_SESSION_VARS['name']</b> benutzen.<br><br>
|
|||
|
|
|||
|
Um den obigen Wert auszugeben, speichern wir vorher die Session-Variable in einer Variable
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
$name = $_SESSION['name'];
|
|||
|
echo $name;
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Wenn wir keine extra Variablen benutzen möchten, so können wir den Session Befehl nicht direkt in die Zeichkette schreiben.<br><br>
|
|||
|
|
|||
|
So geht es aber:
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
echo "Hallo ".$_SESSION['name']." Mueller";
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Dies scheint zwar nicht viel zu sein, allerdings können wir eine Session-Variable genauso behandeln, wie eine normale Variable, nur müssen wir manchmal auf die Anführrungzeichen achten..<br><br>
|
|||
|
|
|||
|
Um eine Session zu registieren, benutzt man normalerweise folgenden Script:
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
if (!isset($_SESSION['name']))
|
|||
|
{
|
|||
|
$_SESSION['name'] = "Klaus";
|
|||
|
}
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Hier wird zuerst überprüft ob, es die Session-Varibale schon gibt. Falls es sie nicht gibt, wird sie registriert.<br><br>
|
|||
|
|
|||
|
Würde wir anstatt <b>!isset</b> <b>isset</b> schreiben, könnten wir überprüfen, ob die Session registriert wurde, oder nicht. Dies benutzt man bei Logins.<br><br>
|
|||
|
|
|||
|
Um alle Session-Daten der Sitzung zu löschen, benutzt man <b>session_destroy()</b>
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
session_destroy();
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Dieser Befehl löscht <b>alle</b> Daten der Session. <br>
|
|||
|
Dieser Befehl kann nur auf Seiten eingesetzt werden, die mit <b>session_start()</b> beginnen. Dies ist bei allen Session-Befehlen der Fall.<br><br>
|
|||
|
|
|||
|
Um eine einzelne Session zu deaktivieren, benötigt man <b>unset</b>
|
|||
|
<font color="#606060">
|
|||
|
<pre>
|
|||
|
<?php
|
|||
|
unset($_SESSION['name']);
|
|||
|
?>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
Dieser Befehl löscht die Werte für die Session-Variable <i>name</i>. <br><br>
|
|||
|
|
|||
|
|
|||
|
<h3>Beispiel</h3>
|
|||
|
Damit das etwas verständlicher wird, ist hier ein kleines Beispiel.
|
|||
|
Dabei gibt man zuerst einen Wert in ein Formular ein: <br>
|
|||
|
formular.html:
|
|||
|
<font color="#606060">
|
|||
|
<pre><form action="seite1.php" method="post">
|
|||
|
Dein Name: <br>
|
|||
|
<input type="Text" name="name">
|
|||
|
<input type="Submit">
|
|||
|
</form>
|
|||
|
</pre>
|
|||
|
</font>
|
|||
|
|
|||
|
|
|||
|
seite1.php
|
|||
|
<font color="#606060">
|
|||
|
<pre><?php
|
|||
|
session_start(); //Ganz wichtig
|
|||
|
$name = $_POST['name'];
|
|||
|
|
|||
|
if(!isset($name))
|
|||
|
{
|
|||
|
$name = "Gast";
|
|||
|
}
|
|||
|
|
|||
|
//Session registieren
|
|||
|
$_SESSION['username'] = $name;
|
|||
|
|
|||
|
//Text ausgeben
|
|||
|
echo "Hallo $name <br>
|
|||
|
<a href=seite2.php>Weiter</a>";
|
|||
|
?></pre>
|
|||
|
</font>
|
|||
|
|
|||
|
seite2.php
|
|||
|
<font color="#606060">
|
|||
|
<pre><?php
|
|||
|
session_start(); //Ganz wichtig
|
|||
|
|
|||
|
//In $name den Wert der Session speichern
|
|||
|
$name = $_SESSION['username'];
|
|||
|
|
|||
|
//Text ausgeben
|
|||
|
echo "Du hei<65>t immer noch: $name";
|
|||
|
?></pre>
|
|||
|
</font>
|
|||
|
|
|||
|
|
|||
|
Dies ist ein ganz simples Beispiel, zeigt aber gleich die Stärke von Sessions.<br>
|
|||
|
Bei dem Formular geben wir unseren Namen an, diese Daten werden dann an seite1.php gesendet. Dort werden sie abgefragt, und der <i>name</i> aus dem Formular wird in der Session <b>username</b> gespeichert.<br>
|
|||
|
Wenn wir dann auf den Link klicken, und auf seite2.php gelangen, so können wir dort weiter den Namen des Besuchers (der Names aus dem Formular) ausgeben.<br>
|
|||
|
Dies könnte man über beliebig viele Seiten weiterführen, mit unbegrentzt vielen Session-Variablen.<br><br>
|
|||
|
|
|||
|
|
|||
|
Es gibt noch weitere, weitaus sinnvollere Beispiele, z.B. <a href="http://www.php-einfach.de/tuts_php_login_sessions.php">Login Sessions</a> bzw. <a href="http://www.php-einfach.de/tuts_php_login_sessions_dateien.php">Login mit Sessions und Dateien</a>.<br><br>
|
|||
|
|
|||
|
|
|||
|
Gut jetzt haben wir die wichtigsten PHP-Befehle kennen gelernt, jetzt wird es Zeit, etwas mit <a href="einf_mysql_anfang.php.htm" tppabs="http://www.php-einfach.de/offline/einf_mysql_anfang.php">MySQL</a> zu arbeiten. Damit kann man viele Sachen viel leichter realisieren.<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>
|