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
- Anbieter finden

Interessante Artikel
- Soft-Skill-Zertifizierung
- Sicherheits Workshops
- ESDownload


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 >>>>




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.

.:: 04.01.12 - 19:50 Uhr :: Name: mario ::.
mal ne frage:
ich hab mal deine hier geschriebenen code 1:1 übernommen (mit texteditor) und html rahmen hinzugefügt (<html></html> usw...) und mit firefox gestartet. bei "$_logindaten = ARRAY("name"=>"admin", "passwort"=>"12345");" wird das ">"-Zeichen als ein schließendes Tag angesehen und die login.php funktioniert dementsprechend nicht.
weiterhin hab ich versucht, bei einer eigenen Seite per POST die Daten eines Formulars, in dem Fall vorname und Nachname auf einer anderen Seite wiederzugeben, funktioniert aber nicht, selbst nachdem ich mir dein tutorial angesehen hab

.:: 26.06.11 - 14:00 Uhr :: Name: Simsso ::.
Hallo
Vielen Dank für das Tutorial.
Ich habe noch eine Frage.
Wenn ich in einer Datei eine Variable definiere und diese mit einem <form> Tag versenden möchte, wie geht das dann?
Gruß

.:: 27.05.11 - 11:40 Uhr :: Name: Marduk ::.
Wie schaffe ich es, das auf jeder Site geprüft wird, ob der User angemeldet ist und wenn nicht sofort auf die login.php umgeleitet wird?

.:: 23.09.10 - 16:36 Uhr :: Name: jon ::.
hi charly
vielen dank für dieses tutorial. es ist sehr verständlich, kurz und ohne überflüssiges blabla geschrieben. Ueber das thema der Variablen-Uebergabe habe ich mir nun schon stunden lang den Kopf zermartert. Irgendwie gibt es zu diesem thema im netz kaum brauchbare tutorials. ich hatte eine einfache frage(wie übergebe ich grosse variabeln), und hier finde ich endlich die einfache antwort dazu (session oder include)... thx!

.:: 26.07.10 - 23:31 Uhr :: Name: Kristina ::.
Danke für das Tutorial. Hat mir sehr geholfen.

LG Kristina

.:: 15.07.10 - 10:32 Uhr :: Name: Charly ::.
Theoretische Kapitel gibts jede Menge ;-) An was hast Du denn gedacht ?

.:: 10.07.10 - 09:13 Uhr :: Name: Roman ::.
Hi Charly, ich bin stoltz eine Idee für ein neues Kapitel gefunden zu haben!

Roman Ackermann

.:: 03.06.10 - 10:12 Uhr :: Name: Charly ::.
Danke für die Blumen Svenja ;)

Man verzeihe mir - ich habe die Texte "on the fly" geschrieben und nicht auf Rechtschreibfehler kontrolliert :D - jetzt ist es korrigiert ;-)

Gruß
Charly

.:: 02.06.10 - 21:13 Uhr :: Name: Svenja ::.
Hab einen Rechtschreibfehler gefunden ;)
Bei "Fall 2: wir leiten auf eine andere Datei weiter" hast du in folgendem Satz bei "dass" ein s vergessen: "Die profil.php wird ausgeführt, ohne das vorher die login.php ausgeführt wird."
Übrigens ist dein Tutorial sehr hilfreich! :)









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.