Seite 1 von 1

Links automatisch im neuen Fenster

Verfasst: 28.07.2008, 14:57
von dossi
Hallo!

Klingt sicherlich komisch - er will Links im neuen Fenster und kennt den Befehl nicht? Darum geht es aber nicht. Ich habe den Fehler erst im Nachhinein bemerkt und möchte verhindern, jeden Link in einen href= mit target_blank umwandeln zu müssen. Vielleicht gibt es da ja auch eine globale Möglichkeit... PHP kann ja so viel.

Ich kopiere mal einen Teil der betreffenden ads.php ein:

<?php
include("include/config.php");
$linkid = $_GET['linkid'];

if ($linkid == '43') { $head = "1822tagesgeld"; $link = "https://ad.zanox.com/ppc/?9533444C1487133339T"; }
if ($linkid == '44') { $head = "1822festgeld"; $link = "https://ad.zanox.com/ppc/?9613508C1594393155T"; }

print ("
<td width=613 valign=top bgcolor='#FFFFFF'>
<table width=600 align=center border=0 cellpadding=0 cellspacing=0>

<tr><td>
<table width=600 border=0 cellpadding=0 cellspacing=0>
<tr><td>
<iframe name='content' src='$link' width='600' height='3000' border='0' frameborder='0'></iframe>
</td></tr>
</table>
</td></tr>
<tr><td>&nbsp;</td></tr>
</table>
</td>
");

?>

Wie kriege ich das nun hin, dass die Links in einem neuen Fenster öffnen? So wie es jetzt ist, öffnen sie sich in einem Frame aber erstens darf ich die Seiten nicht in die eigene einbinden und zweitens haut das ja auch mit der Breite nicht hin.

Liebe Grüße

Martin

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Re: Links automatisch im neuen Fenster

Verfasst: 28.07.2008, 15:11
von Mork vom Ork
In diesem Code sehe ich nur, dass du Ziel-URLs in einem <iframe> aufrufst, was für mich wenig Sinn ergibt, und dass die Werbetreibenden darüber nicht begeistern sein werden, ihre Seiten unter deiner Fahne (URL) segeln zu sehen, schriebst du ja schon.

Wo sind denn die problematischen <a>-Elemente? Oder ist das gar nicht der Code, der die Werbebanner anzeigt, sondern nur ein Klickzähler?

Davon unabhängig ist PHP eigentlich das falsche Mittel, denn PHP läuft im Server bzw. kein Browser versteht PHP. Wenn überhaupt, dann muss eine HTML- oder Javascript-Lösung her - die kann aber natürlich von PHP ausgegeben werden.

Verfasst: 28.07.2008, 15:32
von dossi
Bei dem Versuch, dir das Ganze zu beschreiben, fiel es mir ein:

Ich muss nicht in der ads.php auf target_blank setzen, sondern da, wo ich den Link einbaue.

Allerdings ist das Include noch da - es öffnet sich eine neue Seite, die die Zielseite in meiner Seite beinhaltet - nur ohne meine Seite ringsherum.

Damit geht es schonmal nicht:

<base target="_blank">

Und wenn ich das

print ("
<td width=613 valign=top bgcolor='#FFFFFF'>
<table width=600 align=center border=0 cellpadding=0 cellspacing=0>

<tr><td>
<table width=600 border=0 cellpadding=0 cellspacing=0>
<tr><td>
<iframe name='content' src='$link' width='600' height='3000' border='0' frameborder='0'></iframe>
</td></tr>
</table>
</td></tr>
<tr><td>&nbsp;</td></tr>
</table>
</td>
");

rausnehme, kommt nur eine leere Zielseite, die immer noch auf meine Domain verweist :-(

Ergänzung: In diese Datei trage ich nur die Links zu den Seiten ein, die aufgerufen werden sollen. Der Aufruf erfolgt so:

Ich klicke auf einer Seite (meiner Webseite) auf einen Link

<a target="_blank" href="ads.php?linkid=94"><font color="#000000">
<img border="0" src="/img/pic.png"> Und hier zu können Sie Bausparverträge
vergleichen.</font></a>

und gelange darüber auf die gewünschte Internetseite.

Link94 sieht dann so aus:

if ($linkid == '94') { $head = "Tarifcheck Baufinanzierungen"; $link = "https://ad.zanox.com/ppc/?9622243C1781905939T"; }

Hat den Vorteil, dass ich bei Änderung des Links nur in der ads.php eine Änderung vornehmen brauche und nicht auf allen Unterseiten. Leider war der Code ja für die Startseite gedacht und da war es natürlich so, dass die Unterseiten nicht in einem neuen Fenster geöffnet, sondern includet werden.

So aber öffnet sich nicht der Link

https://ad.zanox.com/ppc/?9622243C1781905939T

sondern der hier:

https://www.meinedomain.de/ads.php?linkid=94

Und da bin ich mit meinem Latein am Ende. Es ist völlig logisch, dass das passiert aber ich weiß nicht, wie ich das ändern kann.

Verfasst:
von

Verfasst: 28.07.2008, 16:53
von Mork vom Ork
dossi hat geschrieben:Ich muss nicht in der ads.php auf target_blank setzen, sondern da, wo ich den Link einbaue.
target ist ein Attribut von <a>, ja.
Ich klicke auf einer Seite (meiner Webseite) auf einen Link

<a target="_blank" href="ads.php?linkid=94">

[…]

Link94 sieht dann so aus:

if ($linkid == '94') { $head = "Tarifcheck Baufinanzierungen"; $link = "https://ad.zanox.com/ppc/?9622243C1781905939T"; }
Was du brauchst, ist einfach eine Weiterleitung, die dem Browser beim Aufruf von ads.php?blabla sagt, "Schaue da drüben nach". Das kannst du wie nachfolgend realisieren. Die Funktionsweise nach außen hin ist die Gleiche, es ist daher mehr Geschmackssache, welche Variante du einsetzt. Mir persönlich sagt erstere mehr zu, sie ist kürzer, übersichtlicher und es muss nicht der Klotz PHP mitgeschleppt werden.

1. Apache/.htaccess:
Aufruf via /ads/[Nummer]/.

Code: Alles auswählen

Redirect temp /ads/0815/ htt&#1088;&#58;//ad.example.com/soundso?dings
Redirect temp /ads/1234/ htt&#1088;&#58;//ad.example.com/tralala?abc
Theoretisch brauchst du wohlgemerkt kein Verzeichnis /ads/ anlegen, auch Unterverzeichnisse müssen nicht sein, denn ankommende URLs werden vom Apache frühzeitig abgefangen und entsprechend weitergeleitet. Für die gesamte Funktion reicht das Anlegen und Befüllen der betreffenden .htaccess.

Es ist aber nicht verkehrt, statt /.htaccess eine /ads/.htaccess zu benutzen. Der Apache muss bei jedem einzelnen Zugriff die .htaccess neu einlesen, packst du die Werbeweiterleitungen in eine eigene .htaccess in /ads/, muss er sich damit nur bei tatsächlichen Zugriffen auf /ads/ abarbeiten. Außerdem bleiben die Werbeweiterleitungen von restlichen Einstellungen schön übersichtlich getrennt.
Die Redirect-Anweisungen bleiben aber in jedem Falle die gleichen, egal in welcher .htaccess sie sich befinden, sie beziehen sich immer auf einen vollständigen URL-Pfad. Im Falle von /ads/.htaccess sollte lediglich noch eine Zeile 'Options -Indexes' eingefügt werden, um allzu neugierige Blicke, d.h. manuelle Aufrufe von /ads/ zu verhindern.

2. PHP:
Komplette ads.php, Aufruf via /ads.php?linkid=[Nummer]

Code: Alles auswählen

<?php
$ziele = Array&#40;
	815 => "htt&#1088;&#58;//ad.example.com/soundso?dings",
	1234 => "htt&#1088;&#58;//ad.example.com/tralala?abc"
&#41;

if &#40;isset&#40;$ziele&#91;$_GET&#91;"linkid"&#93;&#93;&#41; &#123;
	header&#40;"HTTP/1.0 302 Gehst du hier"&#41;;
	header&#40;"Location&#58; " . $ziele&#91;$_GET&#91;"linkid"&#93;&#93;&#41;;
&#125;
else &#123;
	header&#40;"HTTP/1.0 404 Not found"&#41;;
	echo "<html><body><p>Kenn ich nich, will ich nich, mach ich nich.</p></body></html>";
&#125;
?>
Es gibt noch andere Methoden, mittels PHP diverse Ziele anzusteuern. Ich habe hier ein Feld verwendet, es geht aber genauso gut mittels switch und, wenn auch etwas aufwendiger, so wie du es im Ansatz schon hattest mittels if.

Verfasst: 28.07.2008, 18:26
von dossi
Danke für die Mühe - das sieht doch schon gut aus.
Variante 1 sagt mir auch am Meisten zu.
Nur, um es richtig zu verstehen:

Ich erstelle also ein Verzeichnis ADS und eine Datei .htaccess, die ich in das Verzeichnis ADS packe.

In die .htaccess trage ich dann alle Links ein, die auch in der ads.php sind, z.B.

In der ads.php stehen dieser Link...
if ($linkid == '95') { $head = "Tarifcheck Haftpflichtversicherungen"; $link = "https://ad.zanox.com/ppc/?9621946C827556757T"; }


und in die .htaccess trage ich für diese Links das ein:


Redirect temp /ads// htt&#1088;://meinedomain.de/ads.php?
Redirect temp /ads/95/ https://ad.zanox.com/ppc/?9621946C827556757T

Na, ich glaube, das habe ich jetzt falsch verstanden.
Hm und bei der PHP-Variante dann so?

<?php
$ziele = Array(
95 => "https://ad.zanox.com/ppc/?9621946C827556757T",
)

if (isset($ziele[$_GET["linkid"]]) {
header("HTTP/1.0 302 Gehst du hier");
header("Location: " . $ziele[$_GET["linkid"]]);
}
else {
header("HTTP/1.0 404 Not found");
echo "<html><body><p>Seite nicht gefunden.</p></body></html>";
}
?>

Da verstehe ich dann nicht, wie aus der Zeile

if ($linkid == '95') { $head = "Tarifcheck Haftpflichtversicherungen"; $link = "https://ad.zanox.com/ppc/?9621946C827556757T"; }

ein

95 => "https://ad.zanox.com/ppc/?9621946C827556757T",

wird. Fehlt da nicht etwas? Bei 404 ist klar aber womit soll ich dieses "Gehst du hier" ersetzen? Ist das Ganze etwa ein Code für einen Link - muss also für jeden einzelnen Link dieser Code verwendet werden?

LG Martin

NACHTRAG: Oh je, ich sehe gerade, dass auch Banner sich nicht auf einer neuen Seite öffnen. Ich glaube, man sollte den ganzen Kram lieber umdrehen und generell Links in einem neuen Fenster öffnen. Es ist ja leichter, auf jeder Seite das Menü und Header und Footer zu includen. Aber wenn ich deinen Code verstehe, dann geht es ja auch noch.

Verfasst: 28.07.2008, 21:03
von dossi
Ich habe eine Lösung gefunden. Trotzdem danke - dadurch habe ich das Problem ja erst verstanden.

Verfasst: 28.07.2008, 21:07
von Mork vom Ork
dossi hat geschrieben:Ich erstelle also ein Verzeichnis ADS und eine Datei .htaccess, die ich in das Verzeichnis ADS packe.

In die .htaccess trage ich dann alle Links ein, die auch in der ads.php sind
Richtig, auch wenn ich unter ADS was anderes verstehe als unter ads ;)
if ($linkid == '95') { $head = "Tarifcheck Haftpflichtversicherungen"; $link = "https://ad.zanox.com/ppc/?9621946C827556757T"; }

und in die .htaccess trage ich für diese Links das ein:

Redirect temp /ads// htt&#1088;://meinedomain.de/ads.php?
Redirect temp /ads/95/ https://ad.zanox.com/ppc/?9621946C827556757T

Na, ich glaube, das habe ich jetzt falsch verstanden.
Wenn man davon absieht, dass die erste Zeile überflüssig ist (die mit /ads// -> ads.php), hast du das vollkommen korrekt umgesetzt. Für jede Zeile 'if ($linkid == blabla' aus deinem PHP-Skript schreibst du eine entsprechende Redirect-Zeile in die neue .htaccess.

Auf eine ads.php oder ähnliches kannst du dann verzichten, die gesamte Weiterleitung wird mittels der .htaccess abgewickelt. Die zweite Variante, jene mit PHP versteht sich also als Alternative zur .htaccess-Variante. Beide sind voneinander unabhängig. Du kannst entweder die eine einsetzen oder die andere, beide gleichzeitig ist nutzlos.
$ziele = Array(
95 => "https://ad.zanox.com/ppc/?9621946C827556757T",
)
Prinzipiell ja, nur dass der letzte Eintrag im Feld logischerweise kein Komma am Ende braucht (bzw. haben darf).
Da verstehe ich dann nicht, wie aus der Zeile

if ($linkid == '95') { $head = "Tarifcheck Haftpflichtversicherungen"; $link = "https://ad.zanox.com/ppc/?9621946C827556757T"; }

ein

95 => "https://ad.zanox.com/ppc/?9621946C827556757T",

wird. Fehlt da nicht etwas? Bei 404 ist klar aber womit soll ich dieses "Gehst du hier" ersetzen?
Mit den Zeilen Nummer => URL wird das Feld $ziele gefüllt; jeder Eintrag erhält als Index die Nummer und als Datum die URL. Im Anschluss daran wird mit

if (isset($ziele[$_GET["linkid"]]) {
header("HTTP/1.0 302 Gehst du hier");
header("Location: " . $ziele[$_GET["linkid"]]);
}

zuerst geprüft, ob im Feld $ziele der als URL-Parameter linkid übergebene Index existiert (meinetwegen 95), und falls ja, wird a) der HTTP-Status 302 ausgespuckt, also eine Weiterleitung, und b) mittels Location: das Ziel der Weiterleitung aus dem Feld $ziele ausgegeben.

An diesem Code musst du nichts ändern, die einzigen Eintragungen erfolgen am Anfang des Skriptes, dort, wo das Feld $ziele mit URLs gefüllt wird. Er hat dann alles, was er braucht: Deine interne Werbenummer und die URL, an die die Reise gehen soll.

Das "Gehst du hier" steht da nur, weil die erste Zeile einer HTTP-Antwort aus der Protokollversion (hier: HTTP/1.0), dem Statuscode (302) und ein paar erklärenden Worten (Gehst du hier) besteht. Wichtig für den Browser sind alleine HTTP-Version und Statuscode, was da noch hinterkommt, ist technisch völlig wurscht, das ist künstlerische Freiheit. Du darfst auch gerne das standardmäßige "Found" dort einsetzen.
ich sehe gerade, dass auch Banner sich nicht auf einer neuen Seite öffnen. Ich glaube, man sollte den ganzen Kram lieber umdrehen und generell Links in einem neuen Fenster öffnen.
Das Öffnen in einem neuen Fenster bekommst du zuverlässig nur dadurch hin, dass du die <a>-Elemente mit dem target-Attribut bestückst.
Insbesondere mit obiger Weiterleitungsmechanik hat das nix zu tun.