Avatar billede Slettet bruger
18. juli 2010 - 22:18 Der er 24 kommentarer og
2 løsninger

link og til filer der er tilføjet via include.

Ja.. Ved ikke hvordan jeg skal beskrive overskriften bedre.

Men mit problem er at jeg har 3 links i en menu.

Side1 - Side2 - Side3

Så har jeg 3 sider der er tilføjet med include:

include("side1.php");
include("side2.php");
include("side3.php");


Jeg ville gerne have at når man kommer ind på hovedsiden (index.php)
Så er det side1.php man ser og kun den.

Men hvis du så trykker på side2 linket.
Så skal side1.php  fjernes og side2.php være det man ser.

Og det samme sker hvis man trykke på side3.php

Hvordan kan det laves?
Avatar billede repox Seniormester
18. juli 2010 - 22:21 #1
Hvad med at ligge de tre sider hver for sig? Så du rent faktisk åbner side2.php når du klikker på side2? Og så omdøbe side1.php til index.php.
Avatar billede Slettet bruger
18. juli 2010 - 22:23 #2
Det er for at spare plads og tid så jeg ikke skal rette 3-4 sider hver når noget skal rettes.
Avatar billede majbom Novice
18. juli 2010 - 22:27 #3
hvad med:
if(isset($_GET['page']) && !empty($_GET['page']) && file_exists($_GET['page'].'.php')){
  include($_GET['page'].'.php');
}else{
  include('side1.php');
}
Avatar billede majbom Novice
18. juli 2010 - 22:29 #4
og så dinside.dk?page=2
Avatar billede repox Seniormester
18. juli 2010 - 22:31 #5
Jeg tror du har misforstået noget så; du har stadig de tre sider at rette i uanset.

Jeg har en idé om at du har gjort det at du har bygget en html side op som en ramme på denne måde:

index.php:
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
  <?php include("side1.php"); ?>
  </body>
</html>


Men det er lidt tåbeligt at gøre det på den måde - en nemmere måde ville være:

index.php (side1.php om du vil)
<?php include("html_header.php"); ?>
<h1>Dit indhold på side1.php</h1>
<?php include("html_footer.php"); ?>
Avatar billede Slettet bruger
18. juli 2010 - 22:38 #6
Nu er jeg jo lidt meget Noob til PHP.
Har lavet sådan noget i ASP før, men er kun lige startet på PHP.

Kan du forklare hvad dette gjorde for det er noget helt nyt for mig. Vil gerne forstå hvad det er der bliver gjort:

if(isset($_GET['page']) && !empty($_GET['page']) && file_exists($_GET['page'].'.php')){
  include($_GET['page'].'.php');
}else{
  include('side1.php');
}
Avatar billede majbom Novice
18. juli 2010 - 22:46 #7
hvis ?page eksisterer i url'en og er sat til en fil der eksisterer, includer den filen, ellers includer den side1.php

-> repox - hvorfor er det tåbeligt?
Avatar billede Slettet bruger
18. juli 2010 - 22:47 #8
Repox -->
Det gjorder jeg også istarten da jeg lavede ASP.
Men det blev for træls.
Jeg brød mig ikke om at designet var opdelt i 4-5 filer.
Så jeg havde design i en og indholdet i andre.

På den måde skulle jeg kun have 1 ny include som skulle indsættes på en side.

Jeg ved godt det andet også er nemt.
Men personligt bryder jeg mig ikke om den måde.
:)
Avatar billede Slettet bruger
18. juli 2010 - 23:01 #9
Splazz-->
Jeg kan ikke rigtigt se hvordan et link kommer til at vise en include.


Hvis jeg fx lavet er link der hedder.
<a href="index.php">Forside</a>
<a href="news_add.php">Tilføj Nyheder</a>

Og længere nede har lavet disse include.

  <?php include("news_ass.php"); ?>
  <?php include("index.php"); ?>


Hvordan vil du så lave linket?
Avatar billede majbom Novice
18. juli 2010 - 23:09 #10
jeg er ikke med...
Avatar billede Slettet bruger
18. juli 2010 - 23:15 #11
Lige en ting først
Hvordan laver du en ramme om dine koder?
Det kunne jeg godt bruge :P

Tilbage til mit problem:

Altså hvis jeg har min menu med mine links:

<a href="index.php">Forside</a>
<a href="news_add.php">Tilføj Nyheder</a>


Hvordan vil du få de links til at arbejde sammen med:

<?php include("news_ass.php"); ?>
<?php include("index.php"); ?>

Lige nu åbner linket jo en ny side og arbejde ikke sammen med mine includes.

Jeg forstår ikke hvordan din side kan se forskel eller arbejder sammen med linket. Der står jo bare GET['page'] alle steder.
Så jeg kan ikke se helt hvordan det kan virke.
Avatar billede majbom Novice
18. juli 2010 - 23:28 #12
http://www.eksperten.dk/guide/1325 :)

hvis du har www.dinside.dk/index.php?site=news_ass, får du fat i 'news_ass' via $_GET['site']

