[PHP] file upload werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey allemaal,

Ik gebruik een php-script op een cms om afbeeldingen te uploaden (in de browser dus).

Hieronder staat het script:
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
<?
$pad = "/var/www/html/img/";
$filen = $filename;
if ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'POST')
{
    if (!ereg("((.gif|.jpg)$)", $_FILES['file']['name'], $extensie))
    {
        echo ("Error 101");
        exit;
    }
    if (!@move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'], $pad.$filen))
    { 
        die ("Error 102"); 
    } 
chmod($pad.$filen, 0777);

    $insert = "INSERT INTO images (`img`) 
    VALUES ('$filen')";
    mysql_query($insert);

die ("Done.<br><br>url: http://www.trsr.nl/img/$filen<br><br>image:<center>[img]\"http://www.trsr.nl/img/$filen\"></center>");
}
?[/img] 

<table width="400" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
<form enctype="multipart/form-data" method="post" action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>"> 
<tr>
    <td width="200">Selecteer bestand:</td>
    <td width="200"><input type="file" name="file"></td>
</tr>
<tr>
    <td width="200" height="5"></td>
    <td width="200" height="5"></td>
</tr>
<tr>
    <td width="200">Geef naam (incl. extensie!):</td>
    <td width="200"><input type="text" name="filename"></td>
</tr>
</table>
<br>
<input type="hidden" name = "command" value="images_add">
<input type="submit" value="upload">
</form>


Het script staat momenteel op een server van Dutchwebhosting, waar het script niet werkt. "Error 102" doet zich hier voor. Ik denk dat de fout daarom zit in:
code:
1
    if (!@move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'], $pad.$filen))

Het script heeft ook op een andere webserver gestaan, waar het wel werkte. Ik vind het daarom erg vreemd.

Weten jullie wat ik fout doe? Of wat het probleem zou kunnen zijn? Of misschien is er ook een andere oplossing? Wie-o-wie kan me helpen..?

Alvast bedankt!
De Soldaat.

Edit: Iets te enthousiaste topictitel gepakt, sorry ;)

[ Voor 23% gewijzigd door Verwijderd op 22-12-2004 10:41 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Haal die @ eens weg, dan krijg je waarschijnlijk de daadwerkelijke foutmelding te zien. Dat helpt je waarschijnlijk een stuk meer.

En ik heb de topictitel wat "ontschreeuwt" ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 11:23

RM-rf

1 2 3 4 5 7 6 8 9

code:
1
$filen = $filename;

als register_globals aanstaat werkt dat, als het uitstaat (wat de meeste serieuze hosters uit veiligheidsoverwegingen zullen doen), moet je
code:
1
$filen = $_POST["filename"];
gebruiken

verder is het aan te raden om:
code:
1
if ( $_FILES['file']['type'] == "image/gif" ||  $_FILES['file']['type'] == "image/jpeg" )
te gebruiken, ipv een regexp-check

[ Voor 28% gewijzigd door RM-rf op 22-12-2004 11:09 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

@RM-rf.. De meegestuurde type hangt af van je browser. IE bijvoorbeeld geeft "image/pjpeg" oid ipv "image/jpeg"

Een check op image/ oid is dus zo gek nog niet ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Creepy schreef op woensdag 22 december 2004 @ 11:04:
Haal die @ eens weg, dan krijg je waarschijnlijk de daadwerkelijke foutmelding te zien. Dat helpt je waarschijnlijk een stuk meer.
Klopt! Door de échte foutmelding te zien heb ik het opgelost, bedankt!!