Gå til innhold

endelig, include ! problem? (LØST)


Anbefalte innlegg

endelig fikk jeg til litt php i hjemmesida mi..

bruker programmet foxServ.

leste rundt her i forumet og prøvde en metode som gikk ut på å skifte inneholdet, men fikk ikke det til å fungere som best!

 

<?php
$show=$_POST['include']; 

switch($show){

case "hovedsiden":
include("hovedsiden.php");
break;

case "meg":
include("meg.php");
break;

case "venner":
include("venner.php");
break;

case "pc":
include("pc.php");
break;

case "galleri":
include("galleri.php");
break;

default:
include("hovedside.php");

}
?>

 

hele tiden datt alle linkene til bake til "hovedside.php".

derfor tenkte jeg at jeg skulle prøve include scriptet nå som jeg endelig hadde fått serveren til å fungere... Men nei da, nå får jeg error

 

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\FoxServ\www\index.php on line 41

 

dette er noe jeg ikke har peilng på altså.

linkene ser sånn ut;

<a href="index.php?include=hovedsiden">Hovedsiden</a> -
<a href="index.php?id=meg" >Meg</a> -
<a href="index.php?include=venner" >Venner</a> -
<a href="index.php?include=pc">Min pc</a> - 
<a href="index.php?include=galleri">Mitt Galleri</a>

 

og include scriptet i "inneholds-bosken" på sida;

 

<?php
include("$_GET['include'].php");
?>

 

er det noen som veit hva som er feilen?

 

takk for eventuelle svar :w00t:

Endret av danweb.cjb.net
Lenke til kommentar
Videoannonse
Annonse

her er hele index.php

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>////www.DanWeb.cjb.net\\\\</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head><body>
<div id="alt">
<div class="banner"><img src="banner.jpg" /></div>
<div class="meny">
<a href="index.php?include=hjem">Hjem</a> -
<a href="index.php?include=meg" >Meg</a> -
<a href="index.php?include=venner" >Venner</a> -
<a href="index.php?include=pc">Min pc</a> - 
<a href="index.php?include=galleri">Mitt Galleri</a>
</div>
<div id="left_frame">
<center>
<div class="text1">
<br>./Nyttige lenker<br>
</div>
<br>
<div class="text">
<a href="http://www.hardware.no" target="_Blank">Hardware.no</a><br>
<a href="http://forum.hardware.no" target="_Blank">forum.hardware.no</a><br><br<br>
<a href="http://www.google.com" target="_Blank">Google.com</a><br>
<a href="http://www.themexp.org" target="_Blank">Themexp.org</a><br>
<a href="http://www.wincustomize.com" target="_Blank">WinCustomize.com</a><br></div>

<div class="text1">
<br>./Lenker til venner osv.<br></div>
<div class="text"><br>
<a href="http://www.dalnett.org/dian" target="_Blank">Stian sin hjemmeside</a><br>
<a href="http://www.home.no/husubaek" target="_Blank">Kenneth sin hjemmeside</a><br></div></center> 

</DIV>

<div class="innehold">
<?php
include("$_GET['include'].php");
?>
</div>

<div class="fotter"><img src="Image4.jpg" /></div></div>

</body>
</html>

 

ellers funker nå;

 

$show=$_GET['include'];

 

metoden!!

Endret av danweb.cjb.net
Lenke til kommentar
eneste jeg kan komme på er å bytte ut til

 

<?php

include($_GET['include'] . '.php');

?>

Det er ikke en god løsning!

Tenk deg følgende, include=index (eller navnet på siden der scriptet er).

Da vil serveren gå i en evig loop!

 

Koden er korrekt, men du bude plassere filene som skal includes i en egen mappe og passe på at det ikke er med noen tegn som kan rygge en mapp tilbake!

Endret av ????????
Lenke til kommentar

er dette en bedre løsning?

 

<?php
$show=$_GET['include']; 

