Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

GET-Variablen

Mitglied: Lousek

Lousek (Level 2) - Jetzt verbinden

08.01.2008, aktualisiert 10.01.2008, 7602 Aufrufe, 3 Kommentare

Hallo

Ich bin noch ziemlicher Anfänger in PHP, und begreife die GET-Variablen noch nicht so ganz, nein eigentlich viel mehr, was man damit alles machen kann.

Also:

Zuerst einmal wie die Seite aussehen sollte, ganz simpel:

Tabelle mit zwei Spalten und zwei Zeilen, wobei die oberen Beiden verbunden sind, also hat man einen Header, eine Navi und ein "Inhaltsfenster".

Wenn ich jetzt in der Navi ein Link Home ("index.php"), Info ("info.php") und einen Link Über mich ("ueber_mich.php") habe (als Beispiel). Würde es dann nicht gehen, dass ich eigentlich eine Datei mache ("view.php"), bei der aber über Variablen (z.B. ?content=info oder ?content=ueber_mich) eigentlich den Inhalt, der in einer Datenbank ist, eingebunden wird. Oder das mit den Variablen den Inhalt aus einer Datei (z.B. "info.php") herausgeholt wird.

Eigentlich könnte man in der "Inhalts-Zelle" ja schreiben: include "info.php", aber dann wäre bei der "view.php" als Inhalt ja immer nur den Inhalt von "info.php".

Jetzt sollte ich doch schreiben können:

Wenn der Inhalt in einer Datenbank (im PHP-Format) gespeichert, $content = Abfrage mit dem Datensatz $_GET['content'];
(variable: ?content=info)

