Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [PHP] Wie übergebe ich Daten per URL?
Antwort
 
Themen-Optionen
Alt 05.12.2004, 14:36   Nach oben    #1
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard [PHP] Wie übergebe ich Daten per URL?

Wie übergebe ich Daten per URL?


Schritt 1
Zunächst einmal sollen einige grundlegende Informationen vermittelt werden.

PHP bietet die Möglichkeit Variableninhalte von einer Seite auf die nächste zu übernehmen. In diesem Tutorial beschäftigen wir uns mit der Variablenübergabe über die URL.
Tutorials zu anderen Möglichkeiten findest Du hier:
Daten per Session übergeben


Da PHP serverseitig abläuft, interessiert es nicht, ob eine Datei sich selbst oder eine zweite Datei aufruft. In beiden Fällen werden Informationen an den Server geschickt, der diese auswertet und dann, je nach Ergebnis der Auswertung eine Ausgabe an den Client (in unserem Fall der Browser) schickt.


Schritt 2
Wie schafft man es jetzt dem Server zu "sagen", dass man Informationen auf mehr als nur einer Seite nutzen möchte? Und wie schafft man es dann die Informationen wieder abzurufen?

Dies geht mittels einer simplen Konstruktion. Ein Hyperlink, der Informationen mit der URL weiterversenden soll hat folgende Grundstruktur
Code:
http://example.com/seite.php?variable=wert
Das Fragezeichen nach dem Dateinamen benachrichtigt den Server, dass Daten per URL übergeben werden.

Wie greifen wir nun aber auf die Informationen zu, die an die Datei "seite.php" übergeben wurden?

Ich möchte die Anwendung mit Hilfe eines kleinen Beispiels erläutern.
Zunächst verwenden wir zwei Dateien. In der ersten Datei (info_versenden.html) steht einfach nur ein Link mit obiger Struktur.

Diese Datei muss keinerlei PHP-Code enthalten und kann somit auch die Endung .html haben.

Code:
<!# Code in der Datei: info_versenden.html #>

<a href="info_abrufen.php?zahl=12">Daten per URL übertragen</a>
Die zweite Datei (info_abrufen.php) greift nun auf die übertragenden Daten zu. Da es sich hierbei um PHP-Code handelt muss diese Datei auch die Endung .php haben.

PHP-Code:
<?php

    
// Code in der Datei: info_abrufen.php

   
echo $_GET['zahl'];    

?>
Die Datei gibt einfach nur die Zahl aus, die in der URL mitübergeben wurde.
Wir greifen, wie im Beispiel ersichtlich, mit Hilfe des superglobalen Arrays $_GET auf die übergeben Variable zu. Schauen wir uns jetzt noch einmal die Struktur des Hyperlinks an.
Es interessiert uns jetzt nur der Teil hinter dem Fragezeichen.
Code:
variable=wert
So hatten wir es bisher festgehalten.
Jetzt wissen wir, dass wir über ein Array auf die Informationen zugreifen können. Der Link ließe sich also in seiner prinzipiellen Grundstruktur auch folgendermaßen nach dem Fragezeichen schreiben.

Code:
schluessel=wert
Dieses Prinzip zu verstehen ist elementar und sichert eigentlich den Erfolg bei der Anwendung der Datenübergabe per URL.


Schritt 3
Es lassen sich selbstverständlich mehrere Variablen in der URL übergeben. Die einzelnen Daten werden durch ein & getrennt
Code:
http://example.com/seite.php?var1=wert1&var2=wert2&...&varX=wertX
Um validen HTML-Code zu verwenden sollte man Sonderzeichen, wie in diesem Fall das & in HTML-Notation schreiben (&amp;). Dies bezieht sich ausschließlich auf den HTML-Quelltext. Die URL in der Adresszeile des Browser verwendet das normale &.

Die Anzahl einer der Zeichen einer URL ist auf 1024 begrenzt. Es ist aber davon abzuraten diese Zahl überhaupt annähernd zu erreichen, da die Übersichtlichkeit doch stark leidet.


Schritt 4
Wir wollen nun das obige Beispiel so modifizieren, dass wir einen kompakten Code erhalten, der übersichtlich ist und die Funktionsweise leicht verständlich erklärt.

In Schritt 1 wurde angedeutet, dass es keinen Unterschied zwischen einem erneuten Laden der gleichen Seite und einem Aufruf einer anderen Seite gibt. Diese Tatsache machen wir uns im folgenden Beispiel zu nutze.

PHP-Code:
<?php

   
if( isset($_GET['zahl'], $_GET['faktor']) )
   {
       
printf'%s * %s = %s <br />',
                 
$_GET['zahl'], 
                 
$_GET['faktor'],
                 (
$_GET['zahl'] * $_GET['faktor']) );

       echo 
'<a href="' $_SERVER['PHP_SELF'] . '">nochmal</a>';
   }
   else
   {
       echo 
'<a href="' $_SERVER['PHP_SELF'] . '?zahl=10&faktor=2">Daten übergeben</a>';
   }