switch($show){

case "hovedsiden":
include("hovedsiden.php");
break;

case "meg":
include("meg.php");
break;

case "venner":
include("venner.php");
break;

case "pc":
include("pc.php");
break;

case "galleri":
include("galleri.php");
break;

default:
include("hovedside.php");

}
?>

 

virker som den fungerer helt likt som include!

er litt no0b men, men en gang må man begynne å lære noe oxo :thumbup:

 

EDIT; kopierte fra feil fil! fikset på det nå

Endret av danweb.cjb.net
Lenke til kommentar

Du kan ikke bruke $_POST dersom du ikke sender variablene md HTTP post. Bruker du f.eks. en link: <a href="index.php?side=side1"> så mu du bruke $_GET.

 

Edit:

$_POST brukes f.eks. dersom du sender variabler med et skjema hvor medtod="post"

Endret av ????????
Lenke til kommentar
EDIT; kopierte fra feil fil! fikset på det nå

Bedre om du poster et svar i steden for å editere, da synes det når du har lagt til noe i tråden.

 

En enklere løsning ville være å plassere alle filene som det skal være mulig å include i en egen mappe, f.eks. mappenavn: sider.

 

Så sjekker du at $_GET['include'] kun inneholder bokstaver, f.eks. eregi("^[a-z]$", $_GET['include']). Dersom den ikke gjør det så includer du hovedsiden.

Så sjekker du om filen eksisterer, file_exists("./sider/".$_GET['include'].".php"). Dersom den ikke eksisterer så includer du hovedsiden, men dersom den eksisterer så includer du siden. På den måten slipper du å utvide switch for hver side du legger til, og du slipper å passe på å endre den dersom du renamer noen av filene, eller fjerne fra switch dersom du sletter en side.

Lenke til kommentar

nå har jeg sittet og mekka litt php. :D

får til at siden i meny'en includeres når jeg trykker på linkene, men når jeg starter siden min vil jeg at hjem.php skal vises men det gjør den ikke. :mad:

 

noen som har ett lite tips til meg :whistle:

 

php koden jeg bruker nå er

 

<?php 
$filnavn = $_GET['s']; 
$fil = '.php'; 
if (eregi("^[a-z0-9]+$", $filnavn)) { 
   @include $filnavn . $fil; 
} 
else { 
   @include "404.php"; 
} 
?>  

 

takker for svar

Lenke til kommentar
Det er to ting du burde gjøre:

1. legg til dette under $filnavn = $_GET['s'];

if(empty($filnavn))

$filnavn = "hjem";

 

2. sjekk om filen eksisterer før du includer den

1.

blir koden slik?

<?php
$filnavn = $_GET['side'];
if(empty($filnavn))
$filnavn = "hjem";
$fil = '.php';
if (eregi("^[a-z0-9]+$", $filnavn)) {
@include $filnavn . $fil;
}
else {
@include "404.php";
}
?>

 

2.

det skjønt jeg ikke :blush:

kan man bruke;

file_exists?

hvis ja hvordan?

Lenke til kommentar

nei, utifra det jeg leser så kommer scriptet til å vise home.php om det er satte index.php?side=home, ellers kommer 404.php.

 

Bruk heller noe ala dette:

<?php
$filnavn = $_GET['s']; 
$fil = '.php'; 
if (isset($filnavn)) {
if (eregi("^[a-z0-9]+$", $filnavn)) { 
  include $filnavn . $fil; 
} 
else { 
  include "404.php"; 
}
}
else {
include "home.php"
}
?>

Lenke til kommentar

Oops, overså den delen av koden.

 

Bruk heller empty() og ikke isset() - det gjør at hovedsiden vises dersom index.php?s= og ikke en feilside. En variabel er satt dersom den er med, uavhengig om den får en verdi.

 

Du bruker file_exists for å sjekke om filen finnes. Hvis du ikke gjør det vil den include siden selv om den ikke finnes.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...