så jeg ville gøre sådan:

<a href="din_side.php?page=index">Forside</a>
<a href="din_side.php?page=news_add">Tilføj Nyheder</a>


hvor din_side.php er den side hvor du vil include den side der nu skal vises...
Avatar billede Slettet bruger
18. juli 2010 - 23:33 #13
Som splazz skrev i #4 skal dine links ændres, så de i stedet peger på index.php?page=sidenavn. I stedet for dine linjer med inkluderinger, bruges den kode han skrev i #3.

Husk desuden at tjekke det filnavn brugeren afsender. Ellers kan hullet udnyttes til at inkludere enhver php-fil på din server. Det kan f.eks. gøres ved at ændre koden til denne:

if(isset($_GET['page']) && !empty($_GET['page']) && ctype_alnum($_GET['page']) && file_exists($_GET['page'].'.php')){
  include($_GET['page'].'.php');
}else{
  include('side1.php');
}


Hvordan vi laver vores fancy bokse og lignende?
Avatar billede Slettet bruger
18. juli 2010 - 23:35 #14
Jamen det er jo smukt.
Det virker og jeg forstår nu hvad du mente.

Smid et svar og 1000 tak.
Avatar billede intenz Novice
18. juli 2010 - 23:41 #15
Det er generelt dårlig praksis at inkludere en fil direkte fra bruger-input ($_GET['page']), da det kan medføre en række sikkerhedsproblemer man skal være opmærksom på.
Det er bedre at inkludere designet (header/footer) direkte i de filer der skal bruge dem. Det gør det også mere fleksibelt.

Du bør følge repox's svar (#5), med mindre du ved hvorfor du ikke gør det.
Hvis det ikke giver mening, så prøv at opret nedenstående filer og test det.

header.php

<html>
  <head>
  <title>Test</title>
  </head>
  <body>
  <a href="index.php">Forside</a>
  <a href="news_add.php">Tilføj Nyheder</a>


footer.php

  </body>
</html>


index.php

<?php include("header.php"); ?>

<h1>Dit indhold på side1.php</h1>

<?php include("footer.php"); ?>



news_add.php

<?php include("header.php"); ?>

<h1>Dit indhold på news_add.php</h1>

<?php include("footer.php"); ?>
Avatar billede majbom Novice
18. juli 2010 - 23:51 #16
ja okay, man kan selvfølgelig ikke kompromittere et site når det gøres på repox' måde (ikke ad den vej i hvert fald :) ), men kan man det når man tjekker på om filen $_GET['site'].'.php' eksisterer?

jeg kan bedre li den metode...

-> #14 - hvem vil du ha svar fra?
Avatar billede Slettet bruger
19. juli 2010 - 00:09 #17
Hvad mener du med man ikke kan kompromittere på hans måde.

Er der noget usikkert på din måde?
Nu er det ikke et bruger system. Jeg har et Admin panel men det køre for sig selv.

Det var dig der godt måtte svare Splazz.
Men vil gerne vide om det i lige kom frem til var at denne måde var dum?
Avatar billede Slettet bruger
19. juli 2010 - 00:21 #18
Denne måde er ikke dum, så længe du versionen fra #13 - men det er jo ikke det samme som at der ikke findes klogere metoder
Avatar billede Slettet bruger
19. juli 2010 - 00:27 #19
Havde faktisk ikke set dit indlæg Kimsey0
Men når jeg indsætter din sætning virker det ikke.

Forsiden er forsiden.
Men hvis jeg trykker på news_add linket sker der ikke noget.
Avatar billede majbom Novice
19. juli 2010 - 07:47 #20
hvordan ser din kode ud?
Avatar billede Slettet bruger
19. juli 2010 - 13:22 #21
Det stykke kode jeg kom med accepterer kun alfanumeriske tegn i sidenavnet, og på dansk: fjern understregen i filnavnet og i linket newzadd. Hvis dette ikke er muligt kan jeg godt komme med noget andet kode der accepterer understregen.
Avatar billede Slettet bruger
19. juli 2010 - 22:50 #22
Det må du meget gerne...
Har så kan jeg også lære noget der... :)
Avatar billede Slettet bruger
20. juli 2010 - 00:06 #23
Så bliver vi nød til at bevæge os ud i en regexp (Regular Expression):

if(isset($_GET['page']) && !empty($_GET['page']) && preg_match('"^[a-zA-Z1-9_]+$"', $_GET['page']) && file_exists($_GET['page'].'.php')){
  include($_GET['page'].'.php');
}else{
  include('side1.php');
}


Den accepterer ét eller flere bogstaver, tal og understreger.
Avatar billede Slettet bruger
20. juli 2010 - 00:52 #24
Yes sir...
Smid et svar så må i lige deles om de point der er :)
Avatar billede Slettet bruger
20. juli 2010 - 00:56 #25
As you wish
Avatar billede majbom Novice
20. juli 2010 - 08:32 #26
tfp :)
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