[PHP] Uploaden werkt niet bij klant

Pagina: 1
Acties:
  • 493 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een webshop bij een klant draaien. De klant heeft ook de mogelijkheid om afbeeldingen up te loaden. Ik heb het uitgebreid getest op meerdere computers en het werkt perfect. Bij de klant werkt het echter niet. Hij kan geen bestanden uploaden.

Weet iemand misschien hier de oorzaak van. Zou het bijvoorbeeld aan browser instellingen kunnen liggen? Ik ben het spoor bijster.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Test je alles tegen dezelfde server?

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer eens met een andere browser, zoals Firefox (of IE als hij al met Firefox werkt)

[ Voor 29% gewijzigd door Verwijderd op 19-07-2007 12:42 ]


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
- Maak eens een basaal upload script. Werkt dat wel?
- Kan die klant wel andere uploaden bij andere sites?
- Heeft die klant meerdere computers? Werkt het op een andere computer/browser?

Acties:
  • 0 Henk 'm!

  • kamstra
  • Registratie: April 2001
  • Niet online

kamstra

ipso iure

andere browser al geprobeerd? Wellicht iets met instellingen van intranet oid bij de klant?

Huh..?? Neuh...bedankt | Qui habet aures audiendi audiat


Acties:
  • 0 Henk 'm!

  • Optix
  • Registratie: Maart 2005
  • Laatst online: 12-08 19:46
'Hij kan geen bestanden uploaden.' is wel een beetje mager hoor...

Wanneer en wat gaat er fout dan?

[ Voor 21% gewijzigd door Optix op 19-07-2007 13:12 ]

.


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Probeer je topicstart ook even aan te passen na het lezen van Programming Beleid

Je zet wel heel mooi PHP in je topictitel, maar ik zie geen letter PHP code. Maak een test-case en kijk of dat upload gedeelte wel of niet werkt :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Upload directory wel goede chmod gegeven?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb even snel een testcase script geschreven

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if($_POST["submit"])
{
  move_uploaded_file($_FILES['image']['tmp_name'], "img/" . $_FILES['image']['name']);
  echo "<p><b>Succesvol upgeload?</b></p>";
}

$handle=opendir('img/');
while (false!==($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        echo "- $file</br>";
    }
}
closedir($handle);


Dit script werkt wel gewoon bij de klant. Het script hieronder wil op een of andere niet werken bij de klant.

PHP:
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
if($_POST["submitImage"])
{
  if(isset($_FILES['image'])) 
  {
    $file = explode( "." , $_FILES['image']['name'] );
    $extension = $file[1]; 
     
    if($extension != "jpg" && $extension != "jpeg")
    {
      $imageError = "Aleen .jpg afbeeldingen worden toegestaan!";
    }
    
    if(!$imageError)
    {
      mysql_query("INSERT INTO productImages (productID, extension) VALUES ('" . $_GET["id"] . "','$extension')");
      $imageID = mysql_insert_id();
      $imageName = $imageID . "." . $extension;
      
      move_uploaded_file($_FILES['image']['tmp_name'], "$uploadPath" . $imageName);
        
      createImage($uploadPath, $imageID, $extension, 120, "_small");
      createImage($uploadPath, $imageID, $extension, 285, "_med");
    
      header("location: ".RP."producten/?action=edit&id=" . $_GET["id"] . "");
    }
  }
}


Iemand enig idee waar het fout zou kunnen gaan?

Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Nu online
if($extension != "jpg" && $extension != "jpeg")

upper / lowercase?

Acties:
  • 0 Henk 'm!

Verwijderd

Je zou op bepaalde punten in de code even een echo'tje kunnen doen zodat je duidelijker kan zien waar het precies mis gaat. Heeft de $_FILES variabele sowieso wel een waarde in het tweede script, want misschien gaat het daarvoor al fout.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op donderdag 19 juli 2007 @ 13:54:
Ik heb even snel een testcase script geschreven

Iemand enig idee waar het fout zou kunnen gaan?
En je probeert hetzelfde bestand te uploaden als de klant :?

