Avatar billede lappe_dk Nybegynder
19. december 2005 - 16:01 Der er 10 kommentarer

Hente sidens TITLE i anden fil.

Hej.
Jeg har en side, hvor hovedsiden ligger som index.php og deri henter jeg så sidens indhold via en include()

Jeg vil gerne kunne definere index.php's <TITLE> via undersiden, hvis det er muligt...

Så noget i stil med:
Index.php?underside=1
--------------------
<head>
    <title>Min side - <?php echo $title ?></title>
</head>
<BODY>
menu osv.
<?php include('$underside.php') ?>
</BODY>
--------------------
Og undersiden vil se nogenlunde sådan ud:
1.php
--------------------
<?php $title = "underside1" ?>
<TABLE>...
Og så en masse indhold
--------------------
Jeg har på fornemmelsen dette ikke vil kunne lade sig gøre, men hvordan kan jeg lave det?

Altså jeg vil gerne de-centralisere <TITLE> i index.php allerhelst i hver underside, så jeg kan lave det samme sted som indholdet.

Nogen der har en idé om, hvordan dette kan gøres?
Avatar billede barklund Nybegynder
19. december 2005 - 16:06 #1
Lad være med at outputte html direkte i din index.php - gør det via en funktion:

function top($title) {
    print "<head>
        <title>Min side - $title</title>
    </head>
    <BODY>";
}
function bottom() {
    print "</BODY></html>";
}

Så kan 1.php blot indeholde:

top("Min titel");
print "<table></table>";
bottom();

Så bestemmer undersiden selv, hvad der skal printes hvornår :)

--
Morten Barklund
Avatar billede lappe_dk Nybegynder
19. december 2005 - 16:13 #2
Ok, Det ville jeg gerne være fri for, da jeg så ikke kan redigere direkte i index sidens design via Dreamweaver, da designet så ligger inde i en PHP funktion?
Avatar billede barklund Nybegynder
19. december 2005 - 16:17 #3
Så skal du ligge designet i en fil kun med html, og så med nogle tags - for eksempel [title] og [body] til der, hvor disse ting skal indsættes. Så kan du læse denne fil i index.php og erstatte de to ting med de ting, der skal være der. Eller finde et rigtigt template-system, så du ikke behøver genopfinde ting, der allerede findes :)

--
Morten Barklund
Avatar billede johan.o Nybegynder
19. december 2005 - 16:56 #4
Problemet, i den metode du beskriver i dit spørgsmål, er at dit <title> tag er sendt til klienten før du rent faktisk definere det i den fil du inkludere. Derfor kunne en løsning være at du samler dit html output op i en variabel som du så sender til sidst i din index.php. Princippet har jeg forsøgtat vise herunder :

index.php -->

<?php

include("underside.php");

$head="<html><head><title>".$title."</head>";

$body="<body>".$mCon."</body></html>";

echo $head.$body;

?>

underside.php -->

<?php

$title="Underside";

$mCon="<table>....bla bla....</table>";

?>

Mvh. Johan
Avatar billede lappe_dk Nybegynder
19. december 2005 - 17:14 #5
@johan.o

Kan man så i underside.php på en eller anden måde gå ud af php scriptet og så have indholdet og så lukke scriptet igen?
Så jeg kan rette i indholdet af siden?
<?php

$title="Underside";

$mCon="?>

<table>....bla bla....</table>

<?php "; ?>
Avatar billede johan.o Nybegynder
19. december 2005 - 17:33 #6
Nej det går ikke. Hvis du 'hopper' ud af php 'mode' så sendes indholdet direkte til klienten før indholdet i $head er defineret. Men dette virker :

<?php

$title="Underside";

$mCon="

<table>....bla bla....</table>

"; ?>

Mvh. Johan
Avatar billede htmlkoder_dk Nybegynder
19. december 2005 - 17:49 #7
Det er ikke en god idé at includere en side, som er blevt defineret via GET. Så vil en masse sider kunne includeres. Dette kunne jo også være en hemmelig fil.

Lav det i stedet sådan:

if($underside == 1)
{
include "1.php";
}
elseif($underside == 2)
{
include "2.php";
}
Avatar billede johan.o Nybegynder
19. december 2005 - 18:24 #8
Naturligvis skal alle udefra kommende variabler checkes for indhold før indholdet kan bruges. I dette tilfælde ville jeg checke $underside mod et reg_exp og at $underside.".php" eksisterer på mit domæne.

Altså :

if(preg_match("/^[a-z0-9_- ]+$/", $_GET['underside'])) {
if(file_exist($_SERVER['php_self'].$_GET['underside'].".php")) {
  include($_GET['underside']); } }

Således kan du have 1 eller 400 undersider funktionen checker dem alle.

Mvh. Johan
Avatar billede johan.o Nybegynder
19. december 2005 - 18:25 #9
Oups, der mangler et s i file_exist( --> file_exists() hedder funktionen :)
Avatar billede johan.o Nybegynder
19. december 2005 - 18:28 #10
Hvis undersiderne kan ligge i underliggende folders skal der lige tilføjes en skråstreg til reg_exp : [a-z0-9_-/ ]

Det vigtige i denne forbindelse er blot at forbyde brugen af punktum, altså ikke at skrive punktum i ovenstående exp.

Mvh. Johan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester