PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Downloads Trennlinie Was brauche ich ? Trennlinie Kontakt Trennlinie Impressum & Datenschutz 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 ?

Interessante Artikel
- Cache leeren
- Website mit Video




Variablen von Datei zu Datei übergeben

Folgende Situation: wir haben zwei verschiedene Dateien, nennen wir die erste Datei login.php und die zweite ist unsere profil.php. Wir möchten nun eine Variable, welche in der login.php gespeichert wurde in der nächsten Datei weiter benutzen können. Wie greife ich auf die Variable in der zweiten Datei zu, wenn diese in einer anderen Datei gesetzt wurde ?

Hierzu müssen wir verschiedene Fälle betrachten und ein wenig Grundlagen erläutern.


Fall 1: die login.php included die profil.php Datei

Dies ist zugleich ein klassisches Beispiel dafür, wie man Daten mit POST übermittelt.

Wenn eine Datei eine andere Datei mit include(); einfügt, dann kann man in der zweiten Datei profil.php im Code auf alle Variablen zugreifen, die auch in der ersten Datei login.php gesetzt worden sind. Hierzu ein Beispiel, wie man mehrere Dateien ineinander "includen" kann. Include bedeutet nichts anderes, als das genau an dieser Stelle wo wir include("datei_xy.php"); schreiben der gesamte Quellcode von der Datei die wir in den runden Klammern angegeben haben für php zum abarbeiten eingefügt wird. So kann man einen sehr großen Programmcode in viele kleine Unterteilen, in verschiedenen Dateien abspeichern und dann mehrfach benutzen. Der Programmcode bleibt übersichtlich und ich weiss, dass ich um was am Login zu ändern an der login.php ändern muss. Wäre dies alles in einem einzigen Programmcode müsste ich die Zeilen für den Login warscheinlich aus tausenden von Zeilen raussuchen.

Datei: formular.html:

<form method="POST" action="login.php">
<b>Login</b><br>
<br>
Username: <input name="loginname"><br>
Passwort: <input name="loginpasswort" type=password><br>
<br>
<input type=submit name=submit value="Einloggen">
</form>

Datei: login.php:

<?php
    session_start
();

    
# Die Logindaten lauten Username: admin Passwort: 12345
    
$_logindaten = ARRAY("name"=>"admin""passwort"=>"12345");

    if (isset(
$_POST["loginname"]) && isset($_POST["loginpasswort"]))
        {
        if (
$_logindaten["name"] == $_POST["loginname"] &&
            
$_logindaten["passwort"] == $_POST["loginpasswort"])
            {
            
# Userdaten korrekt - User ist eingeloggt
            # Login und Logindaten speichern !
            
$_SESSION["login"] = 1;
            
$_SESSION["username"] = $_POST["loginname"];
            
$_SESSION["passwort"] = $_POST["loginpasswort"];
            }
        }

    if (
$_SESSION["login"] != 1)
        {
        
# Hier wird mit include der Quelltext von der formular.html für
        # den Parser geladen - und somit auch dieser Quellcode
        # ausgeführt. Danach steigen wir mit exit aus der weiteren
        # Abarbeitung des Programms aus !
        
include("formular.html");
        exit;
        }

    
# User ist eingeloggt, wird nur ausgeführt wenn Login erfolgreich
    # Mit Include laden wir den Quelltext der profil.php mit zu diesem
    # Quelltext, damit dieser auch abgearbeitet wird !
    
include("profil.php");
?>

Datei: profil.php:

<?php
    
echo "Eingeloggt ist der Benutzter ".$_SESSION["username"];
?>


In diesem Beispiel ist es nun so, dass das Formular für den Login nur angezeigt wird, wenn der User nicht eingeloggt ist. Gibt er einmal die Daten richtig ein, dann werden diese und der erfolgreiche Loginversuch in der SESSION gespeichert. Die Session kann nicht von aussen manipuliert werden. Dadurch dass die Daten dann in der Session verfügbar sind, können wir den Login überspringen und laden dann nur noch die profil.php.

Fall 2: wir leiten auf eine andere Datei weiter

Im zweiten Fall haben wir das Formular, die login.php und die profil.php . Die Dateien includen sich nicht gegenseitig. Erst wird die login.php ausgeführt - wenn der Login erfolgreich war, kommt man per Klick auf die nächste Datei. Die profil.php wird ausgeführt, ohne dass vorher die login.php ausgeführt wird - wie kommt man nun an die Userdaten die vorher eingegeben wurden ?

