Avatar billede hfrontdk Nybegynder
27. juli 2003 - 19:52 Der er 22 kommentarer og
1 løsning

Brug af "htmlentities" og switch

På baggrund af schaefner's udmærket switch eksempel i http://exp.dk/spm/340193 vil jeg høre om det muligt at tilføje funktionen "htmlentities" på det man includerer?

Jeg har selv prøvet mig lidt frem uden held, men det kan være at jeg ikke helt forstår "htmlentities" - er det ikke sådan at den omdanner æ til æ osv.?

Men mine filer består ikke kun af ren tekst, men også billeder og tabeller, så min billeder kommer ikke frem - det er kun tagsne (altså <img bla bla.).

Kan man ikke gøre sådan at de alm. html-koder blot skal gøre det de er bedst til og så ellers få æ som &aelig; osv.?
Avatar billede repsac Nybegynder
27. juli 2003 - 19:56 #1
"... så min billeder kommer ikke frem - det er kun tagsne (altså <img bla bla.)."

Det er fordi der i filen står et < (tegnet mindre end), hvilket bliver lavet om til &lt; (Less Than). Derfor vil du i din browser se tegnene <img osv., men viser du kilden, vil der stå &lt;img osv. :)
Avatar billede hfrontdk Nybegynder
27. juli 2003 - 19:59 #2
Hvordan kommer jeg udenom det?
Avatar billede repsac Nybegynder
27. juli 2003 - 20:00 #3
Det skal lige siges at switch'en kan gøres lidt mere elegant end schaefner's version :)

switch($_POST['action']) {
    case 'test1':
    $fil = 'test1.php';
    $overskrift = '1.schaefner er en hyppig bruger af eksperten';
    break;

    case 'test2':
    $fil = 'test2.php';
    $overskrift = '2. schaefner er en hyppig bruger af eksperten';
    break;

    # Osv.

    default:
    $fil = 'default.php';
    $overskrift = 'Forsiden';
}

Se evt. www.php.net/switch
Avatar billede repsac Nybegynder
27. juli 2003 - 20:01 #4
hfrontdk: Det kan du ikke sådan lige, ikke uden at det skal blive ganske avanceret (noget med at genkende alle html-tags, og så lade være med at htmlentities'e tegnet lige før og det tilhørende slut-tegn)... men hvorfor er det du vil htmlentities'e hele skidtet?
Avatar billede tipsen Nybegynder
27. juli 2003 - 20:02 #5
Tilføj:

<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

indenfor <head> tags - så vil dokumentet blive korrekt selvom du ikke bruger html-ækvivalenterne for eksempelvis æ, ø og å.

Alternativt skal du oversætte &lt; tilbage til < og &gt; tilbage til > vha. strtr()
Avatar billede hfrontdk Nybegynder
27. juli 2003 - 20:04 #6
OK, den switch ser da lidt "nemmere" ud, så det er jo fint hvis det kan gøre det.

Grunden er at jeg har en del artikler som jeg gerne vil have kørt "htmlentities" på så jeg er fri at skulle sidde og omdanne æ ø og å manuelt. :o(
Avatar billede hfrontdk Nybegynder
27. juli 2003 - 20:05 #7
tipsen >> den har jeg på, men jeg troede ikke at det var nok, men hvis det sagen så er den jo fjong!
Avatar billede repsac Nybegynder
27. juli 2003 - 20:07 #8
hfrontdk: kan din editor ikke gøre det for dig i en ruf?

(repsac er vim-bruger ;))
Avatar billede hfrontdk Nybegynder
27. juli 2003 - 21:51 #9
Jeg bruger Dreamweaver og har faktisk ledt efter den funktion - den var der dengang det hed HomeSite.
Avatar billede repsac Nybegynder
28. juli 2003 - 00:19 #10
Huh, dreamweaver... så kan jeg sgu nok ikke lige "omvende" dig ;)
Avatar billede tipsen Nybegynder
28. juli 2003 - 01:13 #11
repsac: Han nævner HomeSite - det lugter lidt af fisk (det har jeg også selv brugt inden jeg fandt "Maguma Studio") - han kan sagtens omvendes.
Avatar billede hfrontdk Nybegynder
28. juli 2003 - 07:48 #12
Hehe hvis I lige smider linket til jeres favorit-editor, så deler jeg pointene... :o) *jeg synes faktisk og Dreaweaver er blevet for tungt at arbejde i*
Avatar billede tipsen Nybegynder
28. juli 2003 - 09:14 #13
Avatar billede hfrontdk Nybegynder
28. juli 2003 - 10:02 #14
Bruger du bare gratis-versionen?
Avatar billede tipsen Nybegynder
28. juli 2003 - 10:15 #15
Gratisversionen er fin, med mindre du har brug for projektstyring, cvs,...
Avatar billede sostack Nybegynder
28. juli 2003 - 11:11 #16
Avatar billede hfrontdk Nybegynder
28. juli 2003 - 12:32 #17
repsac >> jeg lurer lige lidt på det med switchen. :o)

shaefner bruger $_GET som skulle gøre at man ikke kunne gøre sådan: http://farlig.dk/farligfil.php - vil den switch-version du nævner også tage højde for dette eller er jeg på vildspor?
Avatar billede repsac Nybegynder
28. juli 2003 - 13:29 #18
hfrontdk: hupla, det skal jo være en $_GET-forespørgsel.

... men det har _intet_ at gøre med om man kan "åbne" siden "http://farlig.dk/farligfil.php" -- det vil jeg ALTID kunne! Spørgsmålet er om Apache (webserveren) har rettigheder til at se filer som almene brugere ikke har. Denne problematik elimineres ved at benytte en switch...

Forestil dig en side med følgende kode (daarligkode.php):
<?php include($_GET['action'] . '.php'); ?>

Hvis jeg åbner daarligkode.php?action=../sti/til/farlig.fil så vil jeg (hvis Apache kan få lov at læse filen) se indholdet af filen -- det kunne være opsætninger på serveren der fortæller en hacker hvad han skulle gøre for at root'e maskinen, eller hvad ved jeg...

Tadaaa, det roder switch'en bod på, idet man kun include'er det som variablen $fil kan indeholde; nemlig de filer _DU_ har specificeret i switch'en. Dvs. forsøgte jeg at åbne siden godt_kode_side_med_switch.php?action=../sti/til/farlig.fil vil 'forside.php' (eller hvad der nu er i default-case'en) blot blive vist.
- læs i øvrigt dokumentationen om switch på www.php.net/switch

Psst... for lige at afsløre noget, så kan switch ikke noget som man ikke kan lave med en if-elseif-struktur -- det er bare kønnere med switch'en :)

Brug for mere forklaring?
Avatar billede tipsen Nybegynder
28. juli 2003 - 14:13 #19
En alternativ løsning på problemet kan være vha. et array:

// check om action er postet og initialiser $action
$action = isset($_POST['action']) ? $_POST['action'] : 'default';

// array med navigationselementer - nem at udvide med nye sider
$pages = array(
  'default' => array('file' => 'default.php', 'title' => 'Hovedside'),
  'test1' => array('file' => 'test1.php', 'title' => 'Test1 side'),
  'test2' => array('file' => 'test2.php', 'title' => 'Test2 side'),
  'test3' => array('file' => 'test3.php', 'title' => 'Test3 side')
);

// Hvis den postede action-værdi ikke findes i arrayet benyttes default-værdien
if (!array_key_exists($action, $pages)) {
  $action =  'default';
}

// Pil de ønskede værdier ud af arrayet
$filnavn = $pages[$action]['file'];
$sidetitel = 'www.DumDaDej.dk :: ' . $pages[$action]['title'];
Avatar billede hfrontdk Nybegynder
28. juli 2003 - 14:30 #20
Tak for jeres jeres udskæring i pixels - nu forstår jeg problematikken der kan opstå.

repsac >> læg lige et svar - gerne med link til vim-programmet - så får du lidt point.
Avatar billede tipsen Nybegynder
28. juli 2003 - 14:33 #21
Ikke engang nogle kommentar til min array-kode - synes ellers selv den er så smart - brugte den faktisk selv inden jeg gik helt over til db...
Avatar billede hfrontdk Nybegynder
28. juli 2003 - 14:59 #22
Jo, den var fin *jeg troede jeg fik dækket begge forklaringer ind ved skrive "jeres"* - det hjælper altid at se tingene i et andet lyd.
Avatar billede hfrontdk Nybegynder
29. juli 2003 - 20:58 #23
repsac?
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