Avatar billede festvognen Nybegynder
20. marts 2015 - 08:59 Der er 11 kommentarer

PHP og variable

Jeg er ikke øvet i PHP, så lidt hjælp er tiltrængt her.

Kan nogle hjælpe mig med at løse dette her?

Include.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="dk">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="Title" content="<?php echo isset($pagetitle) ? $pagetitle : ''; ?>" />
<meta name="description" content="<?php echo isset($metadesc) ? $metadesc : ''; ?>" />


Index.php
<?php
$pagetitle = 'Dette er den første side';
$metadesc = 'beskrivelse af den første side';
include 'header.php';
?>

Problemet er at pagetitle og metadesc er blanke selv om variablerne er blevet sat i include.php
Avatar billede tvilling53 Seniormester
20. marts 2015 - 10:53 #1
Hej
Jeg har altid includefiler :
<? php
include ('xxxxx.php');
include ('yyyyyyy.php');
?>

<html>
  <head>
Thomas V
Avatar billede tvilling53 Seniormester
20. marts 2015 - 10:58 #2
Hej

Rettelse:
Jeg har altid includefiler og session_start før HTML-kode :
<? php
include ('xxxxx.php');
include ('yyyyyyy.php');
?>

<html>
  <head>
Thomas V
Avatar billede festvognen Nybegynder
20. marts 2015 - 11:13 #3
Det samme har jeg jo i min index.php

Kernen er at jeg gerne vil kunne have egen titel, og beskrivelse på alle siden samtidig med at alt andet ligger i en include fil
Avatar billede tvilling53 Seniormester
20. marts 2015 - 11:49 #4
Hej

Hvis du har dette stående i index:
$pagetitle = 'Dette er den første side';
$metadesc = 'beskrivelse af den første side';

og dette i header.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
osv
mangler du session_start();fordi du kan ikke flytte dine 2 variabler med over i header.php uden videre.

Index.php skal tilføjes så det er sådan
<?php session_start();
$pagetitle = 'Dette er den første side';
$metadesc = 'beskrivelse af den første side';
$_SESSION['pagetitle']=$pagetitle;
$_SESSION['metades']=$metades;
?>

og dette i header.php
<?php session_start();
$pagetitle=$_SESSION['pagetitle'];
$metades=$_SESSION['metades'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
osv

Thom,asd V
Avatar billede Slater Ekspert
20. marts 2015 - 14:54 #5
Du kan sagtens flytte de variabler med over i headeren uden videre.

At sætte en variabel i en fil, include den fil i en anden, og forsøge at udskrive den variabel i fil nummer to burde virke ganske fint. At bruge sessions til at flytte det mellem det er komplet vanvittigt.

Jeg ved dog ikke hvorfor det ikke virker i festvognens tilfælde. Er det muligt at uploade noget kode så vi kan se?
Avatar billede acore Ekspert
20. marts 2015 - 15:06 #6
Enig med #5.

Måske er det en typo, men du skriver

include 'header.php';

og filen hedder include.php.

Kan det være forklaringen?
Avatar billede tvilling53 Seniormester
20. marts 2015 - 16:28 #7
hej
kommentar til #5 og #6 så er det måske min opsætning af min localserver der er forkert for jeg kan ikke flytte variabler uden session ......så jeg slutter
Thomas V
Avatar billede festvognen Nybegynder
20. marts 2015 - 16:56 #8
Tak alle sammen. Det kan godt være at løsningen med sessions ikke er helt efter bogen, men det virker hos mig :-)
Avatar billede Slater Ekspert
20. marts 2015 - 18:47 #9
Det vil virke helt fint, ja, men du lærer noget utroligt dårlig programmering ved at bruge det sådan.

I stedet for at ordne det hele i RAM på serveren, skriver du nu en fil både på serveren og klienten og læser fra dem begge igen hver gang du vil hente dataene, plus at data skal sendes over internettet. Det er 1000 gange langsommere hvis ikke mere, absurd dårlig praksis og overhovedet ikke hvad en session skal bruges til.

Nu lægger du ikke mærke til det her, fordi det er en simpel side og du er eneste bruger, så vi regner stadig i millisekunder. Men jeg vil ikke anbefale at lære det nu, for du bliver bare nødt til at starte forfra, hvis du skal lave noget større.


Prøv for at teste at lave to helt simple filer:

1.php:

<?php
$test = 'Hej';


2.php

<?php
include '1.php';
echo $test;


Hvis det ikke virker, så er der altså virkelig noget galt med jeres PHP-installationer eller hvad ved jeg. Det skal virke. Og hvis det virker, så er der noget andet galt i din kode, som vi ikke kan se.
Avatar billede tryltryl Juniormester
20. marts 2015 - 21:49 #10
Session-variabler er ikke den rette løsning til det her, men data sendes dog ikke til klienten. Klienten ser kun session-id'et.
Avatar billede Slater Ekspert
21. marts 2015 - 05:37 #11
Og sessions-id'et er data der sendes til klienten. Hvis man ikke bruger session ellers, er det unødvendig data der skal sendes.
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