15. juli 2005 - 13:54Der er
15 kommentarer og 3 løsninger
Sti kan ikke åbnes på alle maskiner - brandslukning
Jeg har et kodestump som henter og viser indholdet af en mappe. Meningen er så, at brugerne også skal kunne åbne indholdet ved at klikke på linket det leverer.
Men det er ikke alle maskiner som man kan det på, hvorfor?
Jeg håber nogle kan løse dette hurtigt og nemt, for der er virkelig tale om brandslukning.
Koden:
<?php include('static/opsaetning.php');
function forceDir($dir){//Funktion der opretter alle undermapper $subs = explode('/', $dir); $tmp = ''; foreach($subs as $name){ $tmp = $tmp . $name; if (!file_exists($tmp)){ mkdir( $tmp ); } $tmp = $tmp . '/'; } return $dir; }
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
Hent en side frem, som indeholder links, som ikke fungerer for alle. Vælg "Vis kilde" eller tilsvarende i din browser, find de links der er problemer med, og vis HTML'en her.
Jeg tror det er noget med specialbogstaver den har svært ved. Den kommer i hvert fald med en fejlmeddelelse, hvor æ er ændret til et eller andet procenttegn og en værdi. Det er jo nok encoden der er problemet.
Jeg ved ikke hvad der er problemer med, og det er ret besværligt at finde ud af det bare ved at kigge på koden.
Jeg vil også tro det har noget med specialtegn at gøre. Sådan plejer det at være, når nogle links virker, mens andre ikke gør, selv om de er lavet på samme måde.
$navn = @$_GET['navn']; // $navn er nu en streng, som kan indeholde næsten hvad som helst echo '<a href="/foobar.php?navn='.urlencode($navn.'">Klik her</a>';
Hvis det link fungerer uden specialtegn, gør det også med.
Jeg kan nu se at der overhovedet ikke er taget hensyn til specialtegn. Men først, fx "\\srv-fil1\/DS Spærsalg" - Jeg er ikke sikker på hvad Windows siger til "\/". Det ser i hvert fald forkert ud for mig.
Men ellers, der er tre steder urler bliver genereret, jeg foreslår at indsætte urlencode (og en enkelt str_replace) sådan her: (utestet)
På de maskiner hvor de ikke virker, ja, så er det alle.
Det mærkelige er som du kan, se at på bl.a. min maskine, kommer "\" ikke. Hvorfor fanden er det ikke alle steder det er galt? Er det noget opsætning i Windows?
Nå, det er ikke en showstopper. Selvfølgelig, skal vi have det løst, men jeg går på ferie i 2 uger nu, og jeg ved faktisk ikke om jeg kan genskabe problemet der hjemme, men det må vi lige se.
Du kan prøve at insætte echo '<p>$SERVER: '.$SERVER.'</p>'; o. lign. lidt rundt omkring, så du kan se hvor de backslashes dukker op henne. Jeg tror bestemt ikke det er i den kode du har vist, så første sted du kan prøve er lige efter include('static/opsaetning.php').
Ahhh, det er sgu utroligt, at man hele tiden skal holde øje med brugerne.
Systemet er lavet på den måde, at der er en administrationsdel, hvor nogle superbruger kan gå ind og ændre/opsætte/slette enkelte indstillinger, bl.a. adressen til serveren, og prøv engang at gætte hvad der stå der. Ja, nemlig \\srv-fil1\, og min kode hiver jo bare hele tekstestrengen ind, så derfor kom de mærkelige \\.
Så nu virker det, det mærkelige er bare, at enkelte maskiner godt kunne åbne filerne/links selvom der var nogle \ som ikke skulle være der.
Men ligger du et svar myplacedk, for du fik mig jo til at prøve med $SERVER, og der ud af kunne jeg se, at det måtte komme fra administrationsdelen, altså static/opsaetning.php
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.