Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Externe Seite verlinken
Frage
Hallo,
über <a href="..."></a> kann ich auf externe Seiten verlinken.
Mit fopen und implode geht das zwar, aber damit würde ich die Seite bei mir komplett einbinden und deren Verlinkungen gehen nicht mehr.
Wie kann ich das realisieren?
Antwort 1 von Nessus
Hi,
ich kann dir nicht ganz folgen, was willst du damit erreichen?
Wenn Du fremden Contend auf deiner Seite einstellst und ausgibst, machst du dich Strafbar.
Ansonsten sollte dir die Klasse Snoopy weiterhelfen.
Nessus
ich kann dir nicht ganz folgen, was willst du damit erreichen?
Wenn Du fremden Contend auf deiner Seite einstellst und ausgibst, machst du dich Strafbar.
Ansonsten sollte dir die Klasse Snoopy weiterhelfen.
Nessus
Antwort 2 von SGD-Daniel1
Ich erkläre das noch mal neu:
und zwar baue ich gerade an einem dynamischen Menü. Durch eine "root"-Variable setze ich den Wert auf "/", so das die Verlinkung dort startet.
Situation:
Im dyn. Menü klicke ich auf "Tabelle", die auf die "tab.php" verweist. In der "tab.php" habe ich eine Tabelle mit 2 Zellen erstellt. In der linken Zelle hole ich mir per "include" das Menü. In der rechten Zelle soll dann die Tabelle erscheinen.
Problem:
Mit "fopen", "implode" usw. lese ich die Seite komplett ein, so dass die Hyperlinks nicht mehr funktionieren, weil die Seiten direkt auf meine Domain eingelesen werden. Die Hyperlinks sollen aber weiterhin funktionieren.
@Nessus:
Mein Problem erklärt es, warum ich mich strafbar mache. Ich möchte nur die externen Seiten einbinden lassen. (Genehmigung eingeholt)
Welche "Klasse Snoopy"?
und zwar baue ich gerade an einem dynamischen Menü. Durch eine "root"-Variable setze ich den Wert auf "/", so das die Verlinkung dort startet.
Situation:
Im dyn. Menü klicke ich auf "Tabelle", die auf die "tab.php" verweist. In der "tab.php" habe ich eine Tabelle mit 2 Zellen erstellt. In der linken Zelle hole ich mir per "include" das Menü. In der rechten Zelle soll dann die Tabelle erscheinen.
Problem:
Mit "fopen", "implode" usw. lese ich die Seite komplett ein, so dass die Hyperlinks nicht mehr funktionieren, weil die Seiten direkt auf meine Domain eingelesen werden. Die Hyperlinks sollen aber weiterhin funktionieren.
@Nessus:
Mein Problem erklärt es, warum ich mich strafbar mache. Ich möchte nur die externen Seiten einbinden lassen. (Genehmigung eingeholt)
Welche "Klasse Snoopy"?
Antwort 3 von Nessus
Hi,
mal kurz gegoogelt:
http://www.m-software.de/section.php?c=6
Nessus
mal kurz gegoogelt:
http://www.m-software.de/section.php?c=6
Nessus
Antwort 4 von SGD-Daniel1
Funktioniert bei mir nicht. Habe folgendes eingegeben:
$snoopy->fetchtext(" ... ");
print ($snoopy->results);
Obwohl die Erklärung drüber mir erahnen lässt, dass man die Verlinkung auf der externen Seite ebenfalls nicht nutzen kann!
$snoopy->fetchtext(" ... ");
print ($snoopy->results);
Obwohl die Erklärung drüber mir erahnen lässt, dass man die Verlinkung auf der externen Seite ebenfalls nicht nutzen kann!
Antwort 5 von Nessus
Du hast innerhalb 9 Minuten die Klasse runtergelden, die Readme gelesen/verstanden, getestet und auf deinen Server übertragen?
Genial, ich habe hier einen 19 Bändigen Brockhaus stehen, den hätte ich gerne bis morgen im Word abgetippt, mit deiner Hilfe geht das sicherlich.
Übrigens funktioniert das mit Snoopy.
Wenn nicht, die Seite liegt in einem String vor, jetzt mußt du nur mir Regex die betreffenden Stellen filtern und ersetzen.
Nessus
Genial, ich habe hier einen 19 Bändigen Brockhaus stehen, den hätte ich gerne bis morgen im Word abgetippt, mit deiner Hilfe geht das sicherlich.
Übrigens funktioniert das mit Snoopy.
Wenn nicht, die Seite liegt in einem String vor, jetzt mußt du nur mir Regex die betreffenden Stellen filtern und ersetzen.
Nessus
Antwort 6 von SGD-Daniel1
Runterladen? Wo gibt´s dort ein Downloadlink?
Antwort 7 von SGD-Daniel1
Habe sie gerade gefunden. Mit welchem Programm kann man "*.tar.gz" öffnen?
Antwort 8 von IchProbiersMal
Auch wenn ich noch nicht so ganz raffe, wie das konkrete Problem nun aussieht, werfe ich einfach mal den Html-BASE-Tag in den Raum:
http://de.selfhtml.org/html/kopfdaten/basis.htm#adresse
http://de.selfhtml.org/html/kopfdaten/basis.htm#adresse
Antwort 9 von SGD-Daniel1
<head>
<base href="http://aktuell.de.selfhtml.org">
<!-- ... andere Angaben im Dateikopf ... -->
</head>
Das habe ich gemacht, passieren tut aber nix.
<base href="http://aktuell.de.selfhtml.org">
<!-- ... andere Angaben im Dateikopf ... -->
</head>
Das habe ich gemacht, passieren tut aber nix.
Antwort 10 von IchProbiersMal
Wie gesagt, ich steig bei Deinem Prob bis jetzt nicht durch. Ich erklär einfach mal, wozu der Base-Tag benutzt werden kann, und Du kannst dann entscheiden, ob Dir das hilft.
Mit dem Base-Tag kann man relative Pfadangaben in einer Html-Seite mit einer anderen Basis versehen, als der, die normalerweise verwendet wird (nämlich die Adresse der Seite selbst). Beispiel:
Mit dem Base-Tag kann man relative Pfadangaben in einer Html-Seite mit einer anderen Basis versehen, als der, die normalerweise verwendet wird (nämlich die Adresse der Seite selbst). Beispiel:
Adresse der Seite:
http://www.test.de
Relativer Link im Dokument:
<a href="index.htm">link</a>
Der Browser baut daraus diese absolute Adresse:
http://www.test.de/index.htm
Wenn aber im Head steht:
<base href="http://AndereSeite.de">
Dann wird die absolute Adresse zu:
http://AndereSeite.de/index.htm
Antwort 11 von SGD-Daniel1
Achso ... das hilft mir nicht weiter.
Um mein Problem vielleicht anders zu erklären ... ich brauch ein Gegenstück von "include();"
Weil include bindet die "internen Dateien" ein. Ich brauche aber externe Dateien, die eingebunden werden. Aber weben so, dass alle Verlinkungen funktionieren.
Um mein Problem vielleicht anders zu erklären ... ich brauch ein Gegenstück von "include();"
Weil include bindet die "internen Dateien" ein. Ich brauche aber externe Dateien, die eingebunden werden. Aber weben so, dass alle Verlinkungen funktionieren.
Antwort 12 von IchProbiersMal
Zitat:
Ich brauche aber externe Dateien, die eingebunden werden. Aber weben so, dass alle Verlinkungen funktionieren.
Ich brauche aber externe Dateien, die eingebunden werden. Aber weben so, dass alle Verlinkungen funktionieren.
Mit "fopen" oder auch "fsockopen" bzw Snoopy, je nach Anforderung, holst Du die Dateien, mit "explode()" trennst Du den Kopf vom Body (bei </head>), fügst an das Ende des Kopfes den entsprechenden Base-Tag an und implodest dann wieder mit implode("</head>",$array). Dann kannst Du das Dokument ausgeben.
Antwort 13 von SGD-Daniel1
Klingt gut, aber kannst du das mal anders erklären. Verstehe das nicht ganz.
Antwort 14 von IchProbiersMal
Wenn es sich um Seiten handelt, die man im Browser einfach durch Eingabe der URL aufrufen kann, dann reicht "fopen" aus, um sie zu öffnen und auszulesen. Wenn die Seiten nur durch Formulare oder mit Cookie oder Referrer - oder, oder .. - aufrufbar sind, benötigst Du "fsockopen", um die Seiten zu holen. Oder Du nimmst Snoopy, was im Kern nur eine Bedienungserleichterung von "fsockopen" darstellt.
Dann musst Du noch den Base-Tag in den Head des Html-Dokuments einfügen. Da gibt es verschiedenste Möglichkeiten das zu realisieren.
Angenommen das Dokument sieht so aus
dann würd ich es so machen:
Die Funktion getSite() enthält das Auslesen der Datei mittels "fopen". Ich denk das kriegst Du selbst hin, deshalb hab ich es weggelassen.
Dann musst Du noch den Base-Tag in den Head des Html-Dokuments einfügen. Da gibt es verschiedenste Möglichkeiten das zu realisieren.
Angenommen das Dokument sieht so aus
<html>
<head>
...
...
</head>
<body>
...
...
</body>
</html>
dann würd ich es so machen:
$url="http://test.de";
$htm=getSite($url);
$a=explode("</head>",$htm);
$a[0].="<base href=\"".$url."\">";
$new_htm=implode("</head>",$a);
Die Funktion getSite() enthält das Auslesen der Datei mittels "fopen". Ich denk das kriegst Du selbst hin, deshalb hab ich es weggelassen.
Antwort 15 von SGD-Daniel1
Danke soweit ... ich versuch mich mal dort durchzufitzen.
Antwort 16 von SGD-Daniel1
Also, wenn ich das ...
echo $new_htm;
... hinzufüge, bringt er mir gar nichts aus.
Denn deine Variablen sind ja alle vollständig, sofern ich das nachvollziehen konnte.
echo $new_htm;
... hinzufüge, bringt er mir gar nichts aus.
Denn deine Variablen sind ja alle vollständig, sofern ich das nachvollziehen konnte.
Antwort 17 von IchProbiersMal
Mein Testskript:
<?php
$htm="
<html>
<head>
...
...
</head>
<body>
...
...
</body>
</html>";
$url="http://test.de";
$a=explode("</head>",$htm);
$a[0].="<base href=\"".$url."\">";
$new_htm=implode("</head>",$a);
echo $new_htm;
?>
Antwort 18 von SGD-Daniel1
Bei mir gibt er immer nur eine weiße Seite aus.
Antwort 19 von IchProbiersMal
Weil Du die HTML-Ansicht anschaust. ;-) Benutze die Quelltextanzeige des Browsers oder führe das Skript in der Konsole, statt auf dem Server aus.
Antwort 20 von SGD-Daniel1
Wie soll ich das denn jetzt verstehen?
Antwort 21 von IchProbiersMal
Also das, was das Skript an Text ausgibt, wird vom Browser ja nicht 1:1 angezeigt, sondern als Html-Befehle interpretiert und ausgeführt. Um zu sehen, wie der "Befehlstext" aussieht, musst Du beim Browser in die entsprechende Ansicht wechseln. Bei jedem Browser solltest Du die Quelltextansicht im Menü "Ansicht" finden.
Antwort 22 von SGD-Daniel1
Wozu das Ganze, wenn man das "normal" im Browser sehen will?
Was ist, wenn die externe Seite sich ändert?
Anders, ist die Seite weiß, lässt sich der Quelltext nicht öffnen. Hole ich eine leere Seite vor (Nue Seite), dann ist Quelltext "grau" im Menü Ansicht hinterlegt und nicht anklickbar.
Was ist, wenn die externe Seite sich ändert?
Anders, ist die Seite weiß, lässt sich der Quelltext nicht öffnen. Hole ich eine leere Seite vor (Nue Seite), dann ist Quelltext "grau" im Menü Ansicht hinterlegt und nicht anklickbar.
Antwort 23 von IchProbiersMal
Zitat:
Wozu das Ganze, wenn man das "normal" im Browser sehen will?
Was ist, wenn die externe Seite sich ändert?
Wozu das Ganze, wenn man das "normal" im Browser sehen will?
Was ist, wenn die externe Seite sich ändert?
Es geht hier nur um einen Test mit einer Seite, die, da einfach gehalten, nichts Darstellbares enthält.
Zitat:
Anders, ist die Seite weiß, lässt sich der Quelltext nicht öffnen.
Anders, ist die Seite weiß, lässt sich der Quelltext nicht öffnen.
Keine Ahnung, was Du da machst, dass Du nix sehen kannst. Bleibt nur der Tip, das Skript in der Konsole auszuführen. Du startest die php.exe, wie einen Dos-Befehl, und gibst das Skript, welches ausgeführt werden soll, als Argument an.
Beispiel:
c:\php5\php.exe d:\test\text.php
Antwort 24 von SGD-Daniel1
Achso, dass habe ich die ganze Zeit gemacht ... da bringt er mir folgendes:
$url=" ..."; $htm=getSite($url); $a=explode("",$htm); $a[0].=""; $new_htm=implode("",$a); echo $new_htm; ?>
... steht für die externe Seite
$url=" ..."; $htm=getSite($url); $a=explode("",$htm); $a[0].=""; $new_htm=implode("",$a); echo $new_htm; ?>
... steht für die externe Seite
Antwort 25 von IchProbiersMal
Zitat:
Achso, dass habe ich die ganze Zeit gemacht
Achso, dass habe ich die ganze Zeit gemacht
In der Konsole? Wie haste dann ne weisse Seite gekriegt? Langsam kapier ich nix mehr.
Aber wie auch immer, dann ist das Problem, dass PHP nicht ausgeführt wird oder Du hast den PHP-Anfangstag vergessen (<?php).
Antwort 26 von SGD-Daniel1
Die weiße Seite habe ich bekommen, wenn ich "dein Testscript" online aufgerufen habe.
Das mit der Konsole habe ich Lokal und nicht online gemacht.
Das mit der Konsole habe ich Lokal und nicht online gemacht.
Antwort 27 von IchProbiersMal
Zitat:
Das mit der Konsole habe ich Lokal und nicht online gemacht.
Das mit der Konsole habe ich Lokal und nicht online gemacht.
Haste denn PHP bei Dir lokal überhaupt installiert? Sonst kann das in der Konsole nämlich nicht funzen. Einen lokalen Webserver scheinst Du ja nicht zu haben, oder doch? Wäre jedenfalls zu empfehlen, weil das wesentlich praktischer fürs Entwickeln ist, als ein externer Server. Und dann klappts auch in der Konsole:
http://www.apachefriends.org/de/xampp.html
Antwort 28 von SGD-Daniel1
Nee, lokal habe ich kein lokalen Webserver. Wozu auch, wenn ich das online teste, was ich testen will.
Aber mein Problem wird doch auch ohne dem lösbar sein oder?
Aber mein Problem wird doch auch ohne dem lösbar sein oder?
Antwort 29 von SGD-Daniel1
Ich lass das nun mit php ... werde das erstmal mit iframes einbinden.

