Avatar billede ibhansen Nybegynder
06. juni 2004 - 17:40 Der er 22 kommentarer og
2 løsninger

include tekstfil ahængig af hvilket link der bliver trykket på

Jeg har lavet en hjemmeside, og jeg kunne godt tænke mig at når man trykkede på et link i venstre så includede man en fil, som så bliver vist på midten af siden, håber det er til at forstå.

På forhånd tak!
Avatar billede dennismp Nybegynder
06. juni 2004 - 17:45 #1
Noget i denne stil?

<?php
  if( isset($_GET['side']) ) {
    switch($_GET['side']) {
      case 'foo':
        include("undersider/foo.php");
        break;
      case 'bar':
        include("undersider/bar.php");
        break;
  }

?>

Menu: <a href="index.php?side=foo">Foo</a> <a href="index.php?side=bar">Bar</a>
Avatar billede whatever Nybegynder
06. juni 2004 - 17:48 #2
Du kunne f.eks. skrive følgende:

<?php

    if (isset($_GET['page']) && $_GET['page'] && file_exists("pages/".$_GET['page']."php")) {
        include("pages/".$_GET['page']."php");
    } else {
        include("pages/default.php");
    }

?>

Du linker så til <a href="dinside.php?page=kontakt">Kontakt</a>, så vil siden kontakt.php der i biblioteket pages blive inkluderet.

Jeg tjekker om filen eksisterer og variablen page er sat, hvis ikke inkluderes default.php.
Avatar billede whatever Nybegynder
06. juni 2004 - 17:49 #3
Mangler vist lige et par punktummer, prøv dette:

<?php

    if (isset($_GET['page']) && $_GET['page'] && file_exists("pages/".$_GET['page'].".php")) {
        include("pages/".$_GET['page'].".php");
    } else {
        include("pages/default.php");
    }

?>
Avatar billede dennismp Nybegynder
06. juni 2004 - 17:53 #4
*suk*

Lad aldrig brugeren bestemme hvilken fil der skal indlæses. At smide tekst før/efter filnavnet er desværre ikke nok - man kan godt komme rundt om det alligevel.
Avatar billede whatever Nybegynder
06. juni 2004 - 18:09 #5
Løsningen er dog langt mere fleksibel en løsningen med en switch. Der tjekkes om filen eksisterer, og man kunne for den sags skyld også tjekke om $_GET['page'] bestod af gyldige tegn. F.eks. med:

preg_match("/^[A-z0-9]+$/",$_GET['page'])
Avatar billede dennismp Nybegynder
06. juni 2004 - 18:38 #6
Jeg prioriterer sikkerhed fremfor fleksibilitet - er småparanoid :). Og mange nye folk bruger bare koden uden at overveje at de rent faktisk har et kæmpe hul. Hvis du havde tilføjet dit regex i dit svar, havde jeg ikke brokke mig. Jeg ville nok stadig foretrække et array, så jeg selv bestemmer hvilke filer brugeren kan nå via $_GET['page'].

whatever; Dette er ikke møntet på dig personligt. Det er mere at dette "problem" var oppe for ikke så lang tid siden, hvor vedkommende var bedøvende ligeglad med sikkerhedshuller. "det er meget smartere".
Avatar billede whatever Nybegynder
06. juni 2004 - 18:52 #7
Jeg kan sagtens se hvad du mener. Jeg må nok tilstå at jeg af og til tager mig til hovedet når man ser hvad folk de laver herinde.

Når jeg valgte at ligge filerne i biblioteket "pages", var det en måde at begrænse hvilke sider folk kunne fange via $_GET['page'].
Avatar billede ibhansen Nybegynder
06. juni 2004 - 20:56 #8
Dennismp, kan jeg få lidt forklaring til det kode, er ny inde for php, og har leget lidt med det du skrev, men kan ik få det til at virke, hvad skal der stå hvor der står "side"?
Avatar billede ibhansen Nybegynder
06. juni 2004 - 20:57 #9
eller er jeg helt ved siden af med det skal ændres:D?
Avatar billede dennismp Nybegynder
06. juni 2004 - 21:01 #10
Der skal bare stå side :-).. Det er ligemeget hvad den kaldes, bare det er konsekvent :)
Avatar billede ibhansen Nybegynder
06. juni 2004 - 21:14 #11
ok, kan bare ikke få det til at virke, har lagt det hele i en fil der hedder test.php og i den fil står der det her:

<?php
  if( isset($_GET['side']) ) {
    switch($_GET['side']) {
      case 'test':
        include("test.txt");
        break;
      case 'test2':
        include("test2.txt");
        break;
  }

?>

Menu: <a href="test.php?side=test">test</a> <a href="test.php?side=test2">test2</a>

og så har jeg lavet 2 tekst filer der hedder "tekst"´og "tekst2" og har uploadet det til en adresse der hedder www.lilleper.1go.dk/test.php men det virker ikke. Går ud fra det er mig der laver noget skidt, ved bare ik hvad:D
Avatar billede dennismp Nybegynder
06. juni 2004 - 21:34 #12
det sskal du ikke være så sikker på. Det virker som om at 1go.dk undertrykker fejlbeskeder (eller nogle af dem) .. prøv med denne kode (har tilføjet et } i slutningen)

<?php
  if( isset($_GET['side']) ) {
    switch($_GET['side']) {
      case 'test':
        include("test.txt");
        break;
      case 'test2':
        include("test2.txt");
        break;
    }
  }
?>
Menu: <a href="test.php?side=test">test</a> <a href="test.php?side=test2">test2</a>
Avatar billede whatever Nybegynder
06. juni 2004 - 21:42 #13
Du har ikke nogen fil der hedder test.txt, men en der hedder tekst.txt ;-)
Avatar billede ibhansen Nybegynder
06. juni 2004 - 22:03 #14
flot af mig:D
Avatar billede dennismp Nybegynder
06. juni 2004 - 22:10 #15
Og jeg sidder bare her og fatter intet, der er da godt at whatever er en smule vågen :)
Avatar billede ibhansen Nybegynder
06. juni 2004 - 22:16 #16
Der er desværre stadig et problem, kan ikke se linkene. Filerne og er rettet, koden ser nu  sådan ud:

<?php
  if( isset($_GET['side']) ) {
    switch($_GET['side']) {
      case 'test':
        include("tekst.txt");
        break;
      case 'test2':
        include("tekst2.txt");
        break;
    }
  }
?>
Menu: <a href="test.php?side=test">test</a> <a href="test.php?side=test2">test2</a>
Avatar billede whatever Nybegynder
06. juni 2004 - 22:20 #17
Øhh... når jeg går ind på http://www.lilleper.1go.dk/test.php virker det da fint.
Avatar billede ibhansen Nybegynder
06. juni 2004 - 22:28 #18
Det er da også rigtigt, det gjorde det ik før:D Sider og sover:)
Avatar billede dennismp Nybegynder
06. juni 2004 - 22:28 #19
"Dan kan ikke finde ud af af php" :-)

Husk at reload så du ikke ser en cache ..(shift-f5 eller shift + tryk på reload/genindlæs knappen)
Avatar billede ibhansen Nybegynder
06. juni 2004 - 23:07 #20
Ja, det var det der var problemet, havde opdateret, men så det samme:) det hjalp så da den blev lukket ned.
Avatar billede ibhansen Nybegynder
06. juni 2004 - 23:23 #21
En eller anden skal vel oprette et svar, eller er jeg galt på den igen:D
Avatar billede whatever Nybegynder
06. juni 2004 - 23:30 #22
Jeg kan da godt oprette et :-)
Avatar billede dennismp Nybegynder
06. juni 2004 - 23:36 #23
Så lad gå da - men kun hvis du mener at jeg var til hjælp.:)
Avatar billede ibhansen Nybegynder
07. juni 2004 - 17:19 #24
I hjalp jo lidt begge 2, så i må dele, takker for hjælpen.
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