mboost-dp1
Problem med upload af billeder
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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.
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.
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.
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.
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))
$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))
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.
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.
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';
}
$fileExt = strtolower(substr($files, -4));
if ($fileExt == '.jpg' ||
$fileExt == '.png' ||
$fileExt == '.gif')
{
// Din kopiering her
}
else
{
Echo 'Skrid';
}
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;-)
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;-)
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
Det er et opslagsværk hvor du kan se hvordan alt i php virker
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.