print seite nur von eigener Domain

Begonnen von kekule, 20 Dezember 2008, 10:43:01

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

kekule

Hallo Leute

Ich bemerke das von anderen Webseiten immer auf die Print-Seite meiner news verwiesen wird.
Es ist zwar der Seitenname und Linz zusehen, jedoch würde ich mir mehr freuen wenn doch auf die normalen news gelinkt werden würde.

Hat jemadn von euch eine Idee, wei man das machen kann, das wenn ein User auf eine print-Seite zugreift, er nur dann auf die Printseite kommt, wenn die refferendierende Seite vom eigenen Domain kommt. Wenn er von einer fremden Seite kommt soll er nicht auf die printseite kommen.

Hat jemand von euch eine idee, dazu?

Freue mich auf eure Antworten.

lG
Markus

kekule

Hallo Leute

Hab nun einen kleinen workaround für mich gemacht.
bin mir nicht sicher ob er sauber ist, aber er klappt.

Sofern wer interesse hat einfach melden.

lg

Markus

Eismann1976

Mal den Finger heb. Mich nervt das nämlich auch.
LG Eismann


Kein Support per PN/ICQ/MSN ect.
Bitte schreibt eure Frage ins Forum, so haben Alle was von der Antwort.
Viele Antworten findest du auch im DOKUWIKI



http://www.wtj-clan.de | pragmaMx 0.1.11.2 &  1.12 RC2 | PHP: 5.2.9 | mysql: 5.1.33 | apache: 2.2.11 (Win32) & Microsoft-IIS/7.5

kekule

Hallo Eismann

Das ganze ist keine umleitung sondern, wenn man auf die Seite von einem anderem Domain kommt als dem eigenen wird der inhalt des Artikels entfernt. und nur der Link zum Artikel ist sichtbar.

zu sehen zb. unter http://www.austria-aqua.net/News-file-print-sid-106.html

naja, wie funktionierts. im Ordner modules/News/ gibt es eine print.php. in der habe ich folgendes eingefügt zur Abfrage woher der User kommt.

$referrer = $_SERVER['HTTP_REFERER'];
if (strpos($referrer, 'domain.comt')) {
$this = 'good';


danach frage ich die Variable $this wiedr ab und wenn diese "Gut" ist passt alles wenn nicht wird der Inhalt entfernt.

die komplette print sieht so bei mir aus.
<?php
/**
 * This file is part of 
 * pragmaMx - Web Content Management System.
 * Copyright by pragmaMx Developer Team - http://www.pragmamx.org
 *
 * pragmaMx is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * $Revision: 1.14 $
 * $Author: tora60 $
 * $Date: 2007/12/22 14:04:58 $
 *
 * this file based on:
 * php-nuke Web Portal System - http://phpnuke.org/
 * Thatware - http://thatware.org/
 */

defined('mxMainFileLoaded') or die('access denied');

if (!isset(
$_REQUEST['sid'])) {
    include(
dirname(__FILE__) . '/index.php');
    exit();
}

$module_name basename(dirname(__FILE__));
mxGetLangfile($module_name);
include_once(
PMX_SYSTEM_DIR "/mxNewsFunctions.php");

$sid intval($_REQUEST['sid']);
$result sql_query("select title, time, hometext, bodytext, topic, notes from ${prefix}_stories where sid=" $sid "");
list(
$title$time$hometext$bodytext$topic$notes) = sql_fetch_row($result);
$result2 sql_query("select topictext from " $prefix "_topics where topicid=" intval($topic) . "");
list(
$topictext) = sql_fetch_row($result2);
$time formatTimestamp($time);
/**
 * sicherstellen, dass der Seitentitel keine Tags enth‰lt und Sonderzeichen nicht zerst¸ckelt werden
 */
$title strip_tags(str_replace('&nbsp;'' '$title));



echo 
"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" 
_CHARSET "\" />
<meta http-equiv=\"content-language\" content=\"" 
_DOC_LANGUAGE "\" />
<title>" 
$title "</title>
</head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#000080\" vlink=\"#000080\" alink=\"#000080\">
<center>
<table border=\"0\" width=\"640\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000000\"><tr><td>
<table border=\"0\" width=\"640\" cellpadding=\"20\" cellspacing=\"1\" bgcolor=\"#FFFFFF\"><tr><td>
<center>"
;

$referrer $_SERVER['HTTP_REFERER'];
if (
strpos($referrer'example.net')) {
$this 'good';


if (
$this == 'good' )
{
if (
file_exists("images/" $site_logo ""))
    echo 
"<img src=\"images/" $site_logo "\" border=\"0\" alt=\"" $sitename "\" /><br /><br />";
echo 
"
<div class=\"content\"><b>" 
$title "</b></div><br />
<div class=tiny><b>" 
_PDATE "</b> $time<br /><b>" _PTOPIC "</b> $topictext</div><br />
</center>
<div class=\"content\">
$hometext<br /><br />
$bodytext<br /><br />
$notes<br /><br />
</div>
</td></tr></table></td></tr></table>
<br /><br />"
; }


echo 
"<div class=\"content\"><b>" $title "</b></div><br />
<div class=\"content\">
_COMESFROM " <br />
<a href=\"" 
MX_BASE_URL "\">" $sitename "</a><br /><br />
_THEURL "<br />
<a href=\"" 
MX_BASE_URL "modules.php?name=News&amp;file=article&amp;sid=$sid\">" MX_BASE_URL "modules.php?name=News&amp;file=article&amp;sid=$sid</a>
</div>
</center>
</body>
</html>
"
;

?>


example.net muss durch deinen Domainersetzt werden damits klappt.

wie gesagt ist ein workaround, würde mich freuen wenn es jemand verbessert.
da ja der referrer ja nicht unbedingt unfälschbar sein soll.

lg

markus

Andi

Moin :)

feine Sache, wobei ich einen evtl. etwas eleganteren Vorschlag habe....


Anstatt die Seite unvollständig, bzw. überhaupt anzuzeigen, könnte man doch einfach auf die normale Seite umleiten.

Dazu einfach in der print.php folgendes Konstrukt, direkt hinter die Zeile
$module_name = basename(dirname(__FILE__)); einfügen:

if (!MX_IS_ADMIN && (empty($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], PMX_HOME_URL) === false)) {
    $target = PMX_HOME_URL . '/modules.php?name=' . $module_name . '&file=article&sid=' . intval($_REQUEST['sid']);
    @header('HTTP/1.1 301 Moved Permanently');
    @header('Status: 301 Moved Permanently');
    @header('Location: ' . $target);
}


