[PHP]upload script upload niet//schrijft wel weg in database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
Ik ben bezig met een script aan het schrijven dat doormiddel van een formulier gegevens wegschrijft in mijn MySQL.
Ook zit er in dat formulier een optie om een bestandje te uploaden naar mijn webserver(Apache).
Hier gaat het dus fout , het formulier schrijft de gegevens wel weg in de database maar het plaatje word niet ge-upload naar mijn map op mijn webserver.
Ik ben er echt al heel de dag mee bezig en heb allerlei tutorials doorgelezen en steeds kom ik op hetzelfde script uit.

hieronder het uploadformulier
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
<?php //pagina: invoeren.php
//actie:  invoerdata.php
//doormiddel van dit formulier worden gegevens in de database gestopt
session_start();
if(!isset($_SESSION['username']))
{
header("Location: ../index.php");
}
echo "<p>welkom $_SESSION[username]</p>";
echo '<p>voer de gegevens in het formulier in en klik op <b>"OK".</p></b>';
echo '<p>velden met een * zijn verplicht in te vullen.';
?>
<form name="invoerformulier" method="post" action="invoerdata.php" ENCTYPE="multitype/form-data">
<TABLE CELLSPACING="2" CELLPADDING="2" BORDER="0">
<TR>
<TD>Biernaam:*</TD>
<TD><input type="text" name="biernaam"></TD>
</TR>
<TR>
<TD>biertype:*</TD>
<TD><input type="text" name="biertype"></TD>
</TR>
<TR>
<TD>brouwerij code:*</TD>
<TD><input type="text" name="code"></TD>
</TR>
<TR>
<TD>alcoholpercentage:*</TD>
<TD><input type="text" name="alcpercent"></TD>
</TR>
<TR>
<TD>klasse:</TD>
<TD><input type="text" name="klasse"></TD>
</TR>
<TR>
<TD>gisting:</TD>
<TD><input type="text" name="gisting"></TD>
</TR>
<TR>
<TD>kleur:</TD>
<TD><input type="text"name="kleur"></TD>
</TR>
<TR>
<TD>verpakking:</TD>
<TD><input type="text"name="verpakking"></TD>
</TR>
<TR>
<TD>prijs:</TD>
<TD><input type="text"name="prijs"></TD>
</tr>
<tr>
<td>Etiket:</td>
<td><input type="file" name="bestand"></td></tr>
</Table>
<input type="submit" name="submit" value="submit">
<input type="reset" name="reset" value="reset">
</form>


en met onderstaand script word een query uitgevoerd(die overigens wel succesvol word uitgevoerd) en daarna word het bestandje ge-upload(hier gaat het dus fout )
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
//de verplichte velden worden op invoer gecontroleerd
if(isset($_POST['submit']))
     {
     if(strlen($bier) < 1)
     {
     echo "Het veld Biernaam vereist een invoer";
     exit();
     }
     else
     {
     //SQL Query maken die alle gegevens in de database invoeren
     $query = "insert into tbl_bieren (naam , brouwerijcode, type, klasse, gisting, kleur, alcoholpercentage, verpakking, prijs) values('$bier' ,'$code' , '$type' , '$klasse' ,  '$gisting' , '$kleur' , '$alcpercent' ,'$verpakking' , '$prijs')";
     $result = mysql_query($query) or die("kan de gegevens niet in de database plaatsen");
     if(isset($result));
     {
     echo "query is succesvol uitgevoerd";
     }
    }
     //een etiket uploaden naar een map
     if(is_uploaded_file($bestand));
     {
     echo "er is een bestand ge-upload";
     $uploadmap = "upload/";
     $bestand_type = $HTTP_POST_FILES['bestand']['type'];
     $bestand_size = $HTTP_POST_FILES['bestand']['size'];
      move_uploaded_file($_FILES['bestand']['tmp_name'], $uploadmap);
     }
}

?>


volgens mij is dit script wel juist alleen ik krijg het bestand niet in mijn map "upload" . mijn vermoeden doet denken dat zodra er op submit word geklikt er niks meer geupload word.dat het bestand gewoon pleite is zeg maar

hopelijk kunnen jullie mij weer een beetje opweg helpen

[ Voor 21% gewijzigd door degroot op 03-06-2005 16:54 ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Hoe kom je aan $bestand op regel 20 van het tweede script?

Daarnaast is het niet zo netjes om $_FILES en $HTTP_POST_FILES door elkaar te gebruiken. Hou het maar op $_FILES.

Nog weer daarnaast zou ik tussendoor nog even checken of er echt wel een plaatje wordt geüpload (en dus geen evil script ;) ). Dat kan heel makkelijk met getimagesize().

