Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 72%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 23%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 21%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 12%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 7%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 7%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 3%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 306 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Dabei seit: 19.02.2009

Beiträge: 69

 

1 Zum Seitenanfang

Sonntag, 1. August 2010, 14:45

Seitentitel per Link ändern...

Hallo,

ich habe folgendes Problem:

Ich habe eine HTML Datei per PHP-Include in meine Homepage eingebunden. Wenn man auf einen Link in dem PHP-Include "Kasten" klickt, dann lädt sich der PHP-Include Teil neu. Allerdings nicht der Titel, welcher gleich bleibt. Wie kann man also den Titel schon im Link bestimmen?

Der Titel ist in der Variablen $subject festgelegt.

MfG
RazerGamingUser
Have a look at my homepage:
www.razergaming.wmw.cc

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »RazerGamingUser« (1. August 2010, 14:45)

 

Treml

Tripel-As

Dabei seit: 19.03.2003

Beiträge: 223

 

2 Zum Seitenanfang

Sonntag, 1. August 2010, 15:02

Du schreibst von einer Variablen namens $subject, aber wo wird diese definiert und woher nimmt sie ihren Inhalt? Wenn sie sich in der includeten Datei befindet, der Title-Tag davor aber schon im Template definiert wurde, gibt es mit PHP keine Möglichkeit sie in den Seitentitel zu bekommen.

Um den Seitentitel in PHP über eine Angabe im Link zu definieren gibt es nur eine mir bekannte Möglichkeit: Du müsstest an den Pfad einen zusätzlichen Parameter mit dem Titel anhängen und diesen über die Variable $GET als Seitentitel festlegen. Da der Titel dann aber auch in der Adresszeile steht, sieht das recht unprofessionell aus.

Besser wäre es, die Seitentitel separat zu hinterlegen. Wenn Du nicht zu viele Unterseiten hast, würde ich dazu eine Switch-Anweisung im Title-Tag empfehlen.

Da Du hier für PHP im falschen Unterforum bist, kann ich gerne auch eine JavaScript-Lösung vorschlagen, würde davon aber aus Gründen der Barrierefreiheit abraten.
i u t w w f c b - u y a s t m w m
 

af_net

Jungspund

Dabei seit: 26.07.2010

Beiträge: 16

 

3 Zum Seitenanfang

Dienstag, 3. August 2010, 08:22

Hey, vergiss auf jeden Fall Javascript. Schon allein aus Gründen der Suchmaschinenoptimierung.
Geh wie folgt vor:

Wenn du auf eine Link klickst, dann übergibst du ja sicherlich eine Variable z.b. "?content=kontakt" die deinem Skript mitteilt, was eingebunden werden soll.
Dein Include sieht dann z.B. so aus, wenn der Dateiname (kontakt.inc.php) gleich dem Variablenwert ist:

PHP-Quelltext

1
2
3
if (file_exists($_REQUEST['content'].'.inc.php')) {
    include($_REQUEST['content'].'.inc.php');
}


In dem HTML-Code im Header würde ich ebenfalls eine Datei (für die Übersicht) inkludiere, ich nenn sie mal meta.inc.php:

Quellcode

1
2
3
<head>
<?php include('meta.inc.php'); ?>
</head>


in dieser Datei kannst du immer prüfen, welcher Inhalt eingebunden wird und kannst dementsprechend die Meta-Tags setzen:

PHP-Quelltext

1
2
3
4
if ($_REQUEST['content'] == 'kontakt') {
        echo '<title>Das Kontaktformular</title>';
        echo '<meta name="description" content="Hier finden Sie das Kontaktformular">';
    }


Das ist jetzt mal der einfachste Ansatz.

MfG
MfG
spambog.com - Wegwerf-eMail-Adresse
feedeater.de - Feed-Portal
 

Dabei seit: 19.02.2009

Beiträge: 69

 

4 Zum Seitenanfang

Dienstag, 3. August 2010, 15:55

Wegen der Suchmaschinenoptimierung und auch wegen Einbindungen z.B. in Facebook (via Share o.Ä.) benötige ich die Titel, genau.

Also habe ich das jetzt richtig verstanden?

  1. Ich binde in den Head-Bereich via PHP Include eine PHP Datei mit Meta-Daten ein.
  2. Diese Meta-Datei enthält die Seitenbeschreibung und den Titel, der individuell geändert werden kann.
  3. Die Änderung wird z.B. so festgestellt: www.domain.de?id=21 (So ist es bei mir glaube ich.) Hier wird dann die ID-Nummer ausgelesen und in der Meta-PHP-Datei wird danach passend gesucht.
  4. Die ID hier entspricht also "content" in deinem Beispiel!?
  5. Und "kontakt" aus deinem Beispiel muss dann die ID-Nummer sein, oder!?


Aber wohin muss ich den ersten Codeteil tun? Es erscheint mir logisch, dass er gebraucht wird:

PHP-Quelltext

1
2
3
if (file_exists($_REQUEST['content'].'.inc.php')) {
    include($_REQUEST['content'].'.inc.php');
}


Allgemein klingt das schon sehr gut.

------

Gibt es denn eine Möglichkeit, die Einträge automatisch zu generieren? Denn ich habe ja Variablen, z.B. $subject (=Das soll der Seitentitel sein...) und $description (=Das soll dann auch die Beschreibung sein in den Meta-Tags...).
Have a look at my homepage:
www.razergaming.wmw.cc

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »RazerGamingUser« (3. August 2010, 15:55)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

5 Zum Seitenanfang

Dienstag, 3. August 2010, 16:21

also so sieht dann zb dine index.php aus

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<?php
$filesArray = array(
=>'default.inc.php',
21 => 'test21.inc.php',
22 => 'test22.inc.php',
//usw..
);
if(isset($_GET['id']) && file_exists($filesArray[$_GET['id']])){
    include $filesArray[$_GET['id']];
}else{
   include $filesArray[0];
}
?>
</head>
<body>
paar divs
</body>

und deine test21.inc.php sehen dann so aus:

HTML

1
2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Das ist test 21.inc.php</title>

und verwende bitte kein $_REQUEST

EDIT :

zu deiner 2en Frage: natürlich geht das:
index.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$werteArray = array(
21 => array(
       'subject'=>'irgendwas tolles',
       'description'=>'noch mehr tolle sachen'
    )
22 => array(
       'subject'=>'irgendwas tolles2',
       'description'=>'noch mehr tolle sachen2'
    )
)
?>
<html>
<head>
<?php
if(isset($_GET['id']) && in_array($_GET['id'],$werteArray)){
   echo $werteArray[$_GET['id']]['subject'] ; //subject ausgeben
echo $werteArray[$_GET['id']]['description'] ; //desicription ausgeben
}else{
    echo $werteArray[0]['subject'] ; //subject ausgeben
echo $werteArray[0]['description'] ; //desicription ausgeben
}
?>
</head>
<body>
paar divs
</body>
Mein kleines Projekt
-Cruel Online-

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »cccpmik« (3. August 2010, 16:21)

 

af_net

Jungspund

Dabei seit: 26.07.2010

Beiträge: 16

 

6 Zum Seitenanfang

Dienstag, 3. August 2010, 21:13

1. Genau!
2. Genau!
3. Ja!
4. Ja!
5. Ja!

So wie es cccpmik zeigte, geht es zwar, aber ist doch sehr unübersichtlich. Ich würde es so machen wie ich!

Den ersten Code bindet den Inhalt ein, also irgendwo im BODY wo du den Inhalt ausgeben willst!

Nutze $_REQUEST weil das $_POST und $_GET beinhaltet. Musst halt nur sicherstellen das es kein $_COOKIE mit "content" geben darf.
MfG
spambog.com - Wegwerf-eMail-Adresse
feedeater.de - Feed-Portal
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 576

 

7 Zum Seitenanfang

Dienstag, 3. August 2010, 22:36

Ich würde dir auch zu der Variante von cccpmik raten, weil, der Request den man bekommt wird generell als unsicher angenommen, da nie sichergestellt werden kann, ob dieser nicht manipuliert wurde (mutwillig oder auch nicht). Die Variable $_REQUEST, beinhaltet das gesamte Array von $_GET und $_POST, wobei nicht sichergestellt werden kann, aus welchen der beiden Array der Wert stammt.
Zusätzlich sollte man wissen, das $_POST Werte die $_GET Werte innerhalb von $_REQUEST überschrieben werden.
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

8 Zum Seitenanfang

Mittwoch, 4. August 2010, 07:47


Ich würde es so machen wie ich!


dir ist klar dass man für includes eine whitelist haben muss oder? in diesem fall

PHP-Quelltext

1
2
3
if (file_exists($_REQUEST['content'].'.inc.php')) {
    include($_REQUEST['content'].'.inc.php');
}


hast du auch kein else, hier prüfst du nur ob die datei exestiert und wenn ja, dann wird die eingebunden, sonst passiert nichts. wenn man das ganze übersichtlicher gestalten möchte, kann man das in eine funktion auslagern und dann braucht man nur die funktion dann an einer bestimmten stelle aufrufen. außerdem hat man durch request die möglichkeit von Cross Site Request Forgery, selbst auf php.net steht folgendes:

Zitat


Hinweis: Die Variablen in $_REQUEST werden dem Skript mittels der GET-, POST- und COOKIE-Inputmechanismen zur Verfügung gestellt. Daher kann der Inhalt durch einen entfernten Benutzer modifiziert worden sein und ist daher als nicht vertrauenswürdig zu betrachten. Das Vorhandensein und die Reihenfolge des Variableninhalts in diesem Array wird entsprechend der PHP-Konfigurationsdirektive variables_order bestimmt.


zusätzlich, sollte man keine Meta angaben im Body includen, da die Meta angaben in den Head Bereich des HTML Dokuments gehören

MFG
Mein kleines Projekt
-Cruel Online-

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cccpmik« (4. August 2010, 07:47)

 

af_net

Jungspund

Dabei seit: 26.07.2010

Beiträge: 16

 

9 Zum Seitenanfang

Mittwoch, 4. August 2010, 10:09

Hey.

@Josephine.

Eine Inhaltsseite kann doch auch durch den Aufruf eines Formulars aufgerufen werden! In dem Fall dann meist POST.
Es ist doch völlig egal ob der Request durch POST oder GET verursacht wird. Wichtig ist nur sicher zustellen das kein Cookie-Wert den Key content beinhalten darf!

@cccpmik

Klar, hab ich keine else-zweig! Dafür muss er schon selber sorgen, das er eine 404-Seite ausgibt.
Oder soll ich ihm die Seite gleich selber programmieren. Ich geh davon aus, dass er selber weiß was er zu tun hat, also muss ich doch nicht so ins Detail gehen, meinst du nicht?
Zu deinem "Cross Site Request Forgery": das mit dem Cookie hab ich doch schon erwähnt, und durch das file_exists() kann auch nur eine lokale datei eingebunden werde die auch vorhanden ist.
Und URL-Aufrufe zu manipulieren geht auch wenn ich direkt $_POST oder $_GET nutze. Wichtig ist das Cross Site Scripting unterbunden wird, und mit der file_exists()-Prüfung wird das ausgeschlossen. Zu beachten wäre noch bei dem include() einen absoluten server-pfad zu verwenden.
Bei mir würde das so aussehen:

PHP-Quelltext

1
2
3
4
5
if (file_exists('/var/www/domain/content/'.$_REQUEST['content'].'.inc.php')) {
    include('/var/www/domain/content/'.$_REQUEST['content'].'.inc.php');
} else {
    include('/var/www/domain/content/404.inc.php');
}

Klar ist es vielleicht keine feine Sache $_REQUEST direkt im include einzubinden, aber wenn ich wirklich Seiten überwachen will, wie Member oder Adminseiten, die prüfe ich dann direkt am Skript anfang, bevor ich über HTML-Code render...das könnte man dann auch eine whitelist nennen. So ist es für mich einfacher weil ich einfach viel zu viele Seite in meinen Projekten habe.
Und die Seiten die inkludiert werden, werden auch vor ihrer Ausgabe geprüft ob sie die richtigen Parameter haben...

Achja, außerdem nutze ich immer URL-Rewriting, damit bin ich nochmal auf der sicheren Seite!!!

Zitat

zusätzlich, sollte man keine Meta angaben im Body includen, da die Meta angaben in den Head Bereich des HTML Dokuments gehören

Wer hat das denn erzählt? Ich nicht!
die meta.inc.php soll im head inkludiert werden, der Inhalt dann im body!
MfG
spambog.com - Wegwerf-eMail-Adresse
feedeater.de - Feed-Portal

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »af_net« (4. August 2010, 10:09)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

10 Zum Seitenanfang

Mittwoch, 4. August 2010, 11:23

naja jedem das seine, ich persönlich lasse die finger weg von $_REQUEST, man kann die werte zwar auch mit $_POST und $_GET manipulieren , jedoch weis ich aber ganz genau ob die variablen aus der URL oder Formular kommen. Wie gesagt jedem das seine
Mein kleines Projekt
-Cruel Online-
 

af_net

Jungspund

Dabei seit: 26.07.2010

Beiträge: 16

 

11 Zum Seitenanfang

Mittwoch, 4. August 2010, 11:42

Genau! Lassen wir so stehen!
MfG
spambog.com - Wegwerf-eMail-Adresse
feedeater.de - Feed-Portal
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

12 Zum Seitenanfang

Mittwoch, 4. August 2010, 15:53

Trotzdem würde ich dem Thread ersteller sagen, er soll $_POST oder $_GET verwenden und kein $_REQUEST, da er ja nicht dein script für die sicherheit verwendet..
Mein kleines Projekt
-Cruel Online-
 

Dabei seit: 19.02.2009

Beiträge: 69

 

13 Zum Seitenanfang

Donnerstag, 5. August 2010, 21:13

Na nun habt ihr mich entgültig verwirrt. ?( :) In dem ganze Bereich seid ihr mir noch weit vorraus.

www.razergaming.wmw.cc

Das ist ja meine Homepage... Und da ist dann auch ein News-Beispiel aufgeführt.

Soweit ich das jetzt mitbekommen habe ist der erste Vorschlag von af_net der Beste.


In der index.php (Startseite) sind die News folgendermaßen eingebunden:

PHP-Quelltext

1
<? include ("news/news.php"); ?>


Die Vorlage für die News (bevor man sie komplett geöffnet (Details der News öffnen...) hat) sieht so aus:

HTML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<h3 id="ni$news[id]" style="text-shadow: 0 0 0.2em #F87, 0 0 0.2em #FF9605">
   $subject
</h3>
<p>
   $time von <a href="mailto:$email">$username</a> in $category. $caticon
</p>
<p>
   <strong>$titletext</strong>
</p>
<p>
<b>$maintext der News öffnen...</b>
<br /><br />
$maintext (vollst&auml;ndige News) | $comments | $sendtofriend | $views Aufrufe
</p>
<hr />
<br />


Die Vorlage für "ausgeklappte"/geöffnete News sieht folgendermaßen aus:

HTML

1
2
3
4
5
6
7
8
9
10
11
12
<h3 style="text-shadow: 0 0 0.2em #F87, 0 0 0.2em #FF9605">
   $subject
</h3>
<p>
   $time von <a href="mailto:$email">$username</a>
</p>
<p>
   <em>$titletext</em>
</p>
<p>
   $maintext
</p>



Kann einer von euch mir eine für meine Homepage angepasste Version schreiben!? Das wäre sehr nett...
Have a look at my homepage:
www.razergaming.wmw.cc
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

14 Zum Seitenanfang

Freitag, 6. August 2010, 14:15

Naja deine Variablen, müssen in PHP ausgegeben werden..

PHP-Quelltext

1
<?php echo $time?>


wenn du davor dann include/news.php schreibst und in news.php dann

PHP-Quelltext

1
$time '13.07.10';

dann wird es dann an der stelle eingefügt
Mein kleines Projekt
-Cruel Online-
 

Dabei seit: 19.02.2009

Beiträge: 69

 

15 Zum Seitenanfang

Samstag, 28. August 2010, 19:01

Es tut mir sehr leid, ich habe lange darüber nachgedacht, aber es immer noch nicht verstanden...

Kann einer von euch mir eine für meine Homepage angepasste Version schreiben, wo dann auch klar ist, welchen Code ich genau wohin schreiben soll!? Das wäre sehr nett...

Mit freundlichen Grüßen,
RazerGamingUser
Have a look at my homepage:
www.razergaming.wmw.cc
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 898

 

16 Zum Seitenanfang

Sonntag, 29. August 2010, 13:54

wenn du was dabei springen lässt, mache ich das auch, aber ich kostenlost wirds wohl nur tipps geben , eigentlich sollen die tipps zum lernen helfen. wenn jemand das einfach so macht , gibt es kein lerneffekt dabei. Seitentitel je nach navi zu ändern ist nichts komplexes;)

MFG
Mein kleines Projekt
-Cruel Online-