Wenn der Inhalt in einer Datei (im PHP-Format) gespeichert, $content = include $_GET['content'];
(variable: ?content=info.php)
oder $content = include "$_GET['content'].'.php'"; (Richtig so mit " und ' ?)
(variable: ?content=info)

Die Links in der Navi (oder allgemein) müssten dann auf z.B. view.php?content=info oder info.php hinweisen, oder wie sollten die dann aussehen?

Habe ich mich irgendwie grob verrechnet, oder gibt es viel praktischere Möglichkeiten?

Thankz for all answers.

Lousek
Mitglied: masterG
08.01.2008 um 19:38 Uhr
Einfacher mit einer MySQL-Datenbank mit den Tabellenspalten:

  1. ID
  2. Titel
  3. Inhalt
  4. Menu

Dann lässt du's anzeigen. In einer Liste und im Menü im menü mit einer speziellen Anweisung und dann machst du noch eine Detailanzeige....

masterG
Bitte warten ..
Mitglied: Lousek
08.01.2008 um 20:47 Uhr
moins

Thx für die Antwort.

Habes bis jetzt so gelöst, aber mit einer Datenbank wird es auch nicht viel schwieriger:

index.php
if (empty($_GET['content'])) {
$content='home.php';
} else {
$content=$_GET['content'];}

und weiter unten:

index.php
include $content;

so included er die in der URL übergeben Variable (z.B. home.php).

Die Links sind halt einfach:

z.B.:

index.php
echo " <a href='index.php?content=home.php&subcontent=news.php'>Home</a>";

die variable subcontent ist in der home.php nötig:

home.php
if (empty($_GET['subcontent'])) {
$subcontent='news.php';
} else {
$subcontent=$_GET['subcontent'];}

home.php
include $subcontent;

mit den Links:

z.B.

home.php
echo " <td class='navibuttons'><a href='view.php?content=home.php&subcontent=news.php'>News</a></td>";

oder

//home.php
echo " <td class='navibuttons'><a href='view.php?content=home.php&subcontent=info.php'>Info</a></td>";

Eigentlich könnte ich jetzt noch sagen: <a href='...'>$Subbutton1</a>, z.B.

Würde sicher auch gehen, dass ich alle Links für die Subnavi in einer Datenbank gespeichert habe, und alle in einer einzelnen Zelle abrufe, eben mit den Feldern ID, Titel, Inhalt und Menü.

Aber mal schauen, war nur ein bisschen zum ausprobieren, als erstes brauche ich mal ein anzuschauendes Design. :-P

Thx und Greetz

Lousek
Bitte warten ..
Mitglied: Arano
10.01.2008 um 14:00 Uhr
Moin,

also "?content=datei.php" -> "$content=$_GET['content'];" -> "include($content);" ist eine blöde Idee !
Dabei hast du zuwenig bzw. kein Kontrolle über die Herkunft der Adresse.
Was würde wohl passieren wenn jemand z.b.: "?content=http-www-meindeseite-de" aufruft !?
Richtig, deine Seite würde den Inhalt der angegebenen Adresse auslesen und anzeigen. Zugegeben, das wäre in diesem Beispiel nicht soo schlimm, aber trotdem blöde.
Schlimmer wäre es da schon wenn jemand auf diese Weise versucht auf deine Konfigurations-Dateien zuzugreifen z.B.: "?content=./config.php" in der deine Datenbankbenutzerdaten stehen.
Gefährlich wird es aber wenn man anstelle einer fremd URL versucht auf Systemdateien zuzugreifen, z.B.: "?content=../../../../userpwd" das könnte einem auf einem Linuxserver den Zugriff auf die Password-Datei gewähren.

Natürlich ist das alles von der Konfiguration der entsprechenden Software abhängig, so kann z.B.: das includieren von URLs verboten sein.
Aber man muss es ja gar nicht erst soweit kommen lassen und schon gar nicht provozieren

Mein Vorschlag wäre daher nur ein Schlüsselwort zu übergeben z.B.: "?content=start", "?content=news" oder "?content=gb" und dann per switch die entsprechende Datei zu includieren:
01.
<?php 
02.
  switch($_GET['content']){ 
03.
          default
04.
          case "startseite"
05.
          case "start": include("startseite.php"); break
06.
          case "news":  include("./unterordner/news.php"); break
07.
          case "gb":    include("guestbook.php"); break
08.
09.
?>
So kann nur von dir festgelegtes includiert/angezeigt werden !

$content = include "$_GET['content'].'.php'"; (Richtig so mit " und ' ?)
Nein !
Wie du schon richtig erkannt hast gibt es zwei Arten von Anführungszeichen, das doppelte " und das einfache '. Sie haben allerdings unterschiedliche Auswirkungen auf deinen PHP-Code !
Der Inhalt von doppelten Anführungszeichen wird geparst, das heist das bei folgendem PHP-Code die Variable "$name" durch ihren Wert ersetzt wird:
01.
<?php 
02.
  $name = "Max Mustermann"
03.
  echo "Hallo $name !"
04.
  // Ausgabe: Hallo Max Mustermann ! 
05.
?>
Der Inhalt einfacher Anführungszeichen hingegen wird nicht geparst !
01.
<?php 
02.
  $name = "Max Mustermann"
03.
  echo 'Hallo $name !'
04.
  echo 'Hallo '.$name.' !'
05.
  // Ausgabe: Hallo $name
06.
  // Ausgabe: Hallo Max Mustermann ! 
07.
?>
Das Parsen kostet natürlich Zeit, nicht viel, aber es ist so ! Zusätzlich führt die Verwendung von einfachen Anführungszeichen zu einer besseren lesbarkeit des Quelltextes unter Verwendung von Syntaxhighlight. Deutlich im zweiten Beispiel im zweiten echo zu sehen, die Variable ist deutlich zu erkennen wärend sie im ersten echo auch leicht überlesen werden kann.
Ein weitere Vorteil der einfachen Anführungszeichen ist auch das wegfallen des escapen von doppelten Anführungszeichen bei der Ausgabe von HTML
01.
<?php 
02.
  echo "<div class=\"rotebox\" id=\"news_3\">bla bla bla bla bla \"bla\" blubbb's</div>"
03.
  echo '<div class="rotebox" id="news_3">bla bla bla bla bla "bla" blubbb\'s</div>'
04.
  // im letzen echo muss allerdings das einfache Anführungszeichen escapet werden 
05.
?>
Der Punk "." diehnt auch als "Verkettungsoperator" und kann zwei oder mehr dings miteinander vebinden
01.
<?php 
02.
  $name = 'Arano'
03.
  echo $name.$name.$name 
04.
  // AranoAranoArano 
05.
  echo 'Hallo '.$name.' !'
06.
  // Hallo Arano ! 
07.
  echo 'Hallo '.$name." ! ($name)"
08.
  // Hallo Arano ! (Arano) 
09.
?>
So, da wir nun etwas mehr wissen, bauen wir deinen include doch mal neu:
01.
<?php 
02.
  $content = include "$_GET['content'].php"
03.
  // oder 
04.
  $content = include $_GET['content'].'php'
05.
?>
http://de3.php.net/manual/en/function.echo.php
http://de3.php.net/manual/en/function.include.php
http://de3.php.net/manual/en/control-structures.switch.php

Gruß Arano

PS. Jetzt habe ich auch noch was gelernt !
Ein "include" ist keine Funktion sondern ein Sprachkonstrukt, weswegen es auch ohne Klammern aufrufbar ist.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Get-Hotfix Script
Frage von u0206084Batch & Shell3 Kommentare

Hallo Kollegen, ich möchte die Hotfixes der Server auslesen hierzu , habe ich verschiedene Powershellscripte gefunden. Script 1: (Funktioniert ...

Batch & Shell
Power Shell get klappt nicht
gelöst Frage von rocco61Batch & Shell3 Kommentare

Hallo zusammen, habe eine Frage zur Powershell. Möchte mit Get –SmbServerConfiguration die aktuelle config bekommen, was ich bekomme ist ...

Batch & Shell

Get-WmiObject, nach Netzwerkadapter filtern

gelöst Frage von FlodscheBatch & Shell11 Kommentare

Hallo, ich habe folgendes Script: Jedoch ist in dem Excel-Dokument die Spalte für den Gateway nacher leer. Nun habe ...

Batch & Shell

Get-ADComputer mehrere Filterkreterien

gelöst Frage von ChrisIOBatch & Shell3 Kommentare

Moin, ich versuche gerade mehrere Powershellabfragen in eine zusammen zu fassen. Vielleich kann mir ja einer von Euch auf ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 1 TagMicrosoft4 Kommentare

Da diese Infos scheinbar unerwünscht sind, habe ich diese wider gelöscht.

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 1 TagSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 1 TagSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 2 TagenHardware2 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen40 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic20 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

TK-Netze & Geräte
Low budget TK-Anlage für KMU
Frage von HeinklugTK-Netze & Geräte16 Kommentare

Hallo Admins, ich bin auf der Suche nach eine kostengünstigen Telefonanlage für mein kleines Büro mit 4-5 Mitarbeitern. Dabei ...

DSL, VDSL
PPPOE Einwahl über Sophos UTM und FritzBox per PPPOE Passthrough
gelöst Frage von Leo-leDSL, VDSL16 Kommentare

Hallo zusammen, vielleicht habt Ihr noch eine Idee?? Ich besitze einen 1u1 Anschluss und möchte meine UTM ASG 110 ...