[ Voor 4% gewijzigd door T-MOB op 03-06-2005 17:00 ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Doe ook eens een print_r($_FILES) in je ontvangende script. Verder inderdaad wat T-MOB zegt. :)

Ow, en lijn je code eens fatsoenlijk uit, dit is praktisch onleesbaar. :X

[ Voor 29% gewijzigd door NMe op 03-06-2005 17:02 ]

'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!

  • niwreG
  • Registratie: Augustus 2003
  • Laatst online: 17-10-2024

niwreG

^heeft dat geschreven->

ik had dat ook maar bij mij werkte copy ipv move_uploaded_file wel. en je bent vergeten een naam opte geven

PHP:
1
2
 move_uploaded_file($_FILES['bestand']['tmp_name'], $uploadmap); 
 move_uploaded_file($_FILES['bestand']['tmp_name'], $uploadmap .'/'.$_FILES['bestand']['tmp_name']);


zou mischien kunnen werken
en anders copy proberen

^^eventueele typfouten zijn als vermaak bedoeld


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

degroot schreef op vrijdag 03 juni 2005 @ 16:54:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
     //een etiket uploaden naar een map
     if(is_uploaded_file($bestand));
     {

     echo "er is een bestand ge-upload";
     $uploadmap = "upload/";
     $bestand_type = $HTTP_POST_FILES['bestand']['type'];
     $bestand_size = $HTTP_POST_FILES['bestand']['size'];
      move_uploaded_file($_FILES['bestand']['tmp_name'], $uploadmap);
     }
}
?>
1) Begin eens met errorafhandeling, en zet error_reporting(E_ALL) boveaan je script
2) Waar komt $bestand vandaan als variabele ? Indien je de variable uit je form bedoeld : dat gaat niet werken ivm register globals.

Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
igmar schreef op vrijdag 03 juni 2005 @ 17:02:
[...]


1) Begin eens met errorafhandeling, en zet error_reporting(E_ALL) boveaan je script
2) Waar komt $bestand vandaan als variabele ? Indien je de variable uit je form bedoeld : dat gaat niet werken ivm register globals.
1) dat staat aan maar ik gaf even het gedeelte van het script waar het om ging.
php geeft daarmee geen foutmelding.

2)dat komt uit het formulier waar het bestand geselecteerd word
dus:
PHP:
1
<td><input type="file" name="bestand"></td></tr>


en als ik het goed begrijp moet ik er eerst een register_global van maken en dan dit zeg maar?
PHP:
1
$bestand = $_POST['bestand'];

