mboost-dp1

Problem med upload af billeder


Gå til bund
Gravatar #1 - kristofferj
10. nov. 2003 19:13
Jeg har et nyhedssystem med en admindel og med mulighed for upload af et billede tilhørende nyheden.
Mit problem er at jeg gerne vil have php-filerne til nyhedssystemet til at ligge i en mappe for sig selv.
Php koden uploader billederne til denne distination: $_SERVER["DOCUMENT_ROOT"]
Jeg kunne selvfølgelig bare flytte nyhedssystemet til denne mappe (httpdocs), men det bliver uoverskueligt hvis jeg ikker har undermapper til de forskellige dele af mit websted.
Det jeg efterspørger er altså hvad jeg kan erstatte $_SERVER["DOCUMENT_ROOT"] med, for selv at definere en undermappe som billederne skal flyttes til.
Gravatar #2 - Cyrack
11. nov. 2003 13:31
Lyder underligt... normalt smider php da alle uploaded filer i et lukket dir, hvorfra man selv kan kopiere filerne til deres endelige position? (naturligvis så længe man bruger <input type="file">)
Gravatar #3 - kristofferj
11. nov. 2003 15:20
Mit problem er at andre brugere skal kunne oprette nyheder, og de kan ikke flytte billederne rundt.
Her er noget mere af koden:

session_start();
if (isset($_SESSION['aid'])) {
include("config.php");
if($_POST['upload']){
if ($_POST['pic'] == 1) {
$files = $_FILES['upfil']['name'];
$dist = $_SERVER["DOCUMENT_ROOT"] . "/";
move_uploaded_file($_FILES['upfil']['tmp_name'], $dist . $files);
}
elseif ($_POST['pic'] == 2) {
$files = "opdatering.gif";
} else {
$files = "nopic.gif";
}
mysql_query("INSERT INTO news (title, text, name, file) values ('$_POST[title]', '$_POST[text]', '$_POST[name]', '$files')");
header("Location: index.php");
}

På forhånd tak for hjælpen.
Gravatar #4 - Cyrack
13. nov. 2003 14:15
Hvis det bare er destinationen for billedet der skal ændres er det
$dist = $_SERVER["DOCUMENT_ROOT"] . "/";
du skal kigge på... og så lade dit nyhedsscript pege på den mappe ved billederne
fx
$dist = $_SERVER["DOCUMENT_ROOT"] . "/billeder/";
men jeg er ikke sikker på at det er det du mener... :-|
(desuden synes jeg det er et meget usikkert system du bruger, alle og enhver kunne smide en php fil op og derefter eksekvere via serveren. Hvis du har en del databaseplads vil jeg foreslå dig at putte billederne i den, så kan du også lettere styre hvilket billede der hører til hvilken nyhed (og undgå at billederne bliver overskrevet))
Gravatar #5 - kristofferj
13. nov. 2003 14:55
Nu virker det, som det skal, mange tak for hjælpen.

Mht. sikkerheden vil jeg meget gerne høre hvis du eller andre har forslag til et bedre nyhedssystem. Det skal dog helst kunne sættes op af folk der ikke er super hardcore til php og mysql. Jeg har kigget flere steder: www.thomaslunde.dk, www.script.dk, osv., men enten er der problemer med opsætningen eller også er de dårligere end det jeg bruger nu.

Jeg tænkte på om ikke sikkerhedsproblemet kunne løses ved at man tjeckede om det rent faktisk var billedfiler inden man godtog uploaden. Jeg kunne fint nøjes med .gif, .jpg og .jpeg billeder. Jeg har set det i andre koder, men jeg ved ikke hvordan jeg skal implementere det i mit nuværende nyhedssystem.
Gravatar #6 - Cyrack
13. nov. 2003 16:44
Først og fremmest kan du kigge på de sidste fire tegn på filnavnet, hvis det ikke er fx '.jpg', '.gif' eller '.png' skal filen ikke accepteres, fx:
$fileExt = strtolower(substr($files, -4));

if ($fileExt == '.jpg' ||
$fileExt == '.png' ||
$fileExt == '.gif')
{
// Din kopiering her
}
else
{
Echo 'Skrid';
}
Gravatar #7 - kristofferj
14. nov. 2003 00:05
Tak for hjælpen.
Jeg kom også lige i tanke om at admindelen med uploaden er password-beskyttet, og jeg opretter brugerne, så sikkerhedsproblemet er umiddelbart ikke så stort.
Det kunne dog stadig være fint med kontrol af filtypen.
Jeg kunne også tænk mig at lave max. størrelse på billederne. Det kan vel ikke være så svært;-)
Gravatar #8 - Cyrack
14. nov. 2003 07:03
Ang. max størrelse så er der en metode indbygget i PHP, prøv at kigge på afsnittet om upload i reference manualen... det er faktisk ganske godt skrevet... :-)
Gravatar #9 - kristofferj
16. nov. 2003 22:58
Reference manualen???
Gravatar #10 - Cyrack
17. nov. 2003 07:47
Hmm... det kalder de den vist ikke officielt, men i hvert fald, alle funktioner osv. er forklaret på www.php.net/docs.php du kan hente dokumentationen fra http://www.php.net/download-docs.php
Det er et opslagsværk hvor du kan se hvordan alt i php virker
Gravatar #11 - kristofferj
23. nov. 2003 16:36
cool, tak for det.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login