Wenn jetzt der Referer leer ist, oder nicht von der eigenen Seite kommt, wird per HTTP-Header Umleitung, die normale Artikelseite aufgerufen. Dem Browser (also auch google) wird mitgeteilt, dass diese Umleitung von Dauer sein soll.
Als Admin kann man die Seite dennoch ganz normal aufrufen.

Wenn man jetzt noch weiter unter, folgendes bei den Metatags einfügt, dann wird google, diese Seiten mit der Zeit aus dem Index entfernen und nicht wieder aufnehmen.

<meta name=\"robots\" content=\"NOINDEX, NOFOLLOW\" />


Wenn sich das bewährt, übernehmen wir das ins System ;)


@ kekule

Vorsicht, die Variable $this ist seit PHP5 eine Systemvariable des PHP-Klassensystems. Die "falsche" Verwendung, kann zu unvorhergesehenen Fehlern führen. Also besser nen anderen Namen verwenden...
schön´s Grüssle, Andi

kekule

Hallo Andi

Danke dir, das ganze klappt jetz auch bei mir, hab mich jetz ne weile spielen müssen das es gepasst hat, keine Ahnung was da nicht gepasst hat, Hatte ständig irgendwelche Parse Errors  :mad2:

Aber jetz passt es :)
Ich bin dafür das es in das System kommt  :thumbup:  :BD:

lG
Markus

Eismann1976

#6
Ich glaub da hab ich gerade was geschrottet. Muss mal eben nen Backup rauskramen.   :puzzled:

Edit: Ich kann die Seite trotzdem als Gast direkt aufrufen.    :gruebel:

Doppeledit: Lag am Cache für Gäste. Beim ersten Aufruf funktioniert Alles wie es soll. Ruft man die Seite einmal über den korrekten Weg (Artikelansicht -> Druckversion anzeigen) auf geht sie hinterher auch im Direktaufruf.   :thumbup:
LG Eismann


Kein Support per PN/ICQ/MSN ect.
Bitte schreibt eure Frage ins Forum, so haben Alle was von der Antwort.
Viele Antworten findest du auch im DOKUWIKI



http://www.wtj-clan.de | pragmaMx 0.1.11.2 &  1.12 RC2 | PHP: 5.2.9 | mysql: 5.1.33 | apache: 2.2.11 (Win32) & Microsoft-IIS/7.5

kekule

Hallo Eismann

Welche Seite meinst du ?

und welche Änderung hast du eingebaut, die von mir oder die von Andi?

lg
Markus

Eismann1976

Huhu

Jetzt Andis. Hatte vorher keine Zeit.

Deine Lösung wäre auch ok gewesen aber die zweite Version von Andi fand ich noch ein wenig besser.

Gruß Eismann

PS: Siehe EDIT oben
LG Eismann


Kein Support per PN/ICQ/MSN ect.
Bitte schreibt eure Frage ins Forum, so haben Alle was von der Antwort.
Viele Antworten findest du auch im DOKUWIKI



http://www.wtj-clan.de | pragmaMx 0.1.11.2 &  1.12 RC2 | PHP: 5.2.9 | mysql: 5.1.33 | apache: 2.2.11 (Win32) & Microsoft-IIS/7.5

kekule

#9
@ Andi

Hallo Andi

ich weiss zwar nicht wohin die Entwicklung geht, jedoch würde ich vorschlagen die <meta name=\"robots\" content=\"NOINDEX, NOFOLLOW\" />
bei den Print seiten generell einzu bauen, im Content modul in der index.php in der function PrintContPage()

dort habe ich auch gleich nach der { folgendes eingefügt und es klappt schön.

if (!MX_IS_ADMIN && empty($_SERVER['HTTP_REFERER']) || (strpos($_SERVER['HTTP_REFERER'], PMX_HOME_URL) === false))
{
$target = PMX_HOME_URL . '/modules.php?name=Content&pid=' . intval($_REQUEST['pid']);
header('HTTP/1.1 301 Moved Permanently');
header('Status: 301 Moved Permanently');
header('Location: '.$target);
exit;
}


wäre das sicher auch nett.

lG

Markus

Andi

#10
Moin :)


ist schon drin ;)


Und hier noch ein entsprechender Beitrag zum Kalender:
http://www.pragmamx.org/Forum-topic-28373-topicseen.html
schön´s Grüssle, Andi