Discussion:
Problem med file upload
(for gammel til at besvare)
Kurt G
2015-05-25 10:57:58 UTC
Permalink
Det er sikkert noget med, at jeg ikke har specificeret stien korrekt.
Jeg har prøvet meget, men det vil ikke lykkes.

Jeg forsøger at uploade nogle filer til et bibliotek, der ligger sådan:
www.minside.dk/B_arbejde/Dagsordener

Det ønskede filnavn til den gemte fil er i $filnavn

Koden let omskrevet:
$filnavn = "www.minside.dk/B_arbejde/Dagsordener/".$filnavn;

if( $_FILES['FIL']['name'] != "" )
{
copy($_FILES['FIL']['name'], $filnavn ) or
die( "<br>Could not copy file '$filnavn'!");
}
else
{
die("No file specified!");
}

Det lykkes ikke, jeg får fejlmeldingen:
Warning: copy(Stikord2015.txt): failed to open stream: No such file or
directory in
/customers/3/a/5/minside.dk/httpd.www/B_arbejde/UploadDagsorden.php on
line 79

Hvad gør jeg galt?
--
Mvh Kurt G
scootergrisen
2015-05-25 12:36:23 UTC
Permalink
http://netkoder.dk/netkoder/kode_uploadfiler.php
Kurt G
2015-05-25 15:33:39 UTC
Permalink
Post by scootergrisen
http://netkoder.dk/netkoder/kode_uploadfiler.php
Tak, Scootergris, det er en meget anvendelig site, du der har lavet (for
jeg går ud fra, at det er dit)!
--
Mvh Kurt G
scootergrisen
2015-05-25 17:03:43 UTC
Permalink
Post by Kurt G
Tak, Scootergris, det er en meget anvendelig site, du der har lavet (for
jeg går ud fra, at det er dit)!
Yeps.

Også er der selvfølgelig PHP manualen.
Kan anbefale og hente CHM version så har du den på din computer hele
tiden og kan hurtig slå ting op : http://php.net/download-docs.php
Kurt G
2015-05-26 08:03:44 UTC
Permalink
Post by scootergrisen
http://netkoder.dk/netkoder/kode_uploadfiler.php
Hej igen.
Jeg har nu stadig problemer med den upload!
Jeg bruger eksemplet 'HTML og PHP i én fil' tilpasset mine forhold.
Det kører fint, men jeg kan ikke finde den uploadede fil nogen steder!

Linie 13 og 14 er:
$uploadmappe = 'Filer/'; // mappen hvor filerne skal uploades
$uploadedefil = $uploadmappe . '/' .
basename($_FILES['filsomskaluploades']['name']);

(dette giver to '//' i stien, skal der være det?)
Der er ingen fil i 'Filer'!

Jeg har også prøvet at specificere stien fuldtud i linie13:
$uploadmappe = $_SERVER['DOCUMENT_ROOT'].'/TestU/Filer';
Ingen fejlmeldinger, men heller ingen fil uploaded!!

Ændrer jeg linie 14 til:
$uploadedefil = basename($_FILES['FDF_Fil']['name']);
kan jeg finde den uploade fil i samme dir som programfilen. Det kan
selvfølgelig bruges, men er ikke det jeg ønsker.

Hvordan får jeg den uploadede fil anbragt i mit dir 'TestU/Filer'?
--
Mvh Kurt G
Thomas
2015-05-26 09:51:43 UTC
Permalink
Post by Kurt G
Post by scootergrisen
http://netkoder.dk/netkoder/kode_uploadfiler.php
Hej igen.
Hvordan får jeg den uploadede fil anbragt i mit dir 'TestU/Filer'?
Hej,
Lav en fil med følgende indhold.

<?php
phpinfo();
?>

søg efter DOCUMENT_ROOT og læs mere
http://php.net/manual/en/function.phpinfo.php
scootergrisen
2015-05-26 13:50:36 UTC
Permalink
Post by Kurt G
$uploadmappe = 'Filer/'; // mappen hvor filerne skal uploades
$uploadedefil = $uploadmappe . '/' .
basename($_FILES['filsomskaluploades']['name']);
(dette giver to '//' i stien, skal der være det?)
Der er ingen fil i 'Filer'!
Der skal ikke være / i slutningen af $uploadmappe så det retter jeg.
Post by Kurt G
$uploadmappe = $_SERVER['DOCUMENT_ROOT'].'/TestU/Filer';
Ingen fejlmeldinger, men heller ingen fil uploaded!!
$uploadedefil = basename($_FILES['FDF_Fil']['name']);
kan jeg finde den uploade fil i samme dir som programfilen. Det kan
selvfølgelig bruges, men er ikke det jeg ønsker.
Hvordan får jeg den uploadede fil anbragt i mit dir 'TestU/Filer'?
Det du skriver skulle gerne virke:
$uploadmappe = $_SERVER['DOCUMENT_ROOT'] . '/TestU/Filer';

Så skal du have oprettet "/TestU/Filer" i roden af dit webhotel.

Du kan slå fejlbeskeder til øverst i din kode med, se også
http://netkoder.dk/netkoder/kode_error.php :

