[php] Upload script fouten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hallo ik heb een uplaod scripje maar er zit een fout in. hij vult zn variabele niet :S

Form
PHP:
1
2
3
4
5
6
7
<form action=Upload.php method=post enctype=\"multipart/form-data\"> 
         Klik op Bladeren/Browse om uw foto te selecteren.<br> 
         Let er op dat uw foto van het type <b>GIF</b> of <b>JPG</b> is en niet groter dan <b>50 kB</b>.<br><br> 
         <input type=file name=txtFoto> 
         <br><br><br> 
        <input type=submit value=Upload> 
</form> 


Upload.php
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
<? 
  if($txtFoto != "") 
  { 
    // Filename + extensie van geuploade bestand 
    $filename  = $HTTP_POST_FILES [$txtFoto]['name'];   // deze variabelen 
    $size = $HTTP_POST_FILES [$txtFoto]['size'];     // worden niet 
    $extensie = substr($filename, -3);           // gevult!!!   Wye???? 

    // Check of extensie voldoet aan eis (in dit geval .jpg) 
    if (strtoupper($extensie) != "JPG" && strtoupper($extensie) != "GIF") 
    { 
      echo "U kan enkel JPG- en GIF-bestanden uploaden."; 
    } 
    else 
    { 
      // Check file size 
      if ($size > 51200) 
          print("Uw foto mag niet groter zijn dan 50 Kb"); 
        else 
        { 
      // Upload path 
      $destination = "/var/www/html/images "; 
      $length =  strlen($filename); 
      $name = "pic"; 
     // $name = substr($filename, 0, $length - 4);   
      $i = 0; 
      $tempname = $name; 

      // Check of txtFoto al bestaat, zo ja, filename 'verhogen' 
      while (file_exists($destination . $tempname . $i . ".".$extensie)) 
      { 
        $i = $i + 1; 
      } 

      $name = $name . $i; 

      move_uploaded_file($txtFoto, $destination . $name . ".".$extensie); 
      echo "Foto ".$name.".".$extensie." uploaded succesfully!"; 
    } 
  } 
} 
?> 

waarom niet?
alvast bedankt!
gr T |:( :? 8)7

[ Voor 11% gewijzigd door Verwijderd op 20-12-2002 20:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zie regel 5,6 en 7 van de upload.php btw!!

gr T

Acties:
  • 0 Henk 'm!

Verwijderd

$txtFoto is waarschijnlijk niets.... probeer eens iets als 'txtFoto'

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$txtFoto if gewoon gevuld dit is

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 20 december 2002 @ 20:32:
$txtFoto is gewoon gevuld met het pad van mn afbeelding

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

mja, maar tijnbraun geeft wel de oplossing... $HTTP_POST_FILES[$txtFoto] is wat anders dan $HTTP_POST_FILES['txtFoto'] ...

Btw, check voor de volgende keer Welkom in P&W -> Quickstart (update 2/10/2002) voor je weer zo'n summiere uitleg geeft.
En "kicken" wordt niet gewaardeerd :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
heb ik al

Acties:
  • 0 Henk 'm!

Verwijderd

Haal aan het begin eerst een $txtFoto op:
PHP:
1
2
3
4
5
6
$txtFoto=$_POST['txtFoto'];
if($txtFoto!=null){
doe je ding
}else{
// Laat form hier zien, is ook nog een optie ;)
}

en maak eens van destination dit:
PHP:
1
$destination="./var/www/html/images/";

FF verder:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Filename + extensie van geuploade bestand
$filename=$HTTP_POST_FILES['txtFoto']['name']; // zo moeten...
$size=$HTTP_POST_FILES['txtFoto']['size']; // ...deze twee.
$extensie=substr($filename, -3); // voor deze zou ik iets anders doen:
// extensie ophalen, jpg of gif:
$type=$HTTP_POST_FILES['txtFoto']['type'];
switch($type){
    case 'image/jpeg':
        $extensie = ".jpg";
        break;
    case 'image/pjpeg':
        $extensie = ".jpg";
        break;
    case 'image/gif':
        $extensie = ".gif";
        break;
    default:
        // Geen jpg of gif
        break;
}

Nu nog wat mierenneuken:
Ik zie dat je overal bij $dit = "dat"; etc. spaties zet tussen alles, dat is niet nodig...het staat misschien mooier maar das ook alles ;)
PHP:
1
2
3
$i = $i + 1; 
// Kan simpeler:
$i++;
Groeten onder je post hoeft ook niet ;)
Staat allemaal in de Faq:
# Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken. Als je perse zoiets wilt kun je daar je signature voor gebruiken (zie latere uitleg).
Conclusie: het script herschreven tot een pagina
upload.php:
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
<? 
$submit=$_POST['submit'];
if($submit!=null)
{
    $txtFoto=$HTTP_POST_FILES['txtFoto']['tmp_name']; 
    $filename=$HTTP_POST_FILES['txtFoto']['name']; 
    $size=$HTTP_POST_FILES['txtFoto']['size']; 
    $type=$HTTP_POST_FILES['txtFoto']['type'];
    switch($type)
    {
        case 'image/jpeg':
            $extensie=".jpg";
            break;
        case 'image/pjpeg':
            $extensie=".jpg";
            break;
        case 'image/gif':
            $extensie=".gif";
            break;
        default:
            echo "Geen jpg of gif plaatje!";
            exit;
            break;
    }
    if($size>51200)
    {
        echo "Uw foto mag niet groter zijn dan 50 Kb";
    }
    else
    {
        $destination="./var/www/html/images/"; 
        // $length=strlen($filename);
        $name="pic"; 
        // $name = substr($filename, 0, $length - 4);   
        $i=0; 
        $tempname=$name;
        while (file_exists($destination.$tempname.$i.$extensie)) 
        { 
            $i++; 
        } 
        $name=$name.$i; 
        move_uploaded_file($txtFoto, $destination.$name.$extensie); 
        echo "Foto ".$name.$extensie." uploaded succesfully!"; 
    }
}
else
{
?> 
<form action="upload.php" method="post" enctype="multipart/form-data">
Klik op Bladeren/Browse om uw foto te selecteren.
<br> 
Let er op dat uw foto van het type
<b>GIF</b> of <b>JPG</b> is en niet groter dan <b>50 kB</b>.
<br><br> 
<input type="file" name="txtFoto"> 
<br><br><br> 
<input type="submit" name="submit" value="Upload!"> 
</form> 
<?
}
?>


/me is trots:
-De layout niet verneukt (@ 1024*768)
-Een werkend upload script (getest @ mn server: php 4.2.3)
-Een edit-percentage van 255 :+

[ Voor 255% gewijzigd door Verwijderd op 21-12-2002 14:13 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier


Je doet ook echt moeite om geholpen te worden he?

Als je het zelf niet op wilt proberen te lossen kan je het wmb iig wel vergeten wat verdere hulp betreft. En ben je er wel mee bezig, laat dat dan duidelijker zien zodat men niet zo hoeft te gissen naar wat je zou kunnen willen...

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

upload files staan in $_FILES as of 4.1.0, en je enctype moet wel goed gespeld staan, anders kan je files uploaden wat je wilt, maar snapt PHP 't niet.

Kortom, die \ na multipart/form-data weghalen in de enctype van je form.+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1