App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[PHP] - Probleme mit include()
- Ersteller tiefi
- Erstellt am
hallo leute!
also ich habe folgendes problem und es will mir einfach nicht gelingen, es zu lösen:
ich fang mal mit der orderstruktur auf meinem server an:
es gibt die index.php, den ordner includes, und einen ordner namens gbook.
soweit so gut.
für das normale includen verwende ich folgendes skript:
die links in html habe ich folgendermaßen realisert:
also das normale includen von *.php files, die im ordner /includes liegen, funktioniert problemlos.
nun zum eigentlichen problem, dem gästebuch:
im ornder ./gbook/ gibt es eine guestbook.php
wie kann ich diese php datei in meine hauptseite einbinden?
mit dieser version:
geht es auch nicht. (auch nicht, wenn in der guestbook.php nur ein satz drinsteht)
Wie kann ich das problem (ohne iframe (!)) lösen?
danke im voraus!
ps: sry, wegen der kleinschreibung
mfg
also ich habe folgendes problem und es will mir einfach nicht gelingen, es zu lösen:
ich fang mal mit der orderstruktur auf meinem server an:
es gibt die index.php, den ordner includes, und einen ordner namens gbook.
soweit so gut.
für das normale includen verwende ich folgendes skript:
PHP:
<?
if($_GET['site']!= "")
{
if(file_exists("./includes/".$_GET['site'].".php"))
{
include("./includes/".$_GET['site'].".php");
}
else
{
include("./includes/home.php");
}
}
else
{
include("./includes/home.php");
}
?>
die links in html habe ich folgendermaßen realisert:
HTML:
<a href="index.php?site=home">home</a>
also das normale includen von *.php files, die im ordner /includes liegen, funktioniert problemlos.
nun zum eigentlichen problem, dem gästebuch:
im ornder ./gbook/ gibt es eine guestbook.php
wie kann ich diese php datei in meine hauptseite einbinden?
mit dieser version:
PHP:
<?
if($_GET['site']!= "")
{
if(file_exists("./includes/".$_GET['site'].".php"))
{
switch($_GET['site'])
{
case 'gbook': include("./gbook/guestbook.php"); break;
default: include("./includes/".$_GET['site'].".php"); break;
}
}
}
?>
Wie kann ich das problem (ohne iframe (!)) lösen?
danke im voraus!
ps: sry, wegen der kleinschreibung
mfg
AndyK
Vice Admiral Special
- Mitglied seit
- 07.01.2006
- Beiträge
- 758
- Renomée
- 18
- Prozessor
- Ryzen 5 3600
- Mainboard
- Gigabyte B550M S2H
- Kühlung
- boxed Kühler
- Speicher
- 32GB Patriot Viper 4 rot DDR4-3200 DIMM CL16 Dual Kit
- Grafikprozessor
- MSI NVIDIA GeForce GTX 960 4GB
- Display
- LG 22EA63 (22", Full HD)
- SSD
- 1000GB Kingston SA2000M8 1000G M.2 2280 PCIe 3.0 x4 NVMe
- HDD
- Hitachi Deskstar (HDS5C3020BLE630) 2TB, Sata-III 6Gb/s
- Optisches Laufwerk
- HL-DT-ST DVDRAM GH24NSB0
- Soundkarte
- Realtek ALC887 (OnBoard)
- Gehäuse
- Sharkoon VS3-V Midi Tower
- Netzteil
- 430 Watt Corsair CX Series Modular 80+ Bronze
- Tastatur
- Cherry G230
- Maus
- Logitech MX518
- Betriebssystem
- Windows 10 Home 64Bit
- Webbrowser
- Firefox, Chrome
- Internetanbindung
-
▼200 MBit
▲10 MBit
Du hast da einen kleinen Denkfehler drin....
wie kann ich diese php datei in meine hauptseite einbinden?
mit dieser version:
geht es auch nicht. (auch nicht, wenn in der guestbook.php nur ein satz drinsteht)PHP:<? if($_GET['site']!= "") { if(file_exists("./includes/".$_GET['site'].".php")) { switch($_GET['site']) { case 'gbook': include("./gbook/guestbook.php"); break; default: include("./includes/".$_GET['site'].".php"); break; } } } ?>
Wie kann ich das problem (ohne iframe (!)) lösen?
danke im voraus!
ps: sry, wegen der kleinschreibung
mfg
Wenn die Variable $_GET['site'] = gbook lautet, dann prüfst Du zunächst, ob die Datei ./includes/gbook.php existiert.
Das ist höchstwahrscheinlich nicht der Fall, da die Datei guestbook.php heisst und im ./gbook/ Verzeichnis liegt.
Also Abfragenkonstruktion umstellen:
PHP:
<?
if($_GET['site']!= "")
{
switch($_GET['site'])
{
case 'gbook': include("./gbook/guestbook.php"); break;
default: if(file_exists("./includes/".$_GET['site'].".php")) include("./includes/".$_GET['site'].".php"); break;
}
}
?>
AndyK
Du hast da einen kleinen Denkfehler drin.
Wenn die Variable $_GET['site'] = gbook lautet, dann prüfst Du zunächst, ob die Datei ./includes/gbook.php existiert.
Das ist höchstwahrscheinlich nicht der Fall, da die Datei guestbook.php heisst und im ./gbook/ Verzeichnis liegt.
das ich das selbst nicht bemerkt habe - danke
jetzt, wo das includen funktioniert, ist aber das nächste GBook problem dar
wenn ich im gästebuch eine aktion (zb. eintragen) anklicke, meldet er, dass er die seite nicht finden kann, da er sie nicht im /gbook verzeichnis sucht, sondern eine ebene drüber (also auf der hauptebene)
www.abc.com/eintragen.php -> fehler, weil sie in www.abc.com/gbook/eintragen.php liegt.
mfg
Das ist ebenso wieder ein kleiner Denkfehler: Du hast zwar jetzt die richtige Datei included, im Browser in der URL oben bist Du aber noch außerhalb des gbook-Verzeichnisses, was zur Folge hat, dass Links auch außerhalb davon landen.
Ich möchte Dir aber zu Deinem anderen Code noch ein paar Vorschläge machen: Du solltest nicht einfach mit
überprüfen, ob die Variable "site" übergeben wurde. Wenn sie nämlich nicht übergeben wurde, gibt PHP einen Fehler aus (man kann die Fehlerausgabe in der PHP-Konfiguration auch unterdrücken, aber es sollte besser auch ohne solche Mittel funktionieren). Die korrektere Variante wäre
Hiermit gibt es dann zumindest keine potentielle Fehlermeldung mehr.
Trotzdem solltest Du bei Deinem Mechanismus noch darauf achten, dass er wie dargestellt eine ziemliche Sicherheitslücke darstellt, da man beim Parameter 'site' einfach irgendwas eingeben kann. Ich würde an Deiner Stelle mind. noch eine Grundabsicherung einbauen, dass man nur erlaubte Zeichen darin platzieren darf. Hier nochmal am Beispiel des Korrekturvorschlags von oben:
Das preg_match() überprüft im Beispiel, ob der übergebene String ausschliesslich aus den Kleinbuchstaben im Bereich von "a" bis "z" besteht und gleichzeitig auch, ob mind. ein Zeichen vorhanden ist, damit kann man die vorherige Überprüfung mit Leerstring-Test weglassen.
Ich möchte Dir aber zu Deinem anderen Code noch ein paar Vorschläge machen: Du solltest nicht einfach mit
Code:
if ( $_GET['site']!="" ) {...}
Code:
if ( [COLOR="Blue"]isset($_GET['site']) &&[/COLOR] $_GET['site']!="" ) {...}
Trotzdem solltest Du bei Deinem Mechanismus noch darauf achten, dass er wie dargestellt eine ziemliche Sicherheitslücke darstellt, da man beim Parameter 'site' einfach irgendwas eingeben kann. Ich würde an Deiner Stelle mind. noch eine Grundabsicherung einbauen, dass man nur erlaubte Zeichen darin platzieren darf. Hier nochmal am Beispiel des Korrekturvorschlags von oben:
Code:
if ( isset($_GET['site']) && [COLOR="Blue"]preg_match("/^[a-z]+\$/",$_GET['site'])[/COLOR] ) {...}
Das preg_match() überprüft im Beispiel, ob der übergebene String ausschliesslich aus den Kleinbuchstaben im Bereich von "a" bis "z" besteht und gleichzeitig auch, ob mind. ein Zeichen vorhanden ist, damit kann man die vorherige Überprüfung mit Leerstring-Test weglassen.
jop, das war mir eigentlich eh klar, wollte nur wissen, wie man das beheben kann - danke an \²³/, es hat geklappt.Das ist ebenso wieder ein kleiner Denkfehler: Du hast zwar jetzt die richtige Datei included, im Browser in der URL oben bist Du aber noch außerhalb des gbook-Verzeichnisses, was zur Folge hat, dass Links auch außerhalb davon landen.
ps: echt super hier, der planet
ok, bin gerade draufgekommen, dass das includen nur mit opera richtig funktioniert....
mit firefox und IE gibts nur probs
anscheinend interpretieren die beiden anderen browser das <base href="./gbook/" /> falsch bzw. garnicht?
weiß irgendwer, wie ich das problem beheben kann?
danke!
mfg tiefi
mit firefox und IE gibts nur probs
anscheinend interpretieren die beiden anderen browser das <base href="./gbook/" /> falsch bzw. garnicht?
weiß irgendwer, wie ich das problem beheben kann?
danke!
mfg tiefi
AndyK
Vice Admiral Special
- Mitglied seit
- 07.01.2006
- Beiträge
- 758
- Renomée
- 18
- Prozessor
- Ryzen 5 3600
- Mainboard
- Gigabyte B550M S2H
- Kühlung
- boxed Kühler
- Speicher
- 32GB Patriot Viper 4 rot DDR4-3200 DIMM CL16 Dual Kit
- Grafikprozessor
- MSI NVIDIA GeForce GTX 960 4GB
- Display
- LG 22EA63 (22", Full HD)
- SSD
- 1000GB Kingston SA2000M8 1000G M.2 2280 PCIe 3.0 x4 NVMe
- HDD
- Hitachi Deskstar (HDS5C3020BLE630) 2TB, Sata-III 6Gb/s
- Optisches Laufwerk
- HL-DT-ST DVDRAM GH24NSB0
- Soundkarte
- Realtek ALC887 (OnBoard)
- Gehäuse
- Sharkoon VS3-V Midi Tower
- Netzteil
- 430 Watt Corsair CX Series Modular 80+ Bronze
- Tastatur
- Cherry G230
- Maus
- Logitech MX518
- Betriebssystem
- Windows 10 Home 64Bit
- Webbrowser
- Firefox, Chrome
- Internetanbindung
-
▼200 MBit
▲10 MBit
PHP:
<?
if ( isset($_GET['site']) && preg_match("/^[a-z,0-9]+$/i",$_GET['site']) )
{
switch($_GET['site'])
{
case 'gbook':
include("./gbook/guestbook.php");
$urlplus = "./gbook/";
break;
default:
if(file_exists("./includes/".$_GET['site'].".php"))
include("./includes/".$_GET['site'].".php");
$urlplus = "./";
break;
}
}
?>
PHP:
<?
echo "<a href='{$urlplus}seite.php'>Linkname</a>";
?>
<!-- html code here... -->
<a href="<?=$urlplus?>seite2.php">Linkname 2</a>
@Rones: Eine Frage hab ich zu Deinem preg_match noch:
Warum fragst Du am Ende nach einem $-Zeichen ab?
Du hast es ja durch den \ "escaped" also wirkt es nicht als Stringende-Zeichen, sondern als normales $-Zeichen.
Oder meinstest Du eigentlich:
PHP:
preg_match("/^[a-z,0-9]+$/i",$_GET['site'])
Bei Dir war es vorher: nur Kleinbuchstaben waren gültig und der String musste mit einem $-Zeichen Enden.
War das so beabsichtigt?
AndyK
Zuletzt bearbeitet:
@AndyK: kann sein, dass der Backslash vor dem $ falsch war, ich habe das vor dem Posten nicht getestet. Meine Absicht war, dass der Dollar auch tatsächlich im regulären Ausdruck ankommt und nicht als Anfang eines Variablennamen mißverstanden wird. Vielleicht habe ich hier einen kleinen Fehler gemacht.
AndyK
Vice Admiral Special
- Mitglied seit
- 07.01.2006
- Beiträge
- 758
- Renomée
- 18
- Prozessor
- Ryzen 5 3600
- Mainboard
- Gigabyte B550M S2H
- Kühlung
- boxed Kühler
- Speicher
- 32GB Patriot Viper 4 rot DDR4-3200 DIMM CL16 Dual Kit
- Grafikprozessor
- MSI NVIDIA GeForce GTX 960 4GB
- Display
- LG 22EA63 (22", Full HD)
- SSD
- 1000GB Kingston SA2000M8 1000G M.2 2280 PCIe 3.0 x4 NVMe
- HDD
- Hitachi Deskstar (HDS5C3020BLE630) 2TB, Sata-III 6Gb/s
- Optisches Laufwerk
- HL-DT-ST DVDRAM GH24NSB0
- Soundkarte
- Realtek ALC887 (OnBoard)
- Gehäuse
- Sharkoon VS3-V Midi Tower
- Netzteil
- 430 Watt Corsair CX Series Modular 80+ Bronze
- Tastatur
- Cherry G230
- Maus
- Logitech MX518
- Betriebssystem
- Windows 10 Home 64Bit
- Webbrowser
- Firefox, Chrome
- Internetanbindung
-
▼200 MBit
▲10 MBit
Passiert schon mal
Geht mir auch öfters so.
War mir eben nur nicht sicher, ob es mit Absicht war, hätte ja sein können, dass ich was übersehen habe.
AndyK
Geht mir auch öfters so.
War mir eben nur nicht sicher, ob es mit Absicht war, hätte ja sein können, dass ich was übersehen habe.
AndyK
\²³/
Grand Admiral Special
[...] ich habe es jetzt doch mit einem iframe gemacht, weil die meisten pfade im gästebuch trotz demnicht richtig sind [...].HTML:<base href="./gbook/" />
Benutzt du HTML oder XHTML? Bei HTML musst du
HTML:
<base href="./gbook/">
HTML:
<base href="./gbook/" />
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 7K
- Antworten
- 15
- Aufrufe
- 4K