Avatar billede Slettet bruger
20. juli 2010 - 22:40 Der er 17 kommentarer og
1 løsning

opfølgning på tråden: "link til filer der er tilføjet via include"

I denne tråd fik jeg hjælp til at lave links som åbnede sider i den index siden:
http://www.eksperten.dk/spm/914419

koden der blev brugt var denne:

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');
}


Men nu er jeg stødt på et nyt problem..
I nogen tilfælde skal jeg bruge et link som dette:
vis.php?id=3

hvordan kan man flette det ind.
Avatar billede majbom Novice
20. juli 2010 - 23:07 #1
du bruger bare id i stedet for page?
Avatar billede Slettet bruger
20. juli 2010 - 23:11 #2
Jamen det jeg mener er at jeg har index.php?page=vis
Og det er så der det skal være:
index.php?page=vis.php?id=3

Lige nu kan jeg kun få den til at gå ind på
index.php?page=vis
Avatar billede michael_stim Ekspert
20. juli 2010 - 23:14 #3
ndex.php?page=vis.php&id=3
Avatar billede Slettet bruger
20. juli 2010 - 23:20 #4
dette er koden i der linker:

<a href=\"vis.php?id=".$row['n_ID']."\">


når jeg laver links laver jeg dem jo sådan.


<a href='index.php?page=vis'>


og med denne linje:

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

laver jeg jo include vis.php
så kommer jeg jo til at mangle noget bagved...
Avatar billede woodydrn Nybegynder
21. juli 2010 - 06:34 #5
Du skal passe meget på at bruge include eller require med en variable, jeg kunne smide "http://test.dk/test" ind i $_GET["page"] .. så jeg loadede min egen php fil, på dit system.
Avatar billede majbom Novice
21. juli 2010 - 06:53 #6
når du bruger

<a href='index.php?page=vis&id=3'>


får du fat i id på samme måde som du får fat i page:

$page = $_GET['page'];
$id = $_GET['id'];
Avatar billede jakobdo Ekspert
21. juli 2010 - 10:08 #7
woodydrn: Der er lid tjek på input, filnavn må f.eks. kun indeholde: [a-zA-Z1-9_], men ellers har du ret. Man bør passe på at anvende $_GET og $_POST kode direkte i includes / requires etc...
Avatar billede Slettet bruger
21. juli 2010 - 10:30 #8
Splazz --> Det vil jeg prøve at lege lidt med.

Woodydrn --> Hvordan vil du så gøre?


Måden det blev gjort på i ASP var denne:
Og hvis nogen kan lave det til PHP koder skal de være meget velkommen

I toppen havde vi denne linje:

strSIDE    = lcase(Request.Querystring("side"))




Så gør vi forside til start side

If len(strSIDE) = 0 then
    strSIDE = "forside"
end if




Vi havde menuen med links:

<a href=""?side=forside"">Forside</a>")
<a href=""?side=visalle"">Vis alle nyheder</a>")
<a href=""?side=vis"">Vis nyhed</a>")
<a href=""?side=medlemmer"">medlemmer</a>")




Vi havde en masse cases centralt hvor siderne skulle vises:

Select case strSIDE

        case "forside"
            %><!--#include file="forside.asp"--><%
        case "vis"
            %><!--#include file="vis.asp"--><%
        case "visalle"
            %><!--#include file="visalle.asp"--><%
'Brugersystems sider
        case "medlemmer"
            if session("userlvl") >= 5 then
            %><!--#include file="medlemmer.asp"--><%
            end if

end select
Avatar billede woodydrn Nybegynder
21. juli 2010 - 12:42 #9
Woodydrn --> Hvordan vil du så gøre?


Well jeg ville aldrig include tekst eller html på den måde, men mange folk gør det.

Den er sådan set fin nok, når du checker variablen i include, jeg tror dog jeg ville lave preg_match om til /^side[0-9]+$/ så den ikke kunne bruge andet end 0-9.
Avatar billede jakobdo Ekspert
21. juli 2010 - 12:59 #10
Du kunne også gøre brug af:

$ok_sider = array('forside','kontakt','vis');

if(in_array($_GET['page'],$ok_sider)){
require($_GET['page'].'.php');
}

eller:

switch($_GET['page']){
  case 'vis':
    require('vis.php');
    break;
  case 'forside':
    require('forside.php');
    break;
  default:
    require('standard.php');
}

På disse 2 måder, er det dig som bestemmer.
Avatar billede Slettet bruger
21. juli 2010 - 14:03 #11
Jakobdo...
Du er inde på noget af det rigtige der.
Har lige prøvet at sætte det op og det dutter bare.

Men mangler stadig at få mine nyheder til at virker.
Jeg har en boks hvor de sidste 5 nyheders overskrifter kommer.
Jeg ville gerne at når man trykkede på dem at de også er med i det system.

Sådan ser mit link ud nu:

<a href=\"index.php?page=vis"\">

Og det virker fint.

Men når jeg trykker på overskriften vil jeg gerne ha sat dette bagved på linket:
.php?id=".$row['ID'].


Jeg har sat denne ind:

switch($_GET['page']){
  case 'vis':
    require('vis.php');
    break;
Avatar billede jakobdo Ekspert
21. juli 2010 - 14:08 #12
Hvis du retter din link på nyhederne til:

index.php?page=vis&id=$row['id']
så bør det virke.

vis.php vil stadig kunne tilgå $_GET['id'] og alle andre $_GET og $_POST variabler.
Avatar billede Slettet bruger
21. juli 2010 - 14:20 #13
Nice...
Det & hvad funktion har den helt præcis??

Du må gerne poste svar.
Avatar billede jakobdo Ekspert
21. juli 2010 - 14:27 #14
& betyder du kan smide flere variabler med i en URL.

index.php?var1=test&var2=mere&var3=andet

så kan du i index.php tilgå:

$_GET['var1']; //test
$_GET['var2']; //mere
$_GET['var3']; //andet

Og jeg vil gerne smide et svar, men andre har nu givet dig samme info, jeg har måske bare sagt det på en anden måde... :o)
Avatar billede Slettet bruger
21. juli 2010 - 14:39 #15
Skiftede mine koder ud med dem du kom med.
Og forstod bedre din besked.

Så godt Michael's besked, men forstod den ikke.
Fik ikke spurgt ham hvad han mente.
Så vidt jeg husker, så samler han heller ikke point, så det gør ham nok ikke så meget.
Avatar billede jakobdo Ekspert
21. juli 2010 - 14:42 #16
Jeg takker for point.
Og hvis nogen føler sig snydt, deler jeg gerne.
Avatar billede wanze Nybegynder
21. juli 2010 - 19:07 #17
Det er en meget usikker løsning at inkludere hvadend brugeren spørger om, så længe det eksisterer. Du bør lave en liste over hvilke filer, det er tilladt at inkludere.
Avatar billede jakobdo Ekspert
21. juli 2010 - 19:39 #18
wanze: Det er vel også hvad jeg foreslår her: http://www.eksperten.dk/spm/914540#reply_7621546
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