Her får du hjelp til å lage hjemmeside med video. Alle verktøy og programmer vi bruker til å lage webside er gratis.
Dynamisk side
heisann, lurte på om dette var en fornufig måte å bygge opp en seksjon på:
Som du vet, så har jeg flere seksjoner på medlemsområdet (Nyheter, Info, Tips etc.).
Akkurat nå har jeg en mappe pr. seksjon. Så URL'en blir slik da:
www.domene.no/medlem/nyheter/nye-produkter.php
www.domene.no/medlem/informasjon/nye-tjenester.php
osv.
Hva om jeg setter opp kun en index-side pr. kategori, og så ha en mappe med innholds-dokumenter som jeg inkluderer.
Slik at URL'en blir noe slik:
www.domene.no/medlem.php?nyheter=nye-produkter
www.domene.no/medlem.php?informasjon=nye-tjenester
Da også kunne få til noe slik: www.domene.no/medlem.php?id=1234567 (for medlemmens profil)
Til å innkludere en .html-side brukte jeg denne koden:
<a href="dynamic_site.php?content=contact">Kontakt</a>
<?php
$content = $_GET['content'];
if($content)
{
include("inc/" . $content . ".php");
}
?>
Det er kansje noe slik man gjør det i forbindelse med å hente ut noe fra databasen? bare med IDnr?
Trur kansje jeg heller i riktig retning. Føler jeg da, men derfor jeg spør så jeg ikke studerer og studere og så viser deg seg at det er helt feil....
Jo, du er på riktig vei, og ja, du kan gjøre det på den måten, men jeg liker den ikke.
Jeg synes du skal holde deg til én variabel der det er logisk.
Si du har to filer, "side.php" for nyheter produkter osv, og "medlem.php" for medlemsprofiler. På side.php bruker du kun én variabel, og den kan f.eks. hete pid, for page id. Videre velger du om du vil gi de forskjellige kategoriene dine tall eller navn, f.eks.
- domene.com/side.php?pid=1 [for nyheter]
- domene.com/side.php?pid=2 [for produkter]
eller
- domene.com/side.php?pid=nyheter
- domene.com/side.php?pid=produkter
Deretter bruker du scriptet "side.php" til å avgjøre hvilken fil som skal inkluderes basert på denne variabelen. Husk også å sikre deg mot eventuelle angrep. Ikke bruk variabelen direkte for å inkludere filer, type;
Hvis domene.com/side.php?pid=produkter : include($_GET['pid'] . '.php');
Og hva om brukeren selv går opp å skriver egen pid? Til et dokument som ikke eksisterer for eksempel.
For medlemssidene kan du f.eks. bruke "mid" som variabel, slik at URLene blir domene.com/medlem.php?mid=123
Som jeg sa; ikke bruk variabelen direkte for å velge hvilke filer som skal inkluderes, men spesifiser hva en gitt variabel skal inkludere. Ved å la brukeren definere hvilket dokument som skal inkluderes så åpner du et potensielt sikkerhetshull.
Hvis du skal sende to variabler så gjøres det ved hjelp av én &, slik;
domene.com/side.php?pid=nyheter&nyhetsid=123
for flere enn to
domene.com/side.php?pid=nyheter&nyhetsid=123&highlight=foo
Jeg mener du bør gjøre ting på den måten du selv synes virker best. Generalisering er stikkordet. Jo mer du kan generalisere, desto mer fleksibelt blir scriptet ditt.
F.eks ville jeg brukt én og samme fil for alt slags innhold, være seg nyheter, guider, produkter eller annet.
Samme med kategorier, jeg hadde brukt ett script og generalisert så mye som mulig.
Nei, du bruker variabelen direkte.
Ja, for eksempel, men du bruker variabelen fra GET direkte for å velge hvilken fil som skal inkluderes. Det ville ikke jeg gjort.
Eksempel på hvordan man ikke bør gjøre det:
<?php
$file = $_GET['file'];
include('/path/to/' . $file . '.php');
?>Her bruker man variabelen fra GET direkte!
Eksempel på hvordan man kan sikre det bedre;
<?php
switch ($_GET['file') {
case 'nyheter':
$file = 'nyheter';
break;
case 'produkter':
$file = 'produkter';
break;
default:
$file = 'ikke-gyldig';
break;
}
if(isset($file)) {
require('path/to/' . $file . '.php');
}
?>Ser du hvordan variabelen $file her er definert for forskjellige typer query strings? På den måten kan ikke brukeren forsøke å manipulere spørrestrengen for å kjøre skript han tror eller vet ligger på serveren.
?>Ja, du har begynt å bygge et komplekst system nå, og det er grunnen til at man forsøker å skille HTML, CSS og PHP fra hverandre i høyest mulig grad.
Ofte bruker man gjerne et templatesystem, slik at layouten bygges opp lag-for-lag, for så å bli lagt inn på siden. Dette er en evolusjon programmerere flest går gjennom. Man begynner å lage ting på en "tungvindt" måte, og så ser man forbedringspotensiale i ting hele tiden. Dette er noe jeg ikke kan hjelpe deg med, da det krever erfaring og innstikt for hvordan du skal gjøre ting hele tiden. Ved programmering så tar man jo ofte avgjørelser om hvordan man skal løse et problem.
Når det gjelder title, description osv, så ville jeg hatt individuelle title, description og h1 lagret i hvert sitt felt i databasen. Deretter hadde jeg dratt dem ut sammen med innholdet og bygget opp websiden.
Menypunktene kan du lagre i databasen, ja. Hvordan du gjør dette avhenger jo selvsagt av deg.
Du får dele opp hva en link består av da, vet du. En title, en URL og ankertekst, deretter får du lagre disse tingene i databasen og så hente dem ut og bygge opp menyen, hvis det er det du vil.
Det er jo ikke noe i veien for å lagre disse i et statisk dokument heller, alt faller på deg :)

hvis brukeren selv forsøker å angi en id eller ett navn etc. som ikke eksisterer, så vil brukeren endten få en feilmelding eller sendt vekk til en feilmeldingsside ved bruk av else-statement...
Slik: (og kom over file_exists(); funksjonen)
<?php
$content = $_GET['pid'];
if ($content) {
$path = 'inc/' . $content . '.php';
if (file_exists($path)) { include ($path); }
else { print 'Siden du angav eksisterer ikke'; }
}
?>
Benytter jeg denne linken: <a href="side.php?pid=nyheter">Nyheter</a> så komme brukeren til index-siden for nyheter og så blir URL'en slik: www.domene.com/side.php?pid=nyheter.php
Du mener nå, at det dokumentet som blir inkludert, skal hente frem ett gitt innhold?
Eksempel at det er nyheter.php som skal hente frem et gitt innhold.
Da må hovedlinken også sende en innholds-ID da, som nyheter.php leser for å hente riktig innhold. sant?
kansje ved bruk av en && opperator. Noe slik:
<a href="side.php?pid=nyheter&&aid=1234">Nye produkter</a> (aid = artikkel id)
jeg føler meg litt på jordet her...
med hilsen
Thomas Kile