Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:11 Der er 38 kommentarer og
1 løsning

Include system til hjemmeside...

Harj...

Jeg er ved at lave en hjemmeside... jeg har kodet noget sammen som gør at links siden kalder index.php med ?side=  og så siden fx. index.php?side=forside det den så gør på index.php er at include($side); (har "fanget" den med $_GET...) men jeg får jo fejl hvis jeg vælger en side som ikke findes da den så ikke kan includes... hvordan kan jeg gøre sådan at hvis en eller anden skulle få lyst til at ændre på adresselinien så det er en side der ikke findes så skriver den (eller includer en side der hedder findesikke.php eller noget) at siden ikke kan findes...



Rasmus
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:12 #1
Evt. andre forslag til hvordan jeg kan sende en ting som der ikke kan ændres på... hvis i forstår... man kan jo ændre en ting sendt med GET men ikke en med POST osv. :D
Avatar billede ahv Nybegynder
27. april 2003 - 17:16 #2
Prøv med:

<?php
$file = $_GET[side];
if(@fopen($file, "r") == false){
include("filenfindesikke.php");
}
?>
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:21 #3
Takker det virker kanont :D
Avatar billede olebole Juniormester
27. april 2003 - 17:22 #4
<ole>

Det er 'livsfarligt' at inkludere sider på den måde. Hvad nu, hvis en ondsindet bruger finder på at loade en password-fil (eller andet 'privat') på dit site?  =8-O

/mvh
</bole>
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:25 #5
Hvordan skal jeg så gøre?

og hvorfor er der @ foran fopen?
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:27 #6
Wow ole har lige prøvet med side=../mysql (en side jeg havde i forrige mappe) syret nok sikke et sikkerhedshul... har du en ide til hvad jeg kan gøre i stedet for?
Avatar billede schaefner Juniormester
27. april 2003 - 17:29 #7
?side=nyheder

if(file_exists($_GET['side']."php")) {
  include($_GET['side']."php");
} else {
  include("findesikke.php");
}

Det hjælper i hvertfald på det.
Avatar billede schaefner Juniormester
27. april 2003 - 17:30 #8
Så kan du ikke køre eksterne sider + at den kun godtager php-filer.
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:31 #9
Takker...

Men nu du siger "Det hjælper i hvertfald på det." lyder det som om det stadig ikke er sikkert... foreslag til en helt anden måde at gøre det på som er sikker?
Avatar billede schaefner Juniormester
27. april 2003 - 17:31 #10
Skal lige være:

if(file_exists($_GET['side'].".php")) {
  include($_GET['side'].".php");
} else {
  include("findesikke.php");
}
Avatar billede olebole Juniormester
27. april 2003 - 17:36 #11
Hvis du har sider liggende udenfor webscope (fordi, du kun selv må kunne køre dem), kan de stadig køres med den inkludering.

Det lyder alt i alt som en skidt løsning, du er inde på, exp-ralle - men da vi ikke ved, hvad du skal bruge det til, er det svært at give et godt alternativ.
/mvh
Avatar billede nicklasb Nybegynder
27. april 2003 - 17:39 #12
for det første er det ikke et sikkerhedshul.. ;).. man kunne vel få brug for det?

men en bedre løsning kunne være, hvis du i stedet forudbestemte hvilke filer der måtte blive includeret..

Så kunne du evt ved hjælp af en switch bestemme ud fra en id eller ligende.. eller samme med en if-sætning.. fx:

<?
$sideid = $_GET["side"];

if ($sideid == 1) {
  include("forside.php");
} elseif ($sideid == 2) {
  include("side2.php");
} elseif ($sideid == 3) {
  include("side3.php");
[osv...]
} else {
  include("findesikke.php");
}
?>

Så skal siden hentes med variablerne :
?side=1
?side=2
osv..
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:39 #13
Jeg skal bare bruge det til at inkludere eller hvad det nu blir noget indhold på forsiden index.php hvis netop den side bliver kaldt fra en anden side links.php med links altså kan jeg ikke bare linke til siden da den så ikke kommer ind i min tabel og det på index.php

Har ikke nogen filer uden for webscope nu men ville da være surt med denne løsning hvis jeg fik det...

Håber i har nogle ideer...
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:42 #14
Hmm... udemærket løsning der niklasb men så skal der jo rettes en del (eller lidt) hvis man sletter et link eller tilføjer et midt i rækken eller sådan noget da jeg så skal lave alle numre om... jeg vil gerne have det meget dynamisk så næsten intet skal rettes hvis man tilføjer ny side... men det kan bruges hvis der ikke er andre muligheder?
Avatar billede nicklasb Nybegynder
27. april 2003 - 17:48 #15
hvis det er fordi adressen skal være en smule mere "sigende" kan du jo rette den til at være