?>
In dem Beispiel wird zunächst geprüft, ob überhaupt beide benötigten Daten übergeben wurden. Ist dies nicht der Fall, was ja beim ersten Aufruf der Datei zutrifft, so wird ein Hyperlink ausgegeben.
Folgt man diesem, so ruft sich das Script selbst auf und die Bedingung wird dieses Mal erfüllt.
Im if-Zweig wird nun das Produkt aus der übergebenen Zahl und dem übergebenen Faktor ausgegeben.

Hier bietet es sich an auch einfach mal per Hand die Zahlen in der Adressleiste des Browsers abzuändern und die Seite zu aktualisieren.


Schritt 5
Ich möchte noch kurz auf die anderen Varianten eingehen, die theoretisch zur Verfügung stehen, um auf die Variablen in der URL zuzugreifen.

Bis zur PHP-Version 4.1.0 war das superglobale Array $_GET nicht bekannt. Bis dahin verwendete man das Array $HTTP_GET_VARS.
Die Arrays enthalten zwar die gleichen Informationen, haben aber unterschiedliche Sichtbarkeitsräume bzw. Gültigkeitsbereiche.

$_GET ist überall verfügbar, so z.B. auch in Funktionen ohne das innerhalb dieser explizit mit dem Schlüsselwort 'global' gearbeitet werden muss.
Dies ist genau der Nachteil von $HTTP_GET_VARS. Es ist zwar global, aber nicht superglobal.

Probiere mal den unteren Code aus und vergleiche Deine erwartete Ausgabe mit der tatsächlichen Ausgabe.
PHP-Code:
<?php

   
function test()
   {
       echo 
'In der Funktion';
       echo 
'<br />';       

       echo 
'$HTTP_GET_VARS["var"]: ' $HTTP_GET_VARS["var"];
       echo 
'<br />';
       echo 
'$_GET["var"]: ' $_GET['var'];         
   }


   if( isset(
$_GET['var'], $HTTP_GET_VARS['var']) )
   {
       echo 
'$HTTP_GET_VARS["var"]: ' $HTTP_GET_VARS["var"];
       echo 
'<br />';
       echo 
'$_GET["var"]: ' $_GET['var'];

       echo 
'<br />';

       
test();
   }
   else
   {
       echo 
'<a href="' $_SERVER['PHP_SELF'] . '?var=hallo">Klick mich</a>';
   }

?>
Wir würden jetzt naiverweise erwarten, dass die Ausgabe folgendermaßen aussieht.
Code:
$HTTP_GET_VARS["var"]: hallo
$_GET["var"]: hallo
In der Funktion
$HTTP_GET_VARS["var"]: hallo
$_GET["var"]: hallo
Aber wir erhalten tatsächlich diese Ausgabe hier:
Code:
$HTTP_GET_VARS["var"]: hallo
$_GET["var"]: hallo
In der Funktion
$HTTP_GET_VARS["var"]:
$_GET["var"]: hallo
$HTTP_GET_VARS ist in der Funktion nicht sicht- und verfügbar. Man müste es mit dem Schlüsselwort 'global' erst sichtbar machen.
Aber wozu die Mühe?

Kurz gesagt ist $HTTP_GET_VARS seit der Einführung von $_GET unnötig geworden.


Es gibt noch eine weitere Möglichkeit auf die Variablen in der URL zuzugreifen. Dies erfordert allerdings die Aktivierung der Einstellung register_globals.
Ist dies der Fall, so sind die Variablen ebenfalls im globalen Sichtbarkeitsbereich des Scriptes verfübar und man kann einfach nach diesem Muster auf sie zugreifen.
PHP-Code:
<?php

    
// Link: [url]http://example.com/seite.php?var=wert[/url]

   
echo $var;

?>
Das scheint jetzt zunächst einmal eine super Methode zu sein, allerdings rate ich ausdrücklich davon ab.
Ich bitte darum folgenden Beitrag ausführlich und intensiv zu lesen:
http://www.phpfriend.de/forum/ftopic26569.html


Schritt 6
Solltet Ihr Fragen zu dem Tutorial haben, so schreibt bitte einen Beitrag im PHP-Forum mit einem Verweis auf dieses Tutorial.
Danke.


Schritt 7
Weiterführende Informationen findest Du z.B. hier:
http://www.php.net/manual/de/reserve....variables.get

Geändert von Jann Hendrik (03.07.2008 um 10:39 Uhr). Grund: link angepasst
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hardware-RAID-Lösung robo47 Plauderecke 29 26.12.2007 04:49
SessionID per Url auf Portal-Seite Artemis Fragen ans Team 7 09.07.2007 20:25
[JAVA] Wie man aus Java mit einem PHP-Script kommuniziert sparrow Tutorials 0 25.03.2006 22:24
post Daten weiter leiten als "POST" per header(&qu schifti PHP-Programmierung 12 22.03.2005 15:42
[PHP] Daten per Session übergeben Ben Tutorials 0 14.12.2004 14:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:13 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44