ini_set("display_errors", "On"); // fejl som en del af outputtet
ini_set("display_startup_errors", "On"); // fejl som sker mens PHP starter
ini_set("error_reporting", -1); // -1 viser alle slags fejlbeskeder

Så kan det være du få besked om at der ikke er skrive adgang til mappen
eller hvad ved jeg.
Læg også mærke til at der er forskel på små og store bogstaver på Linux.
Kurt G
2015-05-26 18:59:46 UTC
Permalink
Den 26-05-2015 kl. 15:50 skrev scootergrisen:
KLIPPET
Post by scootergrisen
$uploadmappe = $_SERVER['DOCUMENT_ROOT'] . '/TestU/Filer';
Så skal du have oprettet "/TestU/Filer" i roden af dit webhotel.
Du kan slå fejlbeskeder til øverst i din kode med, se også
ini_set("display_errors", "On"); // fejl som en del af outputtet
ini_set("display_startup_errors", "On"); // fejl som sker mens PHP starter
ini_set("error_reporting", -1); // -1 viser alle slags fejlbeskeder
Så kan det være du få besked om at der ikke er skrive adgang til mappen
eller hvad ved jeg.
Læg også mærke til at der er forskel på små og store bogstaver på Linux.
Det virker nu, jeg har flyttet til et andet domæne.
Men den virkelige fejl har nu nok været, at jeg ikke huskede at trykke
på 'refresh'-knappen på TotalCmd. Det skal man, den refresher ikke selv
om man skifter dir på serveren.

Men med indførelsen af de tre ini_set får jeg nu en fejlmelding, som jeg
ikke har haft før.

Filen er på: http://www.hsra.dk/TestU/uploader.php.

Notice: Undefined index: uploader.php in
/customers/4/c/e/hsra.dk/httpd.www/TestU/uploader.php on line 10

linie 10 ser sådan ud:
echo '<form action="' . $_SERVER['uploader.php'] . '" method="post"
enctype="multipart/form-data">' . "\r\n";

Men det virker alligevel.

Tak for hjælpen og alle tip!
--
Mvh Kurt G
scootergrisen
2015-05-26 19:15:53 UTC
Permalink
Post by Kurt G
Filen er på: http://www.hsra.dk/TestU/uploader.php.
Notice: Undefined index: uploader.php in
/customers/4/c/e/hsra.dk/httpd.www/TestU/uploader.php on line 10
echo '<form action="' . $_SERVER['uploader.php'] . '" method="post"
enctype="multipart/form-data">' . "\r\n";
Der står $_SERVER['SCRIPT_NAME'] i min kode så prøv med den så sender
den til sig selv lige meget hvad filnavnet med koden hedder.

Hvis du lægger upload formularen frit tilgængeligt på din hjemmeside så
væk opmærksom på at folk/botter forsøger at uploade filer med kode så de
kan få adgang til din hjemmeside.
Kurt G
2015-05-26 21:19:05 UTC
Permalink
Post by scootergrisen
Post by Kurt G
Filen er på: http://www.hsra.dk/TestU/uploader.php.
Notice: Undefined index: uploader.php in
/customers/4/c/e/hsra.dk/httpd.www/TestU/uploader.php on line 10
echo '<form action="' . $_SERVER['uploader.php'] . '" method="post"
enctype="multipart/form-data">' . "\r\n";
Der står $_SERVER['SCRIPT_NAME'] i min kode så prøv med den så sender
den til sig selv lige meget hvad filnavnet med koden hedder.
Hvis du lægger upload formularen frit tilgængeligt på din hjemmeside så
væk opmærksom på at folk/botter forsøger at uploade filer med kode så de
kan få adgang til din hjemmeside.
Tak for tip'et.

Jeg regner med at begrænse filtyperne til pdf-filer, de er vel ikke farlige?
--
Mvh Kurt G
scootergrisen
2015-05-26 22:31:10 UTC
Permalink
Post by Kurt G
Jeg regner med at begrænse filtyperne til pdf-filer, de er vel ikke farlige?
Der står noget om det i bunden af siden.

Du kunne lave noget login hvis det kun er nogle personer der må uploade.
Leif Neland
2015-05-27 05:13:14 UTC
Permalink
Post by Kurt G
Post by scootergrisen
Hvis du lægger upload formularen frit tilgængeligt på din hjemmeside så
væk opmærksom på at folk/botter forsøger at uploade filer med kode så de
kan få adgang til din hjemmeside.
Tak for tip'et.
Jeg regner med at begrænse filtyperne til pdf-filer, de er vel ikke farlige?
Jeg har fundet dette, der skulle sørge for at der ikke kan uploades
filer, der derefter bliver udført.


Options -ExecCGI
php_flag engine off
SetHandler none
SetHandler default-handler

Kilde:
http://kagerato.net/articles/software/security/apache-public-directory.html

PS: Dette burde ligge i dk.edb.internet.webdesign.serverside, ikke
clientside.
--
https://www.paradiss.dk
Ting til konen eller kæresten.
Eller begge.
Loading...