Gå til innhold

Problemer med php if include


Anbefalte innlegg

Holder på med et nettsted hvor jeg bruker en del php programmering. Tingen er at jeg ikke er så veldig erfaren med php, men har fått en del hjelp fra nettet og venner rundt omkring.

 

Tingen er at jeg har en side hvor jeg bruker:

 

En divtag #container hvor jeg henter inn ulike php filer med tekst i, slik som dette:

<?php if($p == 8){ include("kampanje.php"); } ?>

 

Da hentes det inn en boks på høyre side som inneholder annonser etc. Dette fungerer helt fint.

 

 

Problemet oppstår når jeg vil at php skriptet skal hente inn to bokser samtidig (meny på venstre side og en faktaboks på høyreside):

 

<?php if($m == 1){ include("produkter.php") ; } ?>

<?php if($m == 2){ include("inspirasjon.php"); } ?>

 

<div id="contentContainer">

 

<?php $p = $_GET['p']; if($p == "index"){$p = "";} if($_GET['p']){ include($p .".php"); } else { include("home.php");} ?>

 

</div>

 

<?php if($p == 8){ include("kampanje.php"); } ?>

 

 

 

Dette har fungert helt fint, slik at når en bruker gikk inn på siden hjemmeside.no/index.php?p=1&m=1 så viste både faktaboksen og menyen samtidig.

 

Men den siste uken virker ikke dette, har dere noen tips?

Endret av CoaX-
Lenke til kommentar
Videoannonse
Annonse

Kor får du $p fra?

Midt inni koden settes $p til $_GET['p'] som da er en tekststreng og ikke et tall. Når du bruker $p senere for å sammenligne med 8 for å inkludere kampanje så vil den ikke virke.

 

<?php $p = $_GET['p']; if($p == "index"){$p = "";} if($_GET['p']){ include($p .".php"); } else { include("home.php");} ?>

Her prøver du å inkludere .php hvis $_GET['p'] er 'index'. Du bør lage en "hvitliste" over filer som kan inkluderes.

$files = array(
'home',
'fil2',
'fil3',
);
if (!in_array($p, $files, true)) { $p = $files[0]; } 
include($p . '.php');

Lenke til kommentar

hei, og tusen takk for svar! :-)

 

meningen med denne strengen:

 

<?php $p = $_GET['p']; if($p == "index"){$p = "";} if($_GET['p']){ include($p .".php"); } else { include("home.php");} ?>

 

var å få home.php til å vise når index.php-siden ble lastet.

 

Tingen er at alle sidene blir lastet inn i denne containeren i index.php. Kampanje fungerer og alle andre sidene fungerer, de blir alle lastet inn i index.php, men ikke den menyen jeg vil ha inn på venstresiden (<?php if($m == 1){ include("produkter.php") ; } ?>)

 

Fikk ordnet feilen! Byttet ut:

 

<?php if($m == 1){ include("produkter.php") ; } ?>

 

<?php if($m == 2){ include("inspirasjon.php"); } ?>

 

med

 

<?php

 

if($_GET['m'] == "1"){

include "produkter.php";

} else if ($_GET['m'] == "2"){

include "inspirasjon.php";

} else

 

?>

 

så nå kom menyen frem og alt :-)

Endret av CoaX-
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...