if ($sideid == "forside") {
  include("forside.php");
} elseif ($sideid == "naesteside") {
  include("side2.php");
[osv....]

og så kalde siderne med
?side=forside
?side=naesteside

Men det der er hele pointen i det, er at du har forud-defineret hvilke sider der er "lovlige" at includere, ud fra variabler som IKKE indgår i din include-streng.. Altså bliver man smidt på findesikke.php hvis man retter den til noget der er forskelligt fra det du selv har skrevet..

du kunne endelig også bare tjekke på
if ($sideid == "forside.php") {
  include("forside.php");
} elseif ($sideid == "naesteside.php") {
  include("side2.php");
[osv....]

og så incudere siden med samme navn... bare du selv definerer den.. altså skal du skrive den ind både i include( og == "

men hvor stort er din side?? Er det ikke bare et engangsarbjede på et par min det drejer sig om?? og så bliver det altså en smule kønnere..!
Avatar billede olebole Juniormester
27. april 2003 - 17:49 #16
niklasb >> Hvad mener du med 'ikke et sikkerhedshul'? Uden betingelser introducerer du da et sikkerhedshul af monstrøse dimensioner  :)

exp-ralle >> Din 'forklaring' hjalp ikke stort  :)
/mvh
Avatar billede exp-ralle Nybegynder
27. april 2003 - 17:49 #17
Det er bare en personlig hjemmeside...

Skal lige spise tjekker det bagefter
Avatar billede nicklasb Nybegynder
27. april 2003 - 17:50 #18
du kunne også skrive

if ($sideid == "forside.php") {
  include("$sideid");
}

men det er der vel egentligt lige så meget arbjede i ?? og så er det da kønnere med "forside" frem for "forside.php" i adresselinien??
Avatar billede nicklasb Nybegynder
27. april 2003 - 17:55 #19
olebole -> Så ikke lige din kommentar.. men hvorfor skulle det være et sikkerhedshul?? Jeg har før skulle bruge det på en side.. og der er det da "ALT" at man kan includere en side ude fra.. Man skal bare vende sig til at tjekke på sine inputs fra brugerne.. så går det hele altså utroligt let..

jeg ser det OVERHOVEDET ikke som en fejl, eller et sikkerhedshul.. Vil gerne hører difinisionen på et sikkerhedshul ?!?.. Er det så også et sikkerhedshul at der er nøjler til døren ??

Man kunne jo saktens tænke sig en eller anden mindre begavet "idiot" lade nøjlen side i, og bag efter i en radius af 5 km lave en masse skilte med pile hen til hans hus, hvorpå han samtidig beskriver hvor alle ting af værdi er placeret i huset..

man skal bare tænke sig lidt om.. så er det overhovedet ikke et problem..

Hvad ide er der i at includere en side ud fra en variabel ALLE uden videre kenskab til computer kan rette i ?? Hvem er det så der er den dumme ??
Avatar billede exp-ralle Nybegynder
27. april 2003 - 18:07 #20
Hehe ole ved bare ikke hvordan det ellers skal forklares...

Hmm... nicklas mener du at jeg SKAL lave sådan at

if($side == "forside") {

include("forside.php");

} elseif (kan man lave i det i php?)($side == "php"){

include("php.php");

}


???
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:08 #21
det jeg mener , er ;
Hvis du ser include som et sikkerhedshul, så er alle funktionerne i php et stort hul..

lidt det samme som at lave en input-box med teksten "Skriv navnet på den fil du syntes dette websted saktens kunne være foruden..! Bare slet løs..!!"
og så på den næste side lave en chmod på 777 og en unlink af den fil der bliver skrevet ind, uden overhovedet at tjekke på hvad der bliver skrevet.. Så er det altså ikke videre smart..
tror det er et spørgsmål om at vende sig til at lave fejlfrie sider.. For det er da klart en udvikler-fejl, og ikke en sikkerhedshul, at includere en side ud fra en besøgenes input, lige så vel som det også udelukkende er en fejl for programmørens side, den med at slette en valgfri side..
Det er bare lidt lettere at forholde sig til den med at slette, da der ikke er nogle der "normalt" gør det, og da alle saktens kan se at det ville være tåbeligt..
Avatar billede olebole Juniormester
27. april 2003 - 18:08 #22
Problemet i det eksempel, du viste var, at du netop _ikke_ tænkte dig om  ;o)

