[php]upload form werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Ik lees er waarschijnlijk overheen, maar ik heb een uploadscript dat maar niet wil werken. Volgens mij komt er helemaal niets van het formulier binnen.

Upload script:
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
if($_SERVER['REQUEST_METHOD'] == "POST"){
  if(isset($_POST["cancel"])){
    echo 'Maandbericht upload geannuleerd. <a href="index.php?mi=' . $mi . '">Ga terug</a>';
    exit;
  }elseif(!isset($_POST["userfile"])){
    echo 'Het bestand bestaat niet. <a href="index.php?mi=' . $mi . '&subpg=upload">Ga terug</a>';
    exit;
  }elseif(filesize($_POST["userfile"]) > 1024){
    echo 'Het bestand is te groot. <a href="index.php?mi=' . $mi . '&subpg=upload">Ga terug</a>';
    exit;   
  }else{
    $result = mysql_query("SELECT MAX(id)+1 AS nr FROM maandbericht");  
    $obj = mysql_fetch_object($result);
    $ext = $_FILES['userfile']['name']; 
    $ext = explode(".",$ext); 
    if($ext[1] != 'doc'){
      echo "Het bestand is geen DOC bestand. Doc is het standaard
bestandsformaat voor Word documenten. 
Het maandbericht dient een DOC bestand te zijn.";
      exit;
    }
    $ext = '.'.$ext[1];
    $new_id = $obj->nr;
    $new_id = 'i'.$new_id.$ext;
    $datum = date('m-Y', time());
    $conn_id = ftp_connect($ftp_server); 
        
    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); 
   
    // check connection
    if ((!$conn_id) || (!$login_result)) { 
      //verbinding error
      echo "Er is iets misgegaan met de FTP verbinding, probeer het a.u.b. opnieuw.";
      exit; 
    }
            
    // ga naar goeie map
    ftp_chdir ( $conn_id, 'maandberichten');
   
    // upload the file
    $upload = ftp_put($conn_id, $new_id, $userfile, FTP_BINARY); 
    
    // close ftp connection
    ftp_close($conn_id); 
    
    // check upload status
    if (!$upload) { 
      //upload mislukt
      echo "Er is iets misgegaan met de upload, probeer het a.u.b. opnieuw.";
      exit; 
    }else{
      echo "Het maandbericht is geupload!";
    }


Dit is het formulier:
PHP:
1
2
3
4
5
6
7
<p>Klik op bladeren om het maandbericht te zoeken op uw pc. 
Vervolgens klikt u op Ok om het maandbericht te uploaden.</p>
<form enctype="multipart/form-data" action="index.php?mi=<?=$mi?>&subpg=upload" method="post">
<input name="userfile" type="file"><br>
<input type="submit" name="submit" id="submit" value="Ok" width="100" class="button" style="width: 50;">
<input type="submit" name="cancel" id="cancel" value="Annuleren" class="button">
</form>


Ik krijg echter altijd als ik op 'Ok' druk, de melding dat het bestand niet bestaat, ook als ik wel iets heb geselecteerd. Als ik die controle eruit haal, krijg ik de volgende fouten:

Notice: Undefined index: userfile in c:\serverroot\sites\viersprong2\cms\modules\maandbericht_maintaince.php on line 45

Notice: Undefined index: userfile in c:\serverroot\sites\viersprong2\cms\modules\maandbericht_maintaince.php on line 51

Notice: Undefined offset: 1 in c:\serverroot\sites\viersprong2\cms\modules\maandbericht_maintaince.php on line 53


Verder kan ik ook geen $vars uit config.php openen, hij ziet deze simpelweg niet. Config.php wordt geinclude in de index, en deze zouden dus toegankelijk moeten zien in m'n upload script, maar ze zijn het niet.

Ik ben het spoor echt even bijster 8)7

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


Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Kijk even in de manual bij http://www.php.net/manual/en/features.file-upload.php
Mocht je niet zien wat ik bedoel, doe dan even CTRL+F op $_FILES

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


Acties:
  • 0 Henk 'm!

Verwijderd

Ik snap niet dat je met ftp gaat werken. Je kunt toch gewoon het gewenste bestand kopieren naar de juiste map?

Offtopic: het is maintenance :+

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
drm schreef op dinsdag 16 november 2004 @ 17:11:
Kijk even in de manual bij http://www.php.net/manual/en/features.file-upload.php
Mocht je niet zien wat ik bedoel, doe dan even CTRL+F op $_FILES
Thanx, stom van me dat ik daar niet eerst ben gaan kijken 8)7
In ieder geval werkt het controle deel van de code nu goed. Alleen lijkt er nog steeds niets te gebeuren met de ftp, ik denk dat het te maken heeft het feit dat hij de gegevens niet uit de config file haalt.
Verwijderd schreef op dinsdag 16 november 2004 @ 17:19:
Ik snap niet dat je met ftp gaat werken. Je kunt toch gewoon het gewenste bestand kopieren naar de juiste map?
Het is bedoeld voor een CMS waarin mensen maandberichten kunnen uploaden van hun huis naar de site. Alleen nu draait het op m'n testserver. Of je moet iets bedoelen dat ik even niet volg ;)
Offtopic: het is maintenance :+
|:( Ik wist dat het mis zat.. Damn, en ik ben nog wel zo trots op m'n engels O-)

//edit

Goed, ben nu even aan het stoeien, en dit is eruit gekomen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$result = mysql_query("SELECT MAX(id)+1 AS nr FROM maandbericht");  
$obj = mysql_fetch_object($result);
$ext = $_FILES['userfile']['name']; 
$ext = explode(".",$ext); 
$ext = '.'.$ext[1];
echo "ext: " . $ext;
$new_id = $obj->nr;
$new_id = $new_id.$ext;
echo " Newid: " . $new_id;
$datum = date('m-Y', time());
                    
// check upload status
if(!move_uploaded_file ( $_FILES['userfile']['tmp_name'], 'http://localhost/viersprong2/maandberichten/' . $new_id)) { 
    //upload mislukt
    echo "Er is iets misgegaan met de upload, probeer het a.u.b. opnieuw.";
    exit; 
}else{
    $new = "INSERT INTO `maandbericht` (`datum`, `locatie`) VALUES ('$datum', '$new_id')";
    $in = mysql_query($new) or db_error(mysql_error(), $new);
    //succes
}               
echo "Het maandbericht is geupload!";

(er staat wat debug code in..)
maar ik krijg de volgende errors:


Warning: move_uploaded_file(http://localhost/viersprong2/maandberichten/3.doc): failed to open stream: HTTP wrapper does not support writeable connections. in c:\serverroot\sites\viersprong2\cms\modules\maandbericht_maintenance.php on line 67

Warning: move_uploaded_file(): Unable to move 'C:\Serverroot\temp\php67.tmp' to 'http://localhost/viersprong2/maandberichten/3.doc' in c:\serverroot\sites\viersprong2\cms\modules\maandbericht_maintenance.php on line 67


Ik heb ook al het ip van m'n server geprobeer in plaats van localhost, maar dit mocht niet baten.

[ Voor 42% gewijzigd door Roa op 16-11-2004 18:23 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

Je probeert het te verplaatsen via het http-protocol, daar klaagt hij ook al over. Gebruik dus gewoon een relatief pad, en dan moet het wel werken.