Geloof daar niks van ;)

Kijk even naar de manier waarop je extensie checkt :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 11-09 09:49
De manier waarop je het bestand checkt is wel risicovol, was latst nog een headline op tweakers.net, dat een verkeerde mime een groot securitylek kon openen.

Ik heb ook een fileupload script geschreven ooit, dat doet het perfect. let wel, bij de functie rename fileheb ik wat overhead, ik moet het script nog gaan aanpassen in de nabije toekomst.

PHP:
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
function upload( $file , $folder )
    {
    $maxsize = 500;
    $upload = 0;
    if( !empty( $_FILES[$file]['name']) && is_uploaded_file( $_FILES[$file]['tmp_name'] ) ) $upload++;
    if( !empty( $folder ) )  $upload++;
    if ( renamefile( $file ) != false  ) $upload++;
    if (  $_FILES[$file]['size'] < $maxsize*1000 ) $upload++; 
    if( $upload == 4)
        {
        if( $folder[ strlen( $folder ) - 1 ] != '/') $folder .= '/';
        $file_tmp = $_FILES[$file]['tmp_name'];
        $file_name = renamefile( $file );
        $file_path =  $folder . $file_name;
        move_uploaded_file( $file_tmp , $file_path );
        return $file_name;
        }
    else return false;
    }
function renamefile( $file )
    {
    // MIME type of accepted files
    $file_type = array();
    $file_type[0] = array( 'image/bmp' , 'bmp' );
    $file_type[1] = array( 'image/gif' , 'gif' );
    $file_type[2] = array( 'image/png' , 'png' );
    $file_type[3] = array( 'image/x-png' , 'png' );
    $file_type[4] = array( 'image/jpeg' , 'jpg' );
    $file_type[5] = array( 'image/pjpeg' , 'jpg' );
    $file_name = false;
    for( $i = 0; isset( $file_type[$i] ) ; $i++)
        { 
        if(  $_FILES[$file]['type'] == $file_type[$i][0] )
        $file_name = explode ( "." , $_FILES[$file]['name'] );
        $file_name = $file_name[1];
        $file_name = ereg_replace("[^A-Za-z0-9]", "", basename(  $_FILES[$file]['name'] )) . '.' . $file_type[$i][1];
        $file_name = explode( '.' , $file_name );
        $file_name = time() . '.' . $file_name[1];
        }
    return $file_name;
    }


Nog iets wat je niet uit het oog moet verliezen is dat sommige servers doodgewoon niet meer reageren (ERROR 404 geven) als je een te groot bestand probeerd te uploaden, dus prober altijd eerst met een heel klein bestandje

[ Voor 6% gewijzigd door g4wx3 op 19-07-2007 14:04 ]

http://www.softfocus.be/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DrClearbottom schreef op donderdag 19 juli 2007 @ 13:57:
if($extension != "jpg" && $extension != "jpeg")

upper / lowercase?
Owh ja dat moet er ook nog even in ;) Maar daar ligt het niet aan. Hij slaat de gegevens sowieso wel op in de database.

PHP:
1
mysql_query("INSERT INTO productImages (productID, extension) VALUES ('" . $_GET["id"] . "','$extension')");


Ik kan wel gaan echo'en om te kijken waar het fout zo gaan. Alleen bij mij werkt het perfect.

Acties:
  • 0 Henk 'm!

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 11-09 09:49
Sla je de afbeelding op in een database?
Ik heb geleerd dat je dat NOOIT moet doen, je gaat je database onodig zwaar maken.
Zet eventueel in je database een link naar de image die je ergens anders in een map opslaat

Waarom er dan toch BLOB kan worden ingegeven in een Database? no idea...

Verkeerd begrepen

[ Voor 4% gewijzigd door g4wx3 op 19-07-2007 14:07 ]

http://www.softfocus.be/


Acties:
  • 0 Henk 'm!

Verwijderd

Waar set je '$uploadPath'?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
move_uploaded_file geeft een boolean terug. Die check je verder niet. Ook kijk je niet naar $_FILES['image']['error'].
Overigens staat alles wat fout kan gaan gewoon in de manual.

[ Voor 25% gewijzigd door GlowMouse op 19-07-2007 14:12 ]


Acties:
  • 0 Henk 'm!

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 11-09 09:49
Je doet nogal ingewikkeld trouwens, je doet 2 handelingen, 1: upload file, 2 insert in de database.
Als je een $_POST request krijg hoor je deze 2 handelingen ook gescheiden af te handelen, in logische volgorde.
Eerst upload je het bestand
Daarna zet je een link in de database naar je zojuist geuploaded bestand

http://www.softfocus.be/


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

g4wx3 schreef op donderdag 19 juli 2007 @ 14:01:
De manier waarop je het bestand checkt is wel risicovol, was latst nog een headline op tweakers.net, dat een verkeerde mime een groot securitylek kon openen.

Ik heb ook een fileupload script geschreven ooit, dat doet het perfect. let wel, bij de functie rename fileheb ik wat overhead, ik moet het script nog gaan aanpassen in de nabije toekomst.

PHP:
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
function upload( $file , $folder )
    {
    $maxsize = 500;
    $upload = 0;
    if( !empty( $_FILES[$file]['name']) && is_uploaded_file( $_FILES[$file]['tmp_name'] ) ) $upload++;
    if( !empty( $folder ) )  $upload++;
    if ( renamefile( $file ) != false  ) $upload++;
    if (  $_FILES[$file]['size'] < $maxsize*1000 ) $upload++; 
    if( $upload == 4)
        {
        if( $folder[ strlen( $folder ) - 1 ] != '/') $folder .= '/';
        $file_tmp = $_FILES[$file]['tmp_name'];
        $file_name = renamefile( $file );
        $file_path =  $folder . $file_name;
        move_uploaded_file( $file_tmp , $file_path );
        return $file_name;
        }
    else return false;
    }
function renamefile( $file )
    {
    // MIME type of accepted files
    $file_type = array();
    $file_type[0] = array( 'image/bmp' , 'bmp' );
    $file_type[1] = array( 'image/gif' , 'gif' );
    $file_type[2] = array( 'image/png' , 'png' );
    $file_type[3] = array( 'image/x-png' , 'png' );
    $file_type[4] = array( 'image/jpeg' , 'jpg' );
    $file_type[5] = array( 'image/pjpeg' , 'jpg' );
    $file_name = false;
    for( $i = 0; isset( $file_type[$i] ) ; $i++)
        { 
        if(  $_FILES[$file]['type'] == $file_type[$i][0] )
        $file_name = explode ( "." , $_FILES[$file]['name'] );
        $file_name = $file_name[1];
        $file_name = ereg_replace("[^A-Za-z0-9]", "", basename(  $_FILES[$file]['name'] )) . '.' . $file_type[$i][1];
        $file_name = explode( '.' , $file_name );
        $file_name = time() . '.' . $file_name[1];
        }
    return $file_name;
    }


Nog iets wat je niet uit het oog moet verliezen is dat sommige servers doodgewoon niet meer reageren (ERROR 404 geven) als je een te groot bestand probeerd te uploaden, dus prober altijd eerst met een heel klein bestandje
Waarom controleren op mime of extensie? kan je niet beter controleren op content?

Met behulp van http://nl2.php.net/getimagesize kan zien of een bestand een plaatje of iets dergelijk is. Zo niet dan weiger je hem daarna.

Dit is IMHO een stuk veiliger en makkelijker dan conttroleren van mime-type en/of extensie.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
is het niet zo'n klant die z'n zelf gemaakte onbewerkte foto van 2,5 mb van een koffiezetapparaat gaat proberen up te loaden, terwijl jij het met normale plaatjes probeert?

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
KJT: denk ook even aan een bestand genaamd hacker.jpg.php, dat komt zonder problemen door je huidige "beveiliging".

Acties:
  • 0 Henk 'm!

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 11-09 09:49
@LuCarD
Slim gezien om met getimagesize() na te gaan of het bestand en image is.
Maar je zit dan nog met het probleem dat je moet zorgen dat het mime type hetzelfde is als de extentie, anders lopen ie-gebruikers mogelijk (kwaadwillend) een veiligheids risico op.
Maar als ik nog eens tijd heb zal ik zeker een combi uitwerken: eerst kijken of het een afbeelding is dan het MIME type controleren, dan de extensie hernoemen op basis van mime-type.

Wat gebeurt er eigenlijk als je een bestand image.php upload, dat een volwaardig image-bestand is controleerd met getimagesize?
Volgens mij gaat ie gewoon verder, en dat is dus al een reden om de extentie zeker te hernoemen, want stel dat je door een bepaalde $_GET parameter die je meegeeft aan het bestand de functie rmdirtree uitvoert, kun je een hele website wegvegen.

http://www.softfocus.be/


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

g4wx3 schreef op donderdag 19 juli 2007 @ 16:35:
@LuCarD
Slim gezien om met getimagesize() na te gaan of het bestand en image is.
Maar je zit dan nog met het probleem dat je moet zorgen dat het mime type hetzelfde is als de extentie, anders lopen ie-gebruikers mogelijk (kwaadwillend) een veiligheids risico op.
Maar als ik nog eens tijd heb zal ik zeker een combi uitwerken: eerst kijken of het een afbeelding is dan het MIME type controleren, dan de extensie hernoemen op basis van mime-type.

Wat gebeurt er eigenlijk als je een bestand image.php upload, dat een volwaardig image-bestand is controleerd met getimagesize?
Getimagesize geeft een array aan data terug. Bijvoorbeeld ook de mimetype. Aan de hand daarvan geef je het plaatje een extensie.
Volgens mij gaat ie gewoon verder, en dat is dus al een reden om de extentie zeker te hernoemen, want stel dat je door een bepaalde $_GET parameter die je meegeeft aan het bestand de functie rmdirtree uitvoert, kun je een hele website wegvegen.
Het gedeelte over de GET parameter begrijp ik niet helemaal goed.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Dan ga ik denk ik met cartman!: het zal wel een rechtenprobleem zijn: PHP mag op de klantserver gewoon niet schrijven in de directory waar je het plaatje probeert te bewaren. Daarom vroeg ik: test je tegen dezelfde server?

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
_js_ schreef op donderdag 19 juli 2007 @ 16:16:
KJT: denk ook even aan een bestand genaamd hacker.jpg.php, dat komt zonder problemen door je huidige "beveiliging".
Tja, het is sowieso een heel slechte aanname dat er altijd precies 1 punt in een bestandnaam zit, die hele extensiecheck rammelt aan alle kanten.

{signature}


Acties:
  • 0 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Laatst online: 19:26
En lees daarna meteen even bij over SQL injection.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Nog een idee naast de chmod van de directory : safe_mode. Misschien staat deze aan met strakke file instellingen op de server van de klant en uit bij jou.

Acties:
  • 0 Henk 'm!

  • iMars
  • Registratie: Augustus 2001
  • Laatst online: 01:38

iMars

Full time prutser

Geen foutmeldingen in logbestanden?

Ik sluit me aan bij de mening van de C' s (Cartman! en Confusion ;) )
Upload directory wel goede chmod gegeven?
Dan ga ik denk ik met cartman!: het zal wel een rechtenprobleem zijn: PHP mag op de klantserver gewoon niet schrijven in de directory waar je het plaatje probeert te bewaren. Daarom vroeg ik: test je tegen dezelfde server?

Koop hier mijn P1 reader :)


Acties:
  • 0 Henk 'm!

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 11-09 09:49
@lucard D

Wat ik bedoelde met die get variabele heb ik niet zelf getest bij het uploaden, maar mijn volgend script werkt allessinds wel zoals verwacht, vanaf de server

PHP:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
ob_start(); //just in case we would need an output buffer
error_reporting(0); // SUPPRESS ALL ERRORS (protect output)
$camurl="http://87.211.24.181/image.jpg";   //Adress of webcam-image  MJPEG/ JPEG
if ( isset( $_GET['c'] ) ) $camurl = $_GET['camurl']; //cam URL, view another ipcam
$update = 10;                               //Time in miliseconds before capturing new image
$log = 'webcam.txt';                        //Logfile (keep time of last update)
$image = 'webcam.jpg';                      //Image to redistribute from server ( faster & less bandwidth on webcam )
$now = time();                              //Current TIME
$b = 'b';// if windows
$b = '';// if NOT windows
//*****************************************************************************************************
if ( file_exists( $log ) && file_exists( $image ) ) // CREATE &&/|| OPEN FILES
    {
    $fplog = fopen ( $log , "r+" );
    $lastupdate = fgets ( $fplog , '100%');
    rewind( $fplog );
    }
else
    {
    $fplog = fopen ( $log , "w" );
    $lastupdate = 0;
    }
if ( abs ( $now - $lastupdate ) >= abs( $update )  )  // UPDATE IMAGE ON SERVER, UPDATE LOG
    {
    $imagesrc = grapimage( $camurl );
    $fpimage = fopen( $image , "w$b" );
    fputs( $fpimage, $imagesrc);
    fclose( $fpimage );
    fputs( $fplog, $now);
    }
fclose ( $fplog );
if ( !isset( $_GET['v'] ) )
{
header("Content-type: image/jpeg");
include('webcam.jpg');
}
function grapimage( $camurl , $errurl = 'err.jpg'  )
    {
    $handle = fopen( $camurl ,"r$b");
    if ( !$handle )
        $handle = fopen( $errurl ,"r$b");

    $frame = "";
    do  {
        $data = fread($handle, 512); // (512 - 8192)
        if (strlen($data) == 0)
            {
            break;
            }
        $frame .= $data;
        }
    while(true);

    fclose( $handle );
        $boundary="\n--";
        $start = strpos( $frame ,'ÿ');//Begin of normal JPG (for mjpg conversion)
        $end   = strpos( $frame ,$boundary,$start)-1;
        $frame = substr( "$frame",$start,$end - $start);
    return $frame;
    }
ob_flush();
?>
<?php if ( isset( $_GET['v'] ) ){ //view cam ?>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>webcam</title>
<script type="text/javascript">
function reload(img)
    {
    try {
        imgsrc = img.src;
        imgsrc = imgsrc.split('?');
        imgsrc = imgsrc[0] + '?' + Date.parse( new Date() );
        img.onload = 'javascript:void(0)';
        //tempimg = new Image
        //tempimg.onload=new Function(" img.src = imgsrc ; setTimeout( 'reload(' + img + ')' , 500 ); ")
        //tempimg.src= imgsrc
        img.src = imgsrc;
        //setTimeout( 'reload(' + img + ')' , 500 );
        }
    catch(err)
        {}
    }
</script>
</head>
<body>
<h1>ipCam</h1>
<img src="webcam.php" onload="reload(this)">
</body>
</html>
<?php } ?>

http://www.softfocus.be/


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
edit: nm verkeerde topic.... verdomde tabs :P

[ Voor 84% gewijzigd door Cartman! op 20-07-2007 21:37 ]


Acties:
  • 0 Henk 'm!

  • Chesta
  • Registratie: November 2004
  • Laatst online: 27-08 06:55
PHP:
1
2
3
4
<?
$file = explode( "." , $_FILES['image']['name'] );
$extension = $file[1]; 
?>


Dit werkt natuurlijk niet als je meerdere punten in een bestandsnaam hebt

End of Transmission


Acties:
  • 0 Henk 'm!

Verwijderd

Damn, erg basic dit hoor...

Zet error_reporting sowieso op E_ALL zodat PHP alles meldt wat fout gaat.

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op donderdag 19 juli 2007 @ 13:54:
PHP:
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
if($_POST["submitImage"])
{
  if(isset($_FILES['image'])) 
  {
    $file = explode( "." , $_FILES['image']['name'] );
    $extension = $file[1]; 
     
    if($extension != "jpg" && $extension != "jpeg")
    {
      $imageError = "Aleen .jpg afbeeldingen worden toegestaan!";
    }
    
    if(!$imageError)
    {
      mysql_query("INSERT INTO productImages (productID, extension) VALUES ('" . $_GET["id"] . "','$extension')");
      $imageID = mysql_insert_id();
      $imageName = $imageID . "." . $extension;
      
      move_uploaded_file($_FILES['image']['tmp_name'], "$uploadPath" . $imageName);
        
      createImage($uploadPath, $imageID, $extension, 120, "_small");
      createImage($uploadPath, $imageID, $extension, 285, "_med");
    
      header("location: ".RP."producten/?action=edit&id=" . $_GET["id"] . "");
    }
  }
}


Iemand enig idee waar het fout zou kunnen gaan?
Waarom heb je_$uploadPath_ tussen quotes? Dat is niet nodig, nu met dubbele quotes niet erg maar met enkele gaat het al fout.
Geef eens output aan de hand van is_uploaded_file dan weet je in ieder geval of het uploaden goed gaat.
Wat doet createImage precies? Want misschien gaat het daar wel fout.
Een beetje zelf debuggen kan geen kwaad, als wij geen foutmelding hebben en niet weten tot welke regel het goed gaat kunnen wij niets anders dan blind tips roepen waar je waarschijnlijk weinig aan hebt. :)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 12-08 21:08
Verwijderd schreef op donderdag 19 juli 2007 @ 13:54:
Ik heb even snel een testcase script geschreven

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if($_POST["submit"])
{
  move_uploaded_file($_FILES['image']['tmp_name'], "img/" . $_FILES['image']['name']);
  echo "<p><b>Succesvol upgeload?</b></p>";
}

$handle=opendir('img/');
while (false!==($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
        echo "- $file</br>";
    }
}
closedir($handle);


Dit script werkt wel gewoon bij de klant. Het script hieronder wil op een of andere niet werken bij de klant.

PHP:
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
if($_POST["submitImage"])
{
  if(isset($_FILES['image'])) 
  {
    $file = explode( "." , $_FILES['image']['name'] );
    $extension = $file[1]; 
     
    if($extension != "jpg" && $extension != "jpeg")
    {
      $imageError = "Aleen .jpg afbeeldingen worden toegestaan!";
    }
    
    if(!$imageError)
    {
      mysql_query("INSERT INTO productImages (productID, extension) VALUES ('" . $_GET["id"] . "','$extension')");
      $imageID = mysql_insert_id();
      $imageName = $imageID . "." . $extension;
      
      move_uploaded_file($_FILES['image']['tmp_name'], "$uploadPath" . $imageName);
        
      createImage($uploadPath, $imageID, $extension, 120, "_small");
      createImage($uploadPath, $imageID, $extension, 285, "_med");
    
      header("location: ".RP."producten/?action=edit&id=" . $_GET["id"] . "");
    }
  }
}


Iemand enig idee waar het fout zou kunnen gaan?
De controle in je 2e script vind ik prachtig :O
dus als ik nu foto.jpg.php probeer up te loaden zal het lukken, omdat je niet kijkt naar het laatste. Er kunnen in een bestandsnaam meerdere punten voorkomen.

Je kunt beter een array maken en daar de toegestane extensies instoppen.


$file = explode(".", $_FILES['image']['name']);
$extensie = count($file) - 1;

[ Voor 4% gewijzigd door Precision op 21-07-2007 14:59 ]

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
of gebruik simpelweg end($file); voor de extensie ;)
Maar zelfs dan is een extensie niet te vertrouwen, denk daar goed aan.

Verder werd er eerder al genoemd dat jij check op 'jpg' en 'jpeg' maar dat het net zo goed 'JPG' kan zijn bij iemand. Gebruik daarvoor strtolower(); bijv.

Ook eerder genoemd : check de schrijfrechten (chmod), error_reporting (E_ALL) en safe_mode eens.

Beetje meer inzet mag best hoor, kom op.
Pagina: 1