| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

11-12-2007, 11:32
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
Dateiaufruf mit Anker in include
Hallo,
ich möchte aus einer so formulierten include Anweisung:
include $dateien[$_GET['section']];
section enthält den Verweis zu einer HTML Seite, einen Anker mitgeben, wenn das möglich ist? Bekomme aber die Fehlermeldung:
Warning: main(_praxis.htm#5) [function.main]: failed to open stream: No such file or directory in /home/kiefer/diekieferorthopaeden.at/_inhalt.php on line 8
Die Seite mit diesem Namen existiert natürlich nicht, wie kann ich trotzdem zu dem Anker in der HTML Datei springen?
mfg Marco
|

11-12-2007, 11:42
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
Mit nem include schon einmal gar nicht. Sowas löst du per JavaScript.
|

11-12-2007, 11:54
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
Hallo Benny,
danke für deine Antwort!
Die include Anweisung steuert den Main Bereich der Seite. Das ganze funktioniert recht gut - bis eben auf die Sprungmarken.
Hast du vielleicht einen Anhaltspunkt wo ich da mit JavaScript ansetzen kann?
mfg Marco
|

11-12-2007, 11:56
|
|
ministry
PHP Junior
|
|
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
|
|
Du solltest unbedingt prüfen, was du da includierst. Ansonsten ist das ein sehr offensichtliches Scheunentor.
Den Anker bekommst du weg mit stringfunktionen,
z.B. so
PHP-Code:
$section = (substr($_GET['section'], 0, strrpos($_GET['section'], "#")));
|

11-12-2007, 11:58
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
Hirn einschalten.
Klar dass der Include funzt, aber du willst ja zu dem Anker springen und das klappt mit nem include nicht.
|

11-12-2007, 12:04
|
|
ministry
PHP Junior
|
|
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
|
|
Ich dachte er will seinen neuen Inhalt includieren und gleichzeitig darin zu einem Anker springen.
|

11-12-2007, 12:08
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
Zitat:
Original geschrieben von ministry
Ich dachte er will seinen neuen Inhalt includieren und gleichzeitig darin zu einem Anker springen.
|
ja aber das klappt ja nicht. der anker wird nicht beachtet, also das springen klappt nicht.
|

11-12-2007, 12:17
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
... also ich ruf die Seite nach wie vor ohne Anker auf mit include, verstehe, aber wie spring ich dann? Den Anker müsst ich dann mit einer eigenen Variable mitgeben oder so wie ministry gemeint hat vor dem Aufruf wegschneiden und in eine andere Variable einlesen, soweit schnall ich es.
Marco
|

11-12-2007, 12:18
|
|
ministry
PHP Junior
|
|
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
|
|
Zitat:
Original geschrieben von Benny-one
ja aber das klappt ja nicht. der anker wird nicht beachtet, also das springen klappt nicht.
|
Warum nicht?
file1.php:
PHP-Code:
<?php
echo("Parameter: ");
echo isset($_GET['test']) ? $_GET['test'] : 'keiner';
include("file2.php");
?>
file2.php:
PHP-Code:
<?php
echo("<p>viel Text<br />
viel Text<br />
viel Text<br />
[...]
<a href=\"#\" name=\"blub\">Link mit Anker</a>
</p>");
?>
Aufruf:
http://localhost/file1.php?test=bla#blub
Geändert von ministry (11-12-2007 um 12:23 Uhr)
|

11-12-2007, 12:20
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
argh, gut, wenn das vorher angeklickt wurde schon. ich dachte er wollte einen include basteln und beliebig an Anker innerhalb der Seite springen, ohne dass der User das vorher ausgewählt hat.
|

12-12-2007, 15:42
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
hallo ministry, hallo benny,
danke für euere Hilfe, funktioniert.
Was ich aber einfach von der Logik her nicht verstehe ist, wieso "test=bla#blub" überhaupt dann als Aufforderung zum Springen umgesetzt wird nach dem include des file2.php - ich kann ja sogar das "bla" weglassen, also so: "test=#blub" und es funktioniert ebenso.
Grüße - Marco
|

12-12-2007, 15:53
|
|
ministry
PHP Junior
|
|
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
|
|
test=bla kannst du natürlich weglassen - du brauchst stattdessen section=[dein bereich zum includieren] .
Prüfst du denn mittlerweile, was includiert wird oder übernimmst du es noch immer einfach so?
|

12-12-2007, 16:24
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
stimmt, test=bla kann ich auch weglassen, sagenhaft
nein, ich das Durchdenken dieser Problestellung hat meine Zeit bis jetzt in Anspruch genommen. aber jetzt hab ich Zeit über Sicherheit nachzudenken, klar!
Der Inhalt von section wird in einem Array gesucht, bei Übereinstimmung der im Array hinterlegte Seitenaufruf im include angegeben - soweit alles klar.
Wo ist da ein Scheunentor? ist jedes include ein Scheunentor?
ich find deine Hinsweise irre hilfreich, weil sie mir einfach ein wenig die Augen öffnen, Hinweise genügen bei mir eh, bin ja am Lernen interessiert, diesbezüglich nochmals vielen Dank.
Marco
|

12-12-2007, 16:30
|
|
ministry
PHP Junior
|
|
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
|
|
Das ist prinzipiell schon richtig, am Anfang hast du das aber nicht so gemacht (sonst hättest du die Fehlermeldung nicht bekommen, dass die Datei nicht existiert).
Entweder schreibst du deine Dateien in so ein Array und prüfst auf Existenz
PHP-Code:
$includes = array('praxis' => 'praxis.htm', 'wartezimmer' => 'dings.htm' ...);
if (isset($includes[$_GET['section'])) include($includes['section']);
oder du machst es mit einem switch ... case über $_GET['section'] oder ähnlich. Includes sind nur Scheunentore, wenn fremdbestimmt werden kann, was bei dir eingebunden wird.
Geändert von ministry (12-12-2007 um 16:33 Uhr)
|

12-12-2007, 21:44
|
|
MarcoArc
Newbie
|
|
Registriert seit: Mar 2005
Beiträge: 6
|
|
... öööh - doch, hab ich schon anfänglich so gemacht gehabt
Schuld an der Fehlermeldung war einzig und alleine dieser Versuch gleich im Array den Anker mitzugeben - dadurch entstand die von mir gepostete Fehlermeldung.
der schuldige Eintrag im Array:
$dateien['impressum'] = "_praxis.htm#5";
liebe Grüße - Marco
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|