[php] simpel images opvragen, gaat fout?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Okay, ik heb hier een script liggen welke uit dezelfde map images moet halen. Deze worden door het volgende script opgehaald en weergegeven.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1

// extensies

    $extList = array();
    $extList['gif'] = 'image/gif';
    $extList['jpg'] = 'image/jpeg';
    $extList['jpeg'] = 'image/jpeg';
    $extList['png'] = 'image/png';

$img = null;


if (substr($folder,-1) != '/') {
    $folder = $folder.'/';
}


if (isset($_GET['img'])) {
    $imageInfo = pathinfo($_GET['img']);
    if (
        isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
        file_exists( $folder.$imageInfo['basename'] )
) {
    $img = $folder.$imageInfo['basename'];
}
} else {
    $fileList = array();
    $handle = opendir($folder);
    while ( false !== ( $file = readdir($handle) ) ) {
        $file_info = pathinfo($file);
        if (
            isset( $extList[ strtolower( $file_info['extension'] ) ] )
) {
            $fileList[] = $file;
        }
    }
    closedir($handle);


    if (count($fileList) > 0)
    { 
    $mtime = explode(" " , microtime());
    $mtime = explode(".",$mtime[0]);
        $imageNumber = $mtime[1] % count($fileList); 
        $img = $folder.$fileList[$imageNumber]; 
    } 
}
if ($img!=null) {
    $imageInfo = pathinfo($img);
    $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
    header ($contentType);
    readfile($img);
} else {


// GD Module
    
    if ( function_exists('imagecreate') ) {
        header ("Content-type: image/png");
        $im = @imagecreate (400, 200)
            or die ("Cannot initialize new GD image stream");
        $background_color = imagecolorallocate ($im, 255, 255, 255);
        $text_color = imagecolorallocate ($im, 0,0,0);
        $text_colorred = imagecolorallocate ($im, 255,0,0);
        imagestring ($im, 5, 120, 5, "ERROR ", $text_colorred);
        imagestring ($im, 5, 5, 25, "Ik kan helaas geen afbeeldingen vinden", $text_colorred);
        imagestring ($im, 3, 5, 100, "De oorzaak kan zijn:", $text_color);
        imagestring ($im, 2, 5, 125, "1. Het script kan geen afbeeldingen vinden met de jouw gekozen extensies", $text_color);
        imagestring ($im, 2, 5, 150, "2. Er bevinden zich geen afbeeldingen in de directory: $folder", $text_color);
        
        imagepng ($im);
        imagedestroy($im);
    }
}
?>


Het script komt standaard vanaf PHPFreakz, alleen heb het één en andere er aan aangepast. Het werkt prima, alleen op sommige directories (heb 16 directories met allemaal 10 images) laat hij slechts een paar ervan zien. En dat is niet de bedoeling. De images verschillen in grootte qua kB's maar niet qua afmetingen, ze zijn 700 x 550. Ze worden aangeroepen dmv. een simpele tag in php (<a href="../index.php">[img]"image.php"[/img]</a>)

Heeft iemand enig idee wat er 'mis' is aan het script, want kan niets vinden. Heb ook al geprobeerd de rechten te veranderen, maar die staan standaard op 644.

Acties:
  • 0 Henk 'm!

Anoniem: 47458

Wellicht is het ook verstandig om eerst jezelf te verkennen in de basics.
En beetje knippen en plakken van een script is nou niet echt leerzaam :P

Maak je toevallig gebruik van spaties in de namen van de waar hij het NIET doet?

[ Voor 47% gewijzigd door Anoniem: 47458 op 24-05-2006 01:58 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-06 12:18

NMe

Quia Ego Sic Dico.

Probeer allereerst eens je code uit te lijnen, dit is niet lees- of onderhoudbaar. Dat lost je probleem niet op; sterker nog, dat heeft niets met je probleem te maken, maar het moet gezegd worden. :P

Daarnaast geven we in Programming eigenlijk geen support op scripts van derden, maar aangezien je er zelf wel mee aan het klussen bent laat ik je topic toch open. Ik gok dat je probleem niks met rechten te maken heeft (zeker niet als die gewoon op 644 staan), maar zoals EurOtiC al suggereert kan het best iets zijn met vreemde tekens in bestandsnamen. Kun je even een paar voorbeelden noemen van files die wel doen, en een paar voorbeelden van files die het niet doen? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
@ EuroTic: ik ken wel de basics hoor van PHP. Misschien zelfs wel meer. Maar dit is een hele ranzige oplossing voor mij. Gewoon om het te testen.

Nee, ik maak geen gebruik van spaties in de filename.

@ -NMe-
Speciaal voor jou even een screenshot
Afbeeldingslocatie: http://www.redhead.nl/leon/images.png

Bij sommige directories doet hij het wel gewoon goed, maar bij andere dus weer niet. Dat is hetgene dat ik dus niet snap.

Acties:
  • 0 Henk 'm!

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

edit: mijn (te domme) foutje 8)

[ Voor 117% gewijzigd door teun-v op 24-05-2006 12:33 ]

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

niet als ie even later
PHP:
1
 isset( $extList[ strtolower( $file_info['extension'] ) ] )
doet ;)

@Red: ik zou als ik jou was, wat debug echo's in het script zetten om te zien waar ie de fout in gaat,zet bijvoorbeeld na de header regel eens error_reporting(E_ALL); neer, dan heb je iig wat meer kans dat je eventuele (fout)meldingen ziet.

[ Voor 56% gewijzigd door TheRookie op 24-05-2006 12:34 ]


Acties:
  • 0 Henk 'm!

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
@ TheRookie: helaas hij geeft geen errors aan. Dus moet het of liggen aan de image call functie of aan de images zelf.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

op Regel 52 doe je geen strtolower, dus je zou iig een Undefined Index: JPG moeten krijgen :?

Acties:
  • 0 Henk 'm!

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Maar dat hoeft toch helemaal niet :? want hij heeft hem al geprocessed....

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Je gebruikt de waarde weer om het content type aan te geven; als je strtolower doet wordt niet de waarde van de variable vervangen ...

Acties:
  • 0 Henk 'm!

  • Red
  • Registratie: Februari 2002
  • Laatst online: 03-02-2023
Nou, dan snap ik het sowieso niet, want hij leest ook geen images uit folders die allemaal dezelfde structuur hebben.

Heb even een voorbeeldje online staan, misschien zou je daar even willen kijken: http://www.redhead.nl/haven/hoofd/gallerij/05/

En dat voor 16 galerijen, dus /gallerij/01 - /gallerij/16/

Terwijl de image.php altijd hetzelfde is....

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

als exact hetzelfde script het in de ene dir wel doet en in de andere niet dan zou ik gaan denken dat het aan de afbeeldingen ligt; wat gebeurt er als je de images in een directory waar het wel werkt vervangt door die uit een directory waar het niet werkt ?

[ Voor 1% gewijzigd door TheRookie op 26-05-2006 12:16 . Reden: 2e wel moest natuurlijk niet zijn :| (beter laat dan nooit) ]

Pagina: 1