Du behøver ikke at skrive, hvor tingene er placeret i dit hus ... det ved enhver med kendskab til en IIS eller Apache.

Jeg forstår ikke meget af, hvad du skriver (din PHP-syntaks er forhåbentli lidt bedre end din danske) - men jeg er ikke det mindste i tvivl om, hvem den mindre kloge er, hvis du kunne finde på at inkludere en side udfra en variabel uden at sætte betingelser op. Så er man nemlig - som du selv beskriver det - 'en mindre begavet "idiot"'  :)

/mvh
Avatar billede exp-ralle Nybegynder
27. april 2003 - 18:11 #23
olebole --> Har du ikke et forslag til hvordan det kan gøres?

det med at "sætte betingelser op" ville det hjælpe eller skal jeg helt skrotte det system som jeg altså har nu?
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:12 #24
exp-ralle -> Jep.. det var sådan set min mening ud fra det jeg skrev i mine eksempler..
Men hvis det en menu med flere HUNDREDE link som er meget svær at rette, fordi du ikke bare kan køre en replace med ".php" -> "", fordi der tilfældigvis, også er en masse JS-kode, PHP-kode osv. kludret godt ind i menuen, og at det ville tage flere år, at rette den, kunne du jo bare lave den med

if($side == "forside.php") { osv.. Altså med samme input som før..
men igen.. Hvor mange TUSINDE sider er din side på?? Og hvis din menu er SÅ svær at rette, ville jeg da nok fortrække at den i stedet blev lavet om.. ;)

men ville klart fortrække den løsning i dette tilfælde.. For du ved vel hvilke sider der passer ind i den tabel du har lavet på index.php ?!?
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:16 #25
olebole -> tænker man sig så ikke også lige så lidt om, hvis man kunne finde på at inludere ud fra en bruger-defineret variabel??
Ser ikke den store forskel.. Er man mere dum fordi man lader dem SLETTE en valgfri fil, fremfor at includere den ??
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:22 #26
og til det med det danske.. Har på intet tidspunkt tænkt på at gidde læse korektur, tjekke for tastefejl mm. her.. Du ved vel hvad jeg mener, hvis du gidder.. og hvis ikke, kan du bare lade være at læse det..
det kunne blive kønt hvis jeg skulle læse ALT hvad jeg skrev igennem her.. Så kunne jeg måske også kun lige nå at spise lidt mad, før jeg skulle i seng igen.. ;) .. men sorry hvis der er noget du SLET IKKE kan forstå at det jeg har skrevet..

exp-ralle ->Tror at de "betingelser" ole hentyder til at lidt samme princip som det jeg allerede har gevet eksempler på.. Altså hvor du tjekker på variablerne, og tjekker om det er "godkendte" variabler der er kommet, hvorefter du sender brugeren videre, ved godkendelse, eller viser dem en fejlside, ved afviselse..
Avatar billede olebole Juniormester
27. april 2003 - 18:23 #27
God dag, mand ... økseskaft!  :D

Hvad er det lige, jeg har brugt 3 indlæg på at argumentere for? Prøv at bruge lidt mere energi på at læse, hvad folk skriver - og på at formulere dig selv. Så ville der måske ikke være så mange misforståelser  ;o)
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:25 #28
"Hvad mener du med 'ikke et sikkerhedshul'?" ser jeg nu ikke som et argument FOR.. men ok, hvis det skal være på den måde..
Avatar billede exp-ralle Nybegynder
27. april 2003 - 18:25 #29
Nå okay tak
Avatar billede olebole Juniormester
27. april 2003 - 18:26 #30
Min seneste kommentar var til din (27/04-2003 18:16:34).
Nej, du skriver simpelthen så dårlig et dansk, så det er svært at fatte, hvad det er, du mener .... det er ikke dårlig vilje.

At du til gengæld er ligeglad med, hvad du lukker ud af vrøvl, ser jeg som mangel på respekt for dine omgivelser. Det mindste, man kan gøre, er at tage sig en smule sammen ogg prøve at skrive nogenlunde sammenhængende  ;o)
/mvh
Avatar billede nicklasb Nybegynder
27. april 2003 - 18:27 #31
kan så diskuteres.. og der bliver vi nok ikke enige... så lad os hellere stoppe her..
Avatar billede olebole Juniormester
27. april 2003 - 18:35 #32
At du sjusker enormt med dit sprog, at det er for dårligt og et tegn på despekt, står ikke til diskussion - men ja, lad os endelig stoppe her.
Avatar billede Slettet bruger
27. april 2003 - 19:45 #33
olebole> Jeg forstår fint hvad han skriver, men måske du er dårlig til at tolke andet end det grammatisk korrekte? Det er der nogle ældre mennesker der har problemer med ;)
Avatar billede olebole Juniormester
27. april 2003 - 19:48 #34
el_barto >> Jeg har lige checket, at jeg har besvaret 1564 spm på E. Det argument skulle hermed være hamret i jorden med en monster-svær muggert  ;o)
/mvh
Avatar billede nicklasb Nybegynder
27. april 2003 - 19:56 #35
olebole -> Hvad argumentere det ?? forstår desværre ikke lige.. ;)

"Jeg har ikke lige checket, men tror jeg har besvaret lidt over 300 spm på E."

til din kommentar 27/04-2003 18:35:42, er der åbenbart delte meninger.. Syntes da kun det er godt at du ikke vil diskuterer. Vil jeg heller ikke.. men så forstår jeg ikke at du bliver ved?.. men lad det nu ligge.. ;)
Avatar billede olebole Juniormester
27. april 2003 - 20:09 #36
nicklasb >> Jeg skrev ikke til dig, men svarede el_barto. At du ikke forstod det, kommer nu ikke voldsomt bag på mig  :)

Da du nu selv starter forfra, så lad mig forklare: 'Det argumetere' ikke noget. Det er der ikke noget, der gør (eller hedder).
Men el_bartos argument var vist ikke så godt, da fantastisk mange på E skriver som en brækket (for nu ikke at sige pulveriseret) arm - og det altså alligevel er lykkedes mig at 'sdavø' mig igennem 1564 spørgsmål og give et brugbart svar  :)

Det var ment som en joke (morsomhed ... spøg ... vittighed) til el_barto, men heller ikke den fes altså ind. Tjaaahhhh .....  :)
/mvh
Avatar billede nicklasb Nybegynder
27. april 2003 - 21:03 #37
nej.. jeg fattede ikke helt vittigheden.. sorry..

men kan endnu ikke forstå grunden til alle dine angreb på mig..

----------------------------
...netop _ikke_ tænkte dig om...
...din PHP-syntaks er forhåbentlig lidt bedre end din danske...
...økseskaft!
...du skriver simpelthen så dårlig et dansk...
...hvad du lukker ud af vrøvl....
Det mindste, man kan gøre, er at tage sig en smule sammen ...
At du sjusker enormt med dit sprog, at det er for dårligt og et tegn på despekt
At du ikke forstod det, kommer nu ikke voldsomt bag på mig
----------------------------
(bare et lille udpluk)

og da især ikke, når du så bag efter praler med hvor MANGE du har kunne forstå, med en samtidig kommentar omhandlende hvor dårligt vi generelt skriver og staver alle sammen..
Syntes det er lidt underligt at du angriber brugere på nettet, uden at kende det mindste til dem.. Du har set de ord jeg har skrevet på eksperten.dk. Ellers intet. Jeg har ikke engang et link til en side omhandlende mig selv eller lignende..
og da især, når jeg ikke engang har sagt det mindste om dig.. Har da i hvert falde prøvet at holde det tilbage..!

jeg kommenterede bare et spørgsmål, og gav den løsning jeg ville fortrække i det pågældende spørgsmål. Og argumetede herefter for min holdning til om det var et sikkerhedshul, eller programmørens fejl, da du spurgte hvad jeg mente med den kommentaren herom. men har egentligt slet ikke lyst til at hører dit synspunkt på min kommentar, da jeg næsten kan være evigt forvist om at jeg endnu engang bare skal svines til, med underlige bemærkninger om min stavning eller værre..


exp-ralle -> Har du fået det til at virke med dine includes ?? (og sorry spamingen af din tråd)
Avatar billede exp-ralle Nybegynder
27. april 2003 - 21:23 #38
Nej ikke endnu jeg har ikke prøvet har ikke tid før i morgen...

Godnat
Avatar billede olebole Juniormester
28. april 2003 - 10:51 #39
nicklasb >> Godt nok insisterer du på at fortsætte - på trods af, du angiveligt ikke har lyst(?) - men jeg vil nøjes med at gentage for dig: Hvis du vil undgå at få kommentarer om dit sjuskeri, kan du blot tage dig sammen og lade være.
Det er en del af almen dannelse at skrive blot nogenlunde. Derimod er det uopdragent og mangel på respekt for sine omgivelser ikke at gide at gøre sig en anelse umage.
Hvorfor er det modtageren, der skal belemres med at skulle stave sig igennem teksten? Hvorfor ikke blot tage sig sammen som den skrivende part?
Slåfejl kan altid snige sig ind - men det er overhovedet ikke det, jeg taler om.
/mvh
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