Knebba Skrevet 21. desember 2003 Del Skrevet 21. desember 2003 <?php if($id == "") {$id=bilde.jpg;} echo "<img src=\"foto/$id\" alt=\"\">"; ?> <?php //list($width, $attr) = getimagesize("foto/$id.jpg"); $chk_isset_bilde = isset($bilde); if (($chk_isset_bilde)) { $forbidden_1 = ereg("/", $bilde); $forbidden_2 = ereg("\.\./", $bilde); if ($forbidden_1 OR $forbidden_2) { echo "<h1>FY! \n"; echo "Ikke lov!</h1>\n"; } } echo "<img src=\"foto/$id\" alt=\"$id\" border=0 width="; if($width > 760) { echo "760";" >"; } ?> <p> </div> <div style="width: 100%;"> <?php $dirnavn = "foto/thumbs"; $dir = opendir($dirnavn); while( false != ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != ".." ) ) { $file_list .= '<a href="index.php?side=bilder&id='.$file.'"><img src="foto/thumbs/'.$file.'" width="50" height="50" border="0"></a>'; } } closedir($dir ) ?> ville gjerne hatt litt bedre sikkerhet i dette scriptet osv. kanskje noen andre forbedringer? hvordan kan jeg få lagt inn get - ting der, forstår ikke det, men kanskje noen vil lære... hadde vært max!! Lenke til kommentar
ZoRaC Skrevet 22. desember 2003 Del Skrevet 22. desember 2003 Hvis du ikke har register_globals=on vil det ikke virke.. da kan du bruke dette: <?php $id=$_GET['id']; if($id == "") {$id=bilde.jpg;} echo "<img src=\"foto/$id\" alt=\"\">"; //list($width, $attr) = getimagesize("foto/$id.jpg"); $chk_isset_bilde = isset($bilde); if (($chk_isset_bilde)) { $forbidden_1 = ereg("/", $bilde); $forbidden_2 = ereg("\.\./", $bilde); if ($forbidden_1 OR $forbidden_2) { echo "<h1>FY! \n"; echo "Ikke lov!</h1>\n"; } } echo "<img src=\"foto/$id\" alt=\"$id\" border=0 width="; if($width > 760) { echo "760";" >"; } ?> <p> </div> <div style="width: 100%;"> <?php $dirnavn = "foto/thumbs"; $dir = opendir($dirnavn); while( false != ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != ".." ) ) { $file_list .= '<a href="index.php?side=bilder&id='.$file.'"><img src="foto/thumbs/'.$file.'" width="50" height="50" border="0"></a>'; } } closedir($dir) ?> Når det gjelder sikkerhet kunne du lagt inn en sjekk på hvilken filtype man skal vise (jpg, gif, png, osv). og i tillegg gjøre at man ikke får tilgang til undermapper (/bilder/mappe/). Lenke til kommentar
Knebba Skrevet 23. desember 2003 Forfatter Del Skrevet 23. desember 2003 takker men med sikkerheten, for å finne ut hva endelsen.. må jeg vel bruke ereg et eller annet? hvordan ser det ut? og hvordan sjekker jeg om bildene er fra undermapper? Lenke til kommentar
FuLu Skrevet 23. desember 2003 Del Skrevet 23. desember 2003 (endret) Hvis du ikke vil ha noe annet en filnavnet og ikke hvor fila ligger, og du bare vil sjekke om fila ender med .gif, .jpg eller .png, så kan du prøve deg på denne: $subject = "../../../hei.gif"; $subject = basename($subject); // Gir deg bare filnavnet, path fjernes echo "$subject<br/>"; echo preg_match("/^.+\.jpg|gif|png$/i", $subject) == 1 ? "true" : "false"; Endret 23. desember 2003 av FuLu Lenke til kommentar
ZoRaC Skrevet 23. desember 2003 Del Skrevet 23. desember 2003 For å sjekke filendelse: (ikke testet) $type=array('.gif', '.png', '.jpg', '.gif'); if (!in_array(substr($file, strrpos($file, '.')), $type)) { echo "Ulovlig filtype!"; exit(); } Lenke til kommentar
Knebba Skrevet 23. desember 2003 Forfatter Del Skrevet 23. desember 2003 den funket fin fulu... har ikke prøvd din zorac, men den virker sikkert så til neste sikkerhets problem : hvordan kan jeg få til at bare bildene fra ei mappe åpnes? hvis ikke kan man jo legge inn masse rare bilder, og lure folk.. kanskje ikke så farlig, men kjekt å ha sikkert... Lenke til kommentar
ZoRaC Skrevet 24. desember 2003 Del Skrevet 24. desember 2003 så til neste sikkerhets problem :hvordan kan jeg få til at bare bildene fra ei mappe åpnes? hvis ikke kan man jo legge inn masse rare bilder, og lure folk.. kanskje ikke så farlig, men kjekt å ha sikkert... Her skjønner jeg ikke hva du mener...? Lenke til kommentar
Knebba Skrevet 25. desember 2003 Forfatter Del Skrevet 25. desember 2003 bare hvordan jeg kan få bildene fra bare ei mappe til å åpnes. slik som scriptet er nå kan man åpne fra mange forskjellige mapper(ihvertfall på min server, har ikke sjekket om kan åpne fra andre) Lenke til kommentar
ZoRaC Skrevet 25. desember 2003 Del Skrevet 25. desember 2003 Som FuLu skriver: $subject = basename($subject); // Gir deg bare filnavnet, path fjernes Dvs at du kan spesifisere mappen med f.eks: echo "<img src=\"mappe/undermappe/$subject\">"; God Jul! Lenke til kommentar
Knebba Skrevet 25. desember 2003 Forfatter Del Skrevet 25. desember 2003 okei, da var det fikset men en ting til... <?php $dirnavn = "foto/thumbs"; $dir = opendir($dirnavn); while( false != ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != ".." ) ) { $file_list .= '<a href="index.php?side=bilder&id='.$file.'"><img src="foto/thumbs/'.$file.'" width="50" height="50" border="0"></a>'; } } closedir($dir) ?> bruker denne for å hente ut bildene. hvordan kan jeg få organisert de slik at det nyeste opplastede kommer først? nå kommer det nyeste sist.... det er takker veldig har lært en del av dette allerede Lenke til kommentar
FuLu Skrevet 26. desember 2003 Del Skrevet 26. desember 2003 Denne putter filene i et flerdimensjonalt array. En med navnet/path til fila og en filemtime som er unix timestamp. Er bare eksempel, du får plukke ut det du trenger Legg merke til cmp funksjonen. Bytter du om plassen til variablene i strcmp'en, så vil sorteringen putte eldste først og nyeste sist. Slik den er nå, så kommer nyeste først og eldste sist. <?php function cmp($a, $b) { return strcmp($b["mtime"], $a["mtime"]); } $dirnavn = getcwd(); $dir = opendir($dirnavn); $i = 0; while( false !== ($file = readdir($dir) ) ) { if( ($file != ".") and ($file != "..") ) { $files[$i]["name"] = $dirnavn."/$file"; $files[$i]["mtime"] = filemtime($dirnavn."/$file"); $i++; } } closedir($dir); usort($files, "cmp"); while(list($key, $value) = each($files)) { echo "$key; name: " . $value["name"] . " mtime: " . date("Y/m/d H:i:s", $value["mtime"]) . "<br/>"; } ?> Lenke til kommentar
Knebba Skrevet 26. desember 2003 Forfatter Del Skrevet 26. desember 2003 (endret) får ikke det til å virke... den lister bare opp alle filer og mapper i root(?) mappen.... eks: 0; name: /home/kenwo/public_html/includes mtime: 2003/12/26 00:03:45 1; name: /home/kenwo/public_html/foto mtime: 2003/12/25 17:59:42 2; name: /home/kenwo/public_html/poll mtime: 2003/12/24 00:57:40 det er vel bare å legge inn riktig dir, men hvordan? og echoen blir jo også litt rar :S Endret 26. desember 2003 av kennteh Lenke til kommentar
FuLu Skrevet 27. desember 2003 Del Skrevet 27. desember 2003 Hmm, jo, den koden jeg skrev må du selvfølgelig ikke ta slavisk, som du ser så bruker jeg $dirnavn = getcwd(); Denne må du bytte ut med den mappa som du skal liste. Echo'en er bare "debug" for å vise at den sorterer. Den while-løkka trenger du egentlig ikke. Lenke til kommentar
Knebba Skrevet 27. desember 2003 Forfatter Del Skrevet 27. desember 2003 (endret) prøvde meg litt frem med den først men var en litt for komplisert kode for meg å forstå helt uten videre.... skal prøve igjen nå etter en hard dag på jobb $dirnavn = getcwd(); Denne må du bytte ut med den mappa som du skal liste sånn: $dirnavn = getcwd("foto/thumbs/"); ? eller sånn: $dirnavn = getcwd("foto/thumbs/"); ? prøver meg frem fortsatt nå har jeg satt sammen dette: <?php $dirnavn = "foto/thumbs/"; $dir = opendir($dirnavn); function cmp($a, $b) { return strcmp($b["mtime"], $a["mtime"]); } $dirnavn = getcwd(); $i = 0; while( false !== ($file = readdir($dir) ) ) { if( ($file != ".") and ($file != "..") ) { $files[$i]["name"] = $dirnavn."/$file"; $files[$i]["mtime"] = filemtime($dirnavn."/$file"); //her er linje 45 $i++; } } closedir($dir); usort($files, "cmp"); while( false != ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != ".." ) ) { $file_list .= '<a href="index.php?side=bilder&id='.$file.'"><img src="foto/thumbs/'.$file.'" width="50" height="50" border="0"></a>'; } } closedir($dir) ?> men får bare eroren: Warning: filemtime(): Stat failed for /home/kenwo/public_html/ball.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/bat.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/bjorkestol.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/christer.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/engel.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/esben.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/fjell.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 Warning: filemtime(): Stat failed for /home/kenwo/public_html/fleste.jpg (errno=2 - No such file or directory) in /home/kenwo/public_html/includes/bilder.inc.php on line 45 osv osv osv Endret 27. desember 2003 av kennteh Lenke til kommentar
sven-o Skrevet 27. desember 2003 Del Skrevet 27. desember 2003 prøvde meg litt frem med den først men var en litt for komplisert kode for meg å forstå helt uten videre.... sånn: $dirnavn = getcwd("foto/thumbs/"); ? eller sånn: $dirnavn = getcwd("foto/thumbs/"); ? prøver meg frem fortsatt Sist jeg sjekket tar ikke getcwd() argumenter. Prøv heller $dirnavn = getcwd()."/foto/thumbs/"; Lenke til kommentar
FuLu Skrevet 28. desember 2003 Del Skrevet 28. desember 2003 Det som sven-o sa kan du prøve. Men jeg ser noe annet feil i koden din. Du skal jo ikke kjøre readdir og hele den regla på nytt etter du har allerede har gjort det. Du har jo sortert filene inni $files arrayet. Det du skal nå gjøre er å bruke dette arrayet å liste opp bildene ferdig sortert Du kjører også readdir etter at en closedir er blitt kjørt, så dette vil nok feile. Lenke til kommentar
Knebba Skrevet 29. desember 2003 Forfatter Del Skrevet 29. desember 2003 ok.. hehe nå ser koden slik ut: <?php $dir = "foto/thumbs"; function cmp($a, $b) { return strcmp($b["mtime"], $a["mtime"]); } $dirnavn = getcwd()."/foto/thumbs/"; $dir = opendir($dirnavn); $i = 0; while( false !== ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != "$.." ) ) { $files[$i]["name"] = $dirnavn."/$file"; $files[$i]["mtime"] = filemtime($dirnavn."/$file"); $i++; } } closedir($dir); usort($files, "cmp"); while(list($key, $value) = each($files)) { $file_list .= '<a href="index.php?side=bilder6&id='.$file.'"><img src="foto/thumbs/'.$file.'" width="50" height="50" border="0"></a>'; } echo "$file_list"; ?> men på thumbsene blir kodene bare slik: <img src="foto/thumbs/" width="50" height="50" border="0"></a><a href="index.php?side=bilder6&id="> slik er alle linkene til bildene, de viser altså bare til en mappe.. ikke til bilder... stresser litt, men har allerede lært en del derfor jeg satte igang å lage galleriet. kanskje jeg kan lage noe uten hjelp en gang snart? Lenke til kommentar
FuLu Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 Du må bytte $file med $value['name'] Lenke til kommentar
Knebba Skrevet 29. desember 2003 Forfatter Del Skrevet 29. desember 2003 det ser ut til å virke mer nå ja men ikke helt... <?php $dir = "/foto/thumbs"; function cmp($a, $b) { return strcmp($b["mtime"], $a["mtime"]); } $dirnavn = getcwd()."/foto/thumbs"; $dir = opendir($dirnavn); $i = 0; while( false !== ($file = readdir($dir) ) ) { if( ($file != ".") and ( $file != "$.." ) ) { $files[$i]["name"] = $dirnavn."/$file"; $files[$i]["mtime"] = filemtime($dirnavn."/$file"); $i++; } } closedir($dir); usort($files, "cmp"); while(list($key, $value) = each($files)) { $file_list .= '<a href="index.php?side=bilder6&id='.$value['name'].'"><img src="'.$value['name'].'" width="50" height="50" border="0"></a>'; } echo "$file_list"; echo "<br>"; echo "<br>dir=$dir"; echo "<br>file=$file"; echo "<br>files=$files"; echo "<br>key=$key"; echo "<br>value=$value<br>"; ?> nå åpner den bilder helt fra root eksempel: /home/kenwo/public_html/foto/thumbs/plassen.jpg det virker ikke med inkluderingen av bildene virker det som inkluderingen av bildet scriptet ser slik ut hvis det er til noe hjelp: <?php //list($width, $attr) = getimagesize("http://www.kenwo.net/foto/$id.jpg"); $chk_isset_bilde = isset($bilde); if (($chk_isset_bilde)) { $forbidden_1 = ereg("/", $bilde); $forbidden_2 = ereg("\.\./", $bilde); if ($forbidden_1 OR $forbidden_2) { echo "<h1>FY! \n"; echo "Ikke lov!</h1>\n"; } } echo "<img src=\"foto/$id\" width=\"760\" alt=\"$id\" border=0>"; ?> det er ikke mye igjen nå ser det ut til... Lenke til kommentar
FuLu Skrevet 29. desember 2003 Del Skrevet 29. desember 2003 Du får prøve deg på denne, studer litt, har kommentert litt smått her og der: <?php // Compare funksjon som sorterer dato synkende function cmp($a, $b) { return strcmp($b["mtime"], $a["mtime"]); } // Relative og absolute path's //$relative_path = "/foto/thumbs"; $relative_path = "foto/thumbs"; $absolute_path = getcwd()."/".$relative_path; // Her lister vi bare filer som slutter på en bestemt extension $dir_resource = opendir($absolute_path); $i = 0; while( false !== ($file = readdir($dir_resource) ) ) { if( eregi("/$.+\.jpeg|jpg|png|gif^/", $file) ) { $files[$i]["name"] = $file; $files[$i]["mtime"] = filemtime($absolute_path."/$file"); $i++; } } closedir($dir_resource); // Sorterer arrayet etter dato synkende usort($files, "cmp"); // Viser en html-liste over filene i arrayet foreach($files as $file) { echo "<a href=\"listebilder.php?side=bilder6&id=".basename($file['name'])."\"><img src=\"$relative_path/".basename($file['name'])."\" width=\"50\" height=\"50\" border=\"1\"></a><br/>\n"; } /** * Koden som kommer under her tilhører kanskje en annen php fil, men slang alt i en test fil */ $relative_path = "foto"; $absolute_path = getcwd()."/".$relative_path; // Dette er vel en form for sjekk at id'en ikke er noe annet en filnavnet if( isset($_REQUEST['id']) ) { // Denne gir oss bare filnavnet og ikke noe paths $id = basename($_REQUEST['id']); // Sjekker om fila eksisterer if(file_exists($absolute_path."/$id")) { echo "<img src=\"$relative_path/$id\" width=\"760\" alt=\"$id\" border=0>"; } else { echo "<h2>FY skamme deg!</h2>"; } } ?> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå