/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
upload af billeder vha. php4 og apache
Fra : Thomas Skyt


Dato : 25-11-01 00:54

Hej,

hvad skal jeg helt præcist holde øje med, når jeg vil lave en form til
indtastning af nogle infos om et billede og kæde dette sammen med et lille
php-script, der samler dataerne og stopper dem i en sql-db, mens billedet
flyttes over i et passende bibliotek?

Jeg har prøvet dette:

<form method="post" action="/" enctype="multipart/form-data">
[massevis af felter]
<input type="file" name="the_file" ...>
</form>

I php-filen forsøger jeg så med dette at flytte filen:

$filnavn = $path . "/" . $the_file_name;
copy($the_file, $filnavn);

Desværre bliver filen ikke flyttet, og det ser, hvis jeg i scriptet spytter
alle $the_file_... variablerne ud, ud som det også kun modtager det lokale
navn på filen, altså $the_file - ingenting bagefter, heller ikke _name.

Er der nogen, der har en idé eller måske en stump kode, der blot opfylder
disse kriterier?

- modtager form-data i binær / multipart, hovedsagligt billeder
- kan flytte filen til et vilkårligt sted
- kan spytte indholdet af filen ud i en variabel, til eks. at kunne
indsættes i en database

/Thomas

 
 
-=\(Per Nielsen\)=- (25-11-2001)
Kommentar
Fra : -=\(Per Nielsen\)=-


Dato : 25-11-01 01:04

"Thomas Skyt" <thskyt@pc.dk> wrote in message
news:9tpbuu$3ip$1@sunsite.dk...
> Hej,
>
> hvad skal jeg helt præcist holde øje med, når jeg vil lave en form til
> indtastning af nogle infos om et billede og kæde dette sammen med et lille
> php-script, der samler dataerne og stopper dem i en sql-db, mens billedet
> flyttes over i et passende bibliotek?
>
> Jeg har prøvet dette:
>
> <form method="post" action="/" enctype="multipart/form-data">
> [massevis af felter]
> <input type="file" name="the_file" ...>
> </form>
>
> I php-filen forsøger jeg så med dette at flytte filen:
>
> $filnavn = $path . "/" . $the_file_name;
> copy($the_file, $filnavn);
>
> Desværre bliver filen ikke flyttet, og det ser, hvis jeg i scriptet
spytter
> alle $the_file_... variablerne ud, ud som det også kun modtager det lokale
> navn på filen, altså $the_file - ingenting bagefter, heller ikke _name.
>
> Er der nogen, der har en idé eller måske en stump kode, der blot opfylder
> disse kriterier?
>
> - modtager form-data i binær / multipart, hovedsagligt billeder
> - kan flytte filen til et vilkårligt sted
> - kan spytte indholdet af filen ud i en variabel, til eks. at kunne
> indsættes i en database
>

ved ikke om jeg har forsået rigtigt, men prøv dette

-upload.php-
<font face="Verdana, Arial, Helvetica, sans-serif">Wallpapers</font></h3>
<h3>
<form method="post" action="ok.php" enctype="multipart/form-data">
<input type=file name=file size=30>
<input type="submit" value="Upload" name="submit">
</form>
-upload.php-

-ok.php-
<?
$updir = "wallpapers/";
//Vælger hvor filen skal lægges, husk at chmod mappen til 777

if ($file_name == "") {
die("Du skal vælge en fil, ellers går det ikke");
}
//hvis der mangler en fil skriver den det og siden er færdig med at loade

copy($file, "$updir/$file_name")
or die("Filen kan ikke uploades prøv igen");
//ellers vil den uploade filen til serveren i den mappe vi nu har sagt den
skal ligge i

?>
-ok.php-

Giv lige tegn om det var noget som det, der kunne bruges


> /Thomas



Thomas Skyt (25-11-2001)
Kommentar
Fra : Thomas Skyt


Dato : 25-11-01 02:45

-=\(Per Nielsen\)=- wrote:

[...]

>
> Giv lige tegn om det var noget som det, der kunne bruges
>

Selvfølgeligt - jeg ved dog ikke om det ville have fungeret - jeg fik mit
eget til at virke. Problemet var at jeg havde lavet en lille if-statement
for at undersøge om der overhovedet blev sendt _noget_som_helst_ - og der
havde jeg stående

if ($the_file != "") {
.... al koden til upload behandling ...
}

men min variabel med filen hed i mellemtiden "upload", altså $upload

Og så er det vel logisk at det giver lidt bøvl, ik'?

Hvis du er nysgerrig, så kig evt. på http://lfh.sofagang.dk - det er den,
jeg arbejder på og laver admin-interfacet til, hvor jeg bla. havde brug for
upload.

/Thomas

Lars Erhardsen (25-11-2001)
Kommentar
Fra : Lars Erhardsen


Dato : 25-11-01 15:09

> $updir = "wallpapers/";
> //Vælger hvor filen skal lægges, husk at chmod mappen til 777

Det der med chmod 777 - kan det ikke undgåes? Jeg synes, det er lidt ufedt
når man er flere om den samme server (læs: webhotel) eller tager jeg fejl?

/Lars



Morten Winther (25-11-2001)
Kommentar
Fra : Morten Winther


Dato : 25-11-01 15:21


"Lars Erhardsen" <lars@erhardsen.dk> wrote in message
news:9tqu2e$lsg$1@sunsite.dk...
> > $updir = "wallpapers/";
> > //Vælger hvor filen skal lægges, husk at chmod mappen til 777
>
> Det der med chmod 777 - kan det ikke undgåes? Jeg synes, det er lidt ufedt
> når man er flere om den samme server (læs: webhotel) eller tager jeg fejl?

Nogle webhoteller tilbyder at køre apache som din egen bruger og så kan du
godt.

/ morten



Niels Andersen (25-11-2001)
Kommentar
Fra : Niels Andersen


Dato : 25-11-01 15:50

"Lars Erhardsen" <lars@erhardsen.dk> wrote in message
news:9tqu2e$lsg$1@sunsite.dk...
> Det der med chmod 777 - kan det ikke undgåes? Jeg synes, det er lidt
ufedt
> når man er flere om den samme server (læs: webhotel) eller tager jeg
fejl?

Husk at PHP-kode ikke udføres som dig, men som en fælles bruger, typisk
med navnet "nobody" eller "www".
Du kan ikke komme uden om at PHP skal have adgang. Dermed har alle de
andre også adgang, for de har også adgang til PHP.
Dermed kan du egentlig lige så godt give adgang til alle, som du kan
bøvle med kun at give adgang til dig selv og PHP.

Den problematik eksisterer ved ALLE script-sprog i den forbindelse. Jeg
mener vist nok, at safemode fjerner dette problem, men jeg er ikke
sikker.

--
Mvh.

Niels Andersen



-=\(Per Nielsen\)=- (25-11-2001)
Kommentar
Fra : -=\(Per Nielsen\)=-


Dato : 25-11-01 15:29

Må hvis det kun er dig der skal kunne upload kunne du jo bruge password
beskyttelse på selv siden, så folk ikke kan uploade

På selv siden kunne man lave <?php include("protech.php"); ?>

Og så skulle selv protech.php se sådanne ud:

<?php

$selfSecure = 1;
$shellUser = "user"; //Indtast brugernavnet
$shellPswd = "pass"; // Indtast password

$adminEmail = "no@email.dk"; // Din email adresse
$fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"];

$Version = "Webmaster - webmaster@email.dk"; // Webmasterens email adresse
if($selfSecure){
if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) {
Header('WWW-Authenticate: Basic realm="Kun for ADMIN!"');
Header('HTTP/1.0 401 Unauthorized');
echo "<html>
<head>
<title>Error - Access Denied</title>
</head>
<h1>Access denied</h1>
A warning message has been sent to the webmaster. Your IP address
has also been recorded
<hr>
<em>$Version</em>";
if(isset($PHP_AUTH_USER)){
$warnMsg ="
Somebody tried to access the script on:
http://".$HTTP_SERVER_VARS["HTTP_HOST"]."$PHP_SELF
using the wrong username or password:

Date: ".date("Y-m-d H:i:s")."
IP: ".$HTTP_SERVER_VARS["REMOTE_ADDR"]."
User Agent: ".$HTTP_SERVER_VARS["HTTP_USER_AGENT"]."
username used: $PHP_AUTH_USER
password used: $PHP_AUTH_PW

";
mail($adminEmail,"Unauthorized Access",$warnMsg,
"From: $fromEmail\nX-Mailer:$Version AutoWarn System");
}
exit;
}
}

if(!$oCols)$oCols=$termCols;
if(!$oRows)$oRows=$termRows;

?>

Det kunne man jo bruge, eller har jeg tolket dit inlæg forkert ??
"Lars Erhardsen" <lars@erhardsen.dk> wrote in message
news:9tqu2e$lsg$1@sunsite.dk...
> > $updir = "wallpapers/";
> > //Vælger hvor filen skal lægges, husk at chmod mappen til 777
>
> Det der med chmod 777 - kan det ikke undgåes? Jeg synes, det er lidt ufedt
> når man er flere om den samme server (læs: webhotel) eller tager jeg fejl?
>
> /Lars
>
>



Jonas Koch Bentzen (25-11-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 25-11-01 09:51

Thomas Skyt skrev:
>
> I php-filen forsøger jeg så med dette at flytte filen:
>
> $filnavn = $path . "/" . $the_file_name;
> copy($the_file, $filnavn);

Prøv med move_uploaded_file() - og brug is_uploaded_file() for at
teste, om brugeren har uploaded en fil.

--
Jonas Koch Bentzen

http://understroem.dk/

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408857
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste