Title tags verschillend/variable per pagina

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 00:40:00
Quote Anchor link
Ik zit met een klein probleem op een website. Ik wil op bepaalde pagina's een andere titel hebben. De structuur is als volgt:

index.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
   // Includes.php
      require_once ("includes/instellingen.php");

?>



<title>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $websitetitel; ?>
</title>


Wat ik dus doe is in het bestand instellingen.php alle meta informatie en de title tag vaststellen. Probleem is nu dat ik op elke pagina dezelfde titel heb. Als ik dus naar de pagina contact.php ga wil ik ook in de titel erbij hebben staan dat het de Contact pagina is.

Ik include de pagina als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    
            
                if (!isset($_GET["page"])) {

                    header ("location: ?page=home");

                }
else {

                    if ($_GET["page"] == 'contact') {
                        include ("contact.php");
                    }


?>



De link is dan dus http://tinyurl.com/yk4d3bo

Hoe zorg ik er nou voor dat wanneer ik daarheen ga de Title behalve de standaard titel weet dat er ook Contact bij komt te staan (+ voor andere pagina's een custom title)

Veel vage tutorials gezien, niks wat werkte.
Gewijzigd op 01/01/1970 01:00:00 door Robert-Jan De Vries
 
PHP hulp

PHP hulp

05/01/2025 00:06:00
 
S -

S -

15/11/2009 04:26:00
Quote Anchor link
waarom doe je niet

<title>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $websitetitel." ".ucfirst($_GET['page']); ?>

</title>

of als instellingen.php al is toegevoegd..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?
                if (!isset($_GET["page"])) {
                    header ("location: ?page=home");
                }
else {
                    if ($_GET["page"] == 'contact') {
                        include ("contact.php");
                    }

                    $websitetitel.=" ".ucfirst($_GET['page']);
                }


?>


Het wint niet de schoonheidsprijs, maar het is wel makkelijk. Als je dan de naam van de titel wil veranderen, moet je de naam van het bestand veranderen. Wil je meerdere woorden. Doe dan de-contact-pagina.php en vervang de streepjes met str_replace();

Wat ook mogelijk is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
                if (!isset($_GET["page"])) {
                    header ("location: ?page=home");
                    $websitetitel.=" ".ucfirst($_GET['page'])." meer tekst in titel";
                }
else {
                    if ($_GET["page"] == 'contact') {
                        include ("contact.php");
                        $websitetitel.=" andere tekst in titel zonder bestandsnaam";
                    }
                }


?>


Je website wordt trouwens niet goed weergegeven met Google Chrome browser. Zorg er voor dat in andere browsers je website er ook goed uit ziet. (contact formulier op je contact pagina klopt nu niet).
Gewijzigd op 01/01/1970 01:00:00 door S -
 
Terence Hersbach

Terence Hersbach

15/11/2009 10:34:00
Quote Anchor link
Vergeet alsjeblieft de manier van Steven, hiermee veroorzaak je een XSS-lek (ja dat is beveiliging).

Zoals jij het het best aan kan pakken naar mijn idee:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

require_once "includes/instellingen.php";

$titletag = 'default waarde';

switch($_GET['page'])
{
    case
'contact':
    case
'links':
        include 'pages/' . $_GET['page'] . '.php';
        break;
        
    case
'home':
    default:

        include 'home.php';
}


echo '<title>' . $websitetitel . ' - ' . $titletag . '</title>';
?>


in je pagina-includes kan je dan de logica uitvoeren en de variable $titletag zetten.

Require once moet zonder de (haakjes), want het is geen functie maar een taalconstructie.

Na een header(Location: ...) altijd een exit; zetten, anders wordt de rest van je code ook nog uitgevoerd, wat niet nodig is als de gebruiker naar een andere pagina moet.
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 12:07:00
Quote Anchor link
Ok bedankt voor de hulp, ik ga het nu proberen. Ik zie ook nu net dat ik Chrome het formulier niet doet wat het moet doen (staat helemaal naar rechts). Kijken of ik dat kan fixen.

Grr waarom zoveel browsers haha

edit
Was een /div die verkeerd stond in het contact formulier. Hij staat nu wel netjes zoals het moet.
Gewijzigd op 01/01/1970 01:00:00 door Robert-Jan De Vries
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 13:02:00
Quote Anchor link
Terence schreef op 15.11.2009 10:34:
Vergeet alsjeblieft de manier van Steven, hiermee veroorzaak je een XSS-lek (ja dat is beveiliging).

Zoals jij het het best aan kan pakken naar mijn idee:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

require_once "includes/instellingen.php";

$titletag = 'default waarde';

switch($_GET['page'])
{
    case
'contact':
    case
'links':
        include 'pages/' . $_GET['page'] . '.php';
        break;
        
    case
'home':
    default:

        include 'home.php';
}


echo '<title>' . $websitetitel . ' - ' . $titletag . '</title>';
?>


in je pagina-includes kan je dan de logica uitvoeren en de variable $titletag zetten.

Require once moet zonder de (haakjes), want het is geen functie maar een taalconstructie.

Na een header(Location: ...) altijd een exit; zetten, anders wordt de rest van je code ook nog uitgevoerd, wat niet nodig is als de gebruiker naar een andere pagina moet.




Maar op deze manier moet ik "$titletag = 'default waarde';" dus op alle include pagina's zetten? Dus in de contact.php en dergelijke moet ik dat tussen PHP tags zetten en default waarde in de titel veranderen die ik op die pagina wil?
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 13:10:00
Quote Anchor link
Het lettertype op de website is trouwens echt lelijk. Heeft iemand hier tips welk lettertype mooi staat op deze website?
 
Terence Hersbach

Terence Hersbach

15/11/2009 13:31:00
Quote Anchor link
robert-jan schreef op 15.11.2009 13:02:
Terence schreef op 15.11.2009 10:34:
Vergeet alsjeblieft de manier van Steven, hiermee veroorzaak je een XSS-lek (ja dat is beveiliging).

Zoals jij het het best aan kan pakken naar mijn idee:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

require_once "includes/instellingen.php";

$titletag = 'default waarde';

switch($_GET['page'])
{
    case
'contact':
    case
'links':
        include 'pages/' . $_GET['page'] . '.php';
        break;
        
    case
'home':
    default:

        include 'home.php';
}


echo '<title>' . $websitetitel . ' - ' . $titletag . '</title>';
?>


in je pagina-includes kan je dan de logica uitvoeren en de variable $titletag zetten.

Require once moet zonder de (haakjes), want het is geen functie maar een taalconstructie.

Na een header(Location: ...) altijd een exit; zetten, anders wordt de rest van je code ook nog uitgevoerd, wat niet nodig is als de gebruiker naar een andere pagina moet.




Maar op deze manier moet ik "$titletag = 'default waarde';" dus op alle include pagina's zetten? Dus in de contact.php en dergelijke moet ik dat tussen PHP tags zetten en default waarde in de titel veranderen die ik op die pagina wil?

de $titletag moet je zoiezo boven de switch laten staan, want als je hem dan vergeet te zetten in een pagina, krijg je geen foutmelding bij de <title>-tag. Je moet dus in iedere pagina die je include opnieuw de $titletag zetten, met de waarde erin die jij wilt voor die pagina.
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 17:03:00
Quote Anchor link
Ik heb het precies zo gedaan als je hebt aangegeven. Alleen als ik op de index de titletag plaats dan is deze op alle pagina's hetzelfde. Als ik de titletag op de index weglaat en op de includes plaats dan worden ze niet weergegeven (de titletag)

Wat is eigenlijk het verschil tussen de manier waarop ik de pagina's include en hoe jij het doet (met switch).

De include pagina's zijn puur de content overigens. Ze beginnen dus meteen met wat erop staat en er staan geen HTML of HEAD tags. Heb die wel erbij gezet om te kijken of dat verschil maakte, maar ook dat werkte niet.

Overigens heb ik de switch een stuk naar beneden geplaatst omdat de include in een div zit die wat lager zit.
 
Terence Hersbach

Terence Hersbach

15/11/2009 22:20:00
Quote Anchor link
Als je de switch naar beneden geplaatst hebt, zit die waarschijnlijk ónder de title-tag. Als je dan de volgorde afgaat zie je dat de include dus na de titletag komt en dat die dus te laat gezet wordt.
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 22:37:00
Quote Anchor link
Ah ja, dat klopt inderdaad. De switch zit onder de title tag (kan ook niet anders volgens mij). Wil dit zeggen dat het niet mogelijk is per include een andere titel aan te geven (naast de standaard titel)?
 
S -

S -

15/11/2009 23:22:00
Quote Anchor link
Terence, wat je bedoelt is dat je nog een extra controle moet invoeren voor wat er eventueel anders ingevuld wordt in de adres balk, in jouw geval een switch. Zeg dan niet dat ie mijn manier moet vergeten, zeg dan dat er een beveiligingslek in zijn code zit. Ik keek er overheen. Maakt mijn toegevoegde code nog niet fout.
 
Robert-Jan De Vries

Robert-Jan De Vries

15/11/2009 23:23:00
Quote Anchor link
Wacht even... dus de manier waarop ik het doe is niet veilig? Hoe kan ik een controle/veiligheid inbouwen?
 
Robert-Jan De Vries

Robert-Jan De Vries

15/12/2009 17:32:00
Quote Anchor link
.
Gewijzigd op 01/01/1970 01:00:00 door Robert-Jan De Vries
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.