[ Voor 82% gewijzigd door degroot op 03-06-2005 17:12 ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

dit is mijn werkende upload script, inclusief wegschrijven in de db


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
$link = mysql_connect("localhost", "", ""); //connect to database server 
mysql_select_db("downloads", $link); //connect to the database 


$uploaddir = 'd:\\sites\\upload\\'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 

if(is_file($uploadfile))  //check of de file al bestaat, zo ja verwijder het 
 unlink($uploadfile);

if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
{ 
  $titel = trim($_POST['titel']);
  $file_type = strtolower(substr(strrchr($_FILES['userfile']['name'],"."),1)); //extensie pakken voor type
  $sql = "INSERT INTO files 
             SET file_type='".$file_type."', 
              file_title='".$titel."', 
              file_name='".$_FILES['userfile']['name']."', 
              file_size='".$_FILES['userfile']['size']."'"; 
     mysql_query($sql) or die(mysql_error()); 
} 
else 
{ 
   echo "Possible file upload attack!\n"; 
} 

/*
door de argv[0] kan je dus  upload.php?debug   opgeven
inplaats van  upload.php?actie=debug   bv.....
*/
if(isset($_SERVER['argv'][0]) && $_SERVER['argv'][0]=="debug")
{
 echo 'Debugging informatie:'; 
 print "<pre>"; 
 print_r($_FILES); 
 print "</pre>"; 
}



mijn formulier
code:
1
2
3
4
5
6
7
<form enctype="multipart/form-data" action="upload.php" method="POST">
   <!-- MAX_FILE_SIZE must precede the file input field -->
   <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
   <!-- Name of input element determines name in $_FILES array -->
   Send this file: <input name="userfile" type="file" />
   <input type="submit" value="Send File" />
</form>

[ Voor 61% gewijzigd door WPN op 03-06-2005 17:23 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

degroot schreef op vrijdag 03 juni 2005 @ 17:09:
en als ik het goed begrijp moet ik er eerst een register_global van maken en dan dit zeg maar?
PHP:
1
$bestand = $_POST['bestand'];
Nee... Je moet de $_FILES-array gebruiken... Lees onze FAQ eens door over het gebruik van superglobals...

'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!

  • lammert
  • Registratie: Maart 2004
  • Laatst online: 03-09 11:50
Uhm... heb t ff snel doorgelezen, maar ben nergens tegen gekomen dat je de rechten voor je uploaddirectory hebt ingesteld (CHMOD). Dat lijkt me wel essentieel om erbij te vermelden.

Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
Lammert schreef op vrijdag 03 juni 2005 @ 17:28:
Uhm... heb t ff snel doorgelezen, maar ben nergens tegen gekomen dat je de rechten voor je uploaddirectory hebt ingesteld (CHMOD). Dat lijkt me wel essentieel om erbij te vermelden.
Nee dat klopt
ik gebruikt Windows met XAMPP dus ik heb niks met chmod te maken.
natuurlijk wel met rechten. ik heb de complete map upload(waar bestanden in zouden moeten komen te staan) bij security voor de zekerheid even op full control staan. zodat dat in ieder geval goed zit
-NMe- schreef op vrijdag 03 juni 2005 @ 17:01:
Doe ook eens een print_r($_FILES) in je ontvangende script.
heb ik gedaan
dan krijg ik dus een lege array
code:
1
Array()

[ Voor 20% gewijzigd door degroot op 03-06-2005 17:35 ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
Ik heb mijn code nu zo aangepast dat het wat netter is.
tenminste dat hoop ik :P

het rare is dat als ik het upload gedeelte van het script in een aparte pagina opsla, en daar een formulier voor zet met 1 veld om te uploaden(dus geen velden om gegevens in te voeren in de database) het script dan wel werkt.
zelfde map ook->dus rechten zit wel goed.

mijn code is nu als volgt
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
<?php
//pagina: invoerdata.php
//dit script voert het SQL commando uit zodra alle minimale gegevens bekend zijn
error_reporting (e_all);
session_start();
if(!isset($_SESSION['username']))
{
header("Location: ../index.php");
}
include ("../connect.php");

//alle globale variabelen omzetten naar vaste variabelen
//zodat deze makkelijk in een query te verwerken zijn
$bier = $_POST['biernaam'];
$type = $_POST['biertype'];
$code = $_POST['code'];
$alcpercent = $_POST['alcpercentage'];
$klasse = $_POST['klasse'];
$gisting = $_POST['gisting'];
$kleur = $_POST['kleur'];
$verpakking = $_POST['verpakking'];
$prijs = $_POST['prijs'];

//de verplichte velden worden op invoer gecontroleerd
if(isset($_POST['submit']))
     {
     if(strlen($bier) < 1)
     {
     echo "Het veld Biernaam vereist een invoer"; 
     exit();
     }
     else
     {
     //SQL Query maken die alle gegevens in de database invoeren
     $query = "insert into tbl_bieren (naam , brouwerijcode, type, klasse, gisting, kleur, alcoholpercentage, verpakking, prijs) values('$bier' ,'$code' , '$type' , '$klasse' ,  '$gisting' , '$kleur' , '$alcpercent' ,'$verpakking' , '$prijs')"; 
     $result = mysql_query($query) or die("kan de gegevens niet in de database plaatsen");
     if(isset($result));
     {
     echo "query is succesvol uitgevoerd";
     }

     //een etiket uploaden naar een map
     $maxgrootte = 70; //grootte in kb's
     $uploadmap = "upload/"; 
    
    $newmaxgrootte = $maxgrootte*1024;
    
    if(is_uploaded_file($bestand))
 {
        $bestand_name = $HTTP_POST_FILES['bestand']['name']; //naam van het geuploade                     bestand
        $bestand_type = $HTTP_POST_FILES['bestand']['type']; //MIME-header van het geuploade bestand (bijvoorbeeld image/pjpeg)
        $bestand_size = $HTTP_POST_FILES['bestand']['size']; //grootte in bytes van het geuploade bestand
    
        if ($bestand_size > $newmaxgrootte){
            $tegroot = round($bestand_size/1024);
            echo "Het bestand is groter dan ".$maxgrootte."kb (namelijk ".$tegroot."kb), wat niet toegstaan is.";
            exit;
        }
        if (file_exists($uploadmap.$bestand_name)){
        echo "Het bestand ".$bestand_name." bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.";
            exit;
    }
        move_uploaded_file($bestand,$uploadmap.$bestand_name);
        $nwbestandgrootte = round($bestand_size/1024);
        echo "Bestand ".$bestand_name." van het type ".$bestand_type." en ".$nwbestandgrootte."KB is met succes ge-upload!";
    } 
    else { 
        echo "Er is een fout opgetreden: ".$_FILES['bestand']['error'];
        echo "<br>Waarschijnlijk is het bestand geen geupload bestand.";    }
    print_R($_FILES);
    }
}

?>

[ Voor 12% gewijzigd door degroot op 03-06-2005 20:02 ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je hebt nog steeds op regel 48 $bestand staan die je nergens declareert. Bovendien gebruik je ook nog steeds globals ($HTTP_POST_FILES) en superglobals ($_FILES) door elkaar.

'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!

  • degroot
  • Registratie: December 2003
  • Niet online
Hoe moet ik vertellen op deze manier dat $bestand het ge-uploaden bestand is?
Het gekke is dat exact dezelfde code wel werkt zonder de SQL code's, dus in een compleet nieuw formulier, ook zonder dat ik die $bestand declareer.

Ik heb inmiddels de $_FILES die er nog instond verandert door $HTTP_POST_FILES['']

[ Voor 21% gewijzigd door degroot op 03-06-2005 20:21 . Reden: toevoeging ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

degroot schreef op vrijdag 03 juni 2005 @ 20:13:
Hoe moet ik vertellen op deze manier dat $bestand het ge-uploaden bestand is?
Het gekke is dat exact dezelfde code wel werkt zonder de SQL code's, dus in een compleet nieuw formulier, ook zonder dat ik die $bestand declareer.

Ik heb inmiddels de $_FILES die er nog instond verandert door $HTTP_POST_FILES['']
$bestand is NIET het geuploade bestand, dat is $_HTTP_POST_FILES['bestand']['tmp_name'], $bestand is helemaal niets.

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

heb je naar mijn code (inclusief de form velden declaraties) gekeken??

daarbij komt dat je een max file size opgeeft? 70kb geloof ik
is het plaatje soms groter?

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Hier je code met commentaar.. Alles tussen /** en */ is toegevoegd. Succes!
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
//pagina: invoerdata.php
//dit script voert het SQL commando uit zodra alle minimale gegevens bekend zijn
error_reporting (e_all);
session_start();
if(!isset($_SESSION['username']))
{
header("Location: ../index.php");
}
include ("../connect.php");

//alle globale variabelen omzetten naar vaste variabelen
//zodat deze makkelijk in een query te verwerken zijn
$bier = $_POST['biernaam'];
$type = $_POST['biertype'];
$code = $_POST['code'];
$alcpercent = $_POST['alcpercentage'];
$klasse = $_POST['klasse'];
$gisting = $_POST['gisting'];
$kleur = $_POST['kleur'];
$verpakking = $_POST['verpakking'];
$prijs = $_POST['prijs'];

//de verplichte velden worden op invoer gecontroleerd
if(isset($_POST['submit'])) {
     if(strlen($bier) < 1) {
        echo "Het veld Biernaam vereist een invoer"; 
        exit();
     } else {
     //SQL Query maken die alle gegevens in de database invoeren

     /**
      * Voordat je gegevens invoert in de database zou je eigenlijk voor alle invoer moeten checken of het
      * klopt. Niet alleen de lengte, maar ook de inhoud. Bedenk je even wat er bijvoorbeeld kan gebeuren als
      * iemand een bier invoert dat 
      * "<script type='text/javascript' src='http://evil.com/moreEvil.js'></script>" 
      * heet... Automatisch vertrouwen op de zgn. magic quotes is ook niet aan te raden. Let dus op het
      * escapen van quotes!
      */
     $query = "INSERT INTO tbl_bieren (naam , brouwerijcode, type, klasse, gisting, kleur, alcoholpercentage, verpakking, prijs) VALUES ('$bier' ,'$code' , '$type' , '$klasse' ,  '$gisting' , '$kleur' , '$alcpercent' ,'$verpakking' , '$prijs')"; 
     $result = mysql_query($query) or die("kan de gegevens niet in de database plaatsen");

     /** 
      * isset() is hieronder een foute functie. $result is namelijk altijd gezet, in dit geval een boolean
      * (true/false) omdat je een insert query doet. De juiste code is dus:
      *
      * if ($result)
      *
      * Het is echter ontzettende bullshit om er op te checken omdat je hierboven al een "or die" hebt staan.
      * Op dit punt in de code is $result dus altijd al TRUE
      */
     if(isset($result)); /** deze ";" mag weg, dat levert slechts errors op... */
     {
        echo "query is succesvol uitgevoerd";
     }

     //een etiket uploaden naar een map
     $maxgrootte = 70; //grootte in kb's
     $uploadmap = "upload/"; 
    
      $newmaxgrootte = $maxgrootte*1024;
    
      /**
       * $bestand bestaat helemaal niet. Wat je bedoelt is waarschijnlijk $_FILES['bestand']['tmp_name']
       * Dit is trouwens ook de reden waarom het steeds niets deed, $bestand bestaat niet dus alle code
       * binnen deze if{} werd nooit uitgevoerd...
       */
      if(is_uploaded_file($bestand)) {

        /** 
         * $HTTP_POST_FILES is deprecated. Je moet $_FILES gebruiken sinds PHP4
         */
        $bestand_name = $_FILES['bestand']['name']; //naam van het geuploade bestand
        $bestand_type = $_FILES['bestand']['type']; //MIME-header van het geuploade bestand (bijvoorbeeld image/pjpeg)
        $bestand_size = $_FILES['bestand']['size']; //grootte in bytes van het geuploade bestand
    
        if ($bestand_size > $newmaxgrootte) {
            $tegroot = round($bestand_size/1024);
            echo "Het bestand is groter dan ".$maxgrootte."kb (namelijk ".$tegroot."kb), wat niet toegstaan is.";
            exit;
        }

        if (file_exists($uploadmap.$bestand_name)) {
            echo "Het bestand ".$bestand_name." bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.";
            exit;
        }
        
        /**
         * Voordat je het naar een webmap kopieert moet je even een check invoeren of het wel een plaatje
         * is wat wordt geupload. Daarmee voorkom je gerommel op je server. De simpele check volgt:
         */
        
        if (!getimagesize($_FILES['bestand']['tmp_name'])) {
            echo 'Je kunt alleen plaatjes uploaden...';
            exit;
        }

        /**
         * Move_uploaded_file kan foutgaan (disk vol bijvoorbeeld). Om errors te voorkomen voer je
         * move_uploaded file dus in een if-statement uit.
         */

        if (move_uploaded_file($bestand,$uploadmap.$bestand_name)) {
            $nwbestandgrootte = round($bestand_size/1024);
            echo "Bestand ".$bestand_name." van het type ".$bestand_type." en ".$nwbestandgrootte."KB is met succes ge-upload!";
        } else {
            echo 'Er is een fout opgetreden bij het wegschrijven van het bestand';
        }

    } else {
        
        echo "Er is een fout opgetreden: ".$_FILES['bestand']['error'];
        echo "<br>Waarschijnlijk is het bestand geen geupload bestand.";     }
    }
}

/**
 * Nog een algemene opmerking. De volgorde waarin je de zaken nu doet is niet echt ok. Als ik een verkeerd
 * bestand upload dan wordt er wel data in de database gezet, terwijl je een error genereert. Je kunt beter
 * ALLE invoer controleren voor je gegevens in de database opslaat...
 */
?>

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

degroot schreef op vrijdag 03 juni 2005 @ 20:13:
Hoe moet ik vertellen op deze manier dat $bestand het ge-uploaden bestand is?
Bovenaan zetten:
PHP:
1
$bestand = $_FILES['bestand'];
Het gekke is dat exact dezelfde code wel werkt zonder de SQL code's, dus in een compleet nieuw formulier, ook zonder dat ik die $bestand declareer.
Dat kan alleen als register_globals aan staat, wat ten eerste niet aan te raden is, en ten tweede iets is waar je nooit vanuit kan gaan. Een goeie beheerder zet register_globals uit, waardoor je script dan niet meer zou werken.
Ik heb inmiddels de $_FILES die er nog instond verandert door $HTTP_POST_FILES['']
Dan heb je het precies verkeerdom gedaan, $HTTP_POST_FILES is 'ouderwets', tegenwoordig wordt $_FILES gebruikt. Is meteen ook minder RSI-bevorderend. :P

'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.

Pagina: 1