Hierfür gibt es zwei verschiedene Möglichkeiten !

a) man kann die Daten einmalig per GET übergeben

b) Man kann die Daten in der Session speichern und dann später in jeder anderen aufgerufenen Datei aufrufen, bis die Session zerstört oder der Browser geschlossen wird

Zu beidem will ich euch hier ein Beispiel geben !

GET und POST - der Unterschied: extra zu diesem Kapitel habe ich ein Extra Kapitel angelegt, welches kurz erklärt was GET und POST überhaupt ist und was die Unterschiede der beiden Daten Übertragungsarten sind - hier klicken -



Übergabe von Daten auf eine andere Datei mit GET

Datei: login.php:

<?php
    
# Diesen Benutzer wollen wir an die profil.php mit GET übergeben
    
$_benutzer "Heinrich";
?>

<a href="profil.php?name=<?=$_benutzer?>&nach=Mueller">Weiter ....</a>
    

Datei: profil.php:

<?php
    
echo "Übergeben wurde der Name " $_GET["name"];
    echo 
"<br>Nachname " $_GET["nach"];
?>

Hier wird der Name per GET übergeben. Dafür müssen wir den Namen über die Adresszeile des Browsers übergeben. Achtung: Groß- und Kleinschreibung nimmt auch PHP ganz übel - $name ist nicht das selbe wie $Name oder $nAme - das sind alles verschiedene Variablen. Beim Aufruf der nächsten Datei sind die Daten, die wir mit GET übergeben haben verfügbar. Nachteil des ganzen ist, dass diese Daten nur beim Aufruf der nächsten Datei verfügbar sind - geben wir diese dann nicht erneut wieder mit GET weiter, dann gehen diese verloren - sie bleiben nicht dauerhaft im GET gespeichert.




Übergabe von Daten von einem Skript an ein anderes mit SESSIONS (empfohlen)

Datei: login.php:

<?php
    
# Die Session muss immer zuerst gestartet werden, bevor
    # eine Ausgabe an den Browser erfolgt !!!
    
SESSION_START();

    
$_SESSION["username"] = "Heinz";
    
$_SESSION["uhrzeit"] = time();
?>
<a href="profil.php">Hier geht´s zur profil.php !</a>

Datei: profil.php:

<?php
    
# Session starten nicht vergessen !!! Sonst gibts keine Daten !
    
SESSION_START();

    echo 
"In der letzten Datei wurde der Benutzer " .
          
$_SESSION["username"] . " gespeichert - am " .
          
date("d.m.Y H:i:s"$_SESSION["uhrzeit"]) . " Uhr";
?>

Hier wird erst die login.php gestartet - diese startet die Session und speichert in dieser den Benutzernamen und das aktuelle Datum mit der Uhrzeit (Unix Timestamp). Wenn der Surfer dann auf den Link klickt, kommt er zu der profil.php und dort wird wieder die Session aufgegriffen und die Daten werden ausgegeben.

Vorteil dieser Methode: Daten die man einmal in einer Session speichert bleiben solange erhalten bis man diese zerstört oder der Surfer den Browser schliesst und eine gewisse Zeit vergeht. Man muss also nicht von Datei zu Datei immer wieder diese Daten übergeben wie bei GET damit diese nicht verloren gehen. Diese Daten sind dann aber auch nur für die Domain gültig, auf der sich der Surfer gerade befindet - wechselt man die Domain, dann wäre dies eine neue Session. Es gibt Webserver, da wird die Session in der Adresszeile mit angezeigt - z.B. index.php?PHPSESSID=394829348928349283942934 - deshalb sollte man so eine Adresse nie mit der Sessionnummer weitergeben, weil der nächste der auf diesen Link klickt surft mit euren Daten weiter. Die Daten werden nämlich auf dem Server gespeichert und nicht beim Surfer (was zum Beispiel bei Cookies der Fall ist). Um ein Skript abzusichern könnte man z.B. die IP Adresse des Surfers noch mit in der Session speichern. Wenn diese IP Adresse aus der Session nicht gleich der IP Adresse des Surfers ist, könnte man die Session zerstören ( SESSION_DESTROY(); nur so als Anregungsbeispiel).





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






Content
 
  Bottom Design  

PepperTools.de Software Download | Software Shop
unsere eigene Dampfdrache Marke - Liquids zum Dampfen
www.imilkowski.eu - Software Programmierung und Webdesign