Avatar billede sungdk Nybegynder
20. maj 2004 - 02:42 Der er 4 kommentarer og
2 løsninger

Problemer med "empty"

Hej!

Nogle som kan se en/flere fejl i dette stykke:

<? if (isset($_POST[opret])) {

if (empty($_FILES[userfile])) {
$ip = $_SERVER[REMOTE_ADDR];
$date = date("d/m - Y", time());
$time = date("H:i");

echo "<h3>Din annonce er oprettet...</h3>";

include "../conn.php";

mysql_query("INSERT INTO annoncemarked (type, dato, tid, navn, email, tlf, mobil, maerke, model, aargang, km, pris, info, ip) VALUES ('$_POST[type]', '$date', '$time', '$_POST[navn]', '$_POST[email]', '$_POST[tlf]', '$_POST[mobil]', '$_POST[maerke]', '$_POST[model]', '$_POST[aargang]', '$_POST[km]', '$_POST[pris]', '$_POST[info]', '$ip')");

mysql_close($conn);
echo "<META HTTP-EQUIV='Refresh' CONTENT='3;URL=../'>";
} else {
$ip = $_SERVER[REMOTE_ADDR];
$date = date("d/m - Y", time());
$time = date("H:i");

$dir = "./billeder/";
$userfile = $_FILES[userfile][tmp_name];
$userfile_name = $_FILES[userfile][name];

include "../conn.php";

mysql_query("INSERT INTO annoncemarked (type, dato, tid, navn, email, tlf, mobil, maerke, model, aargang, km, pris, info, billede, ip) VALUES ('$_POST[type]', '$date', '$time', '$_POST[navn]', '$_POST[email]', '$_POST[tlf]', '$_POST[mobil]', '$_POST[maerke]', '$_POST[model]', '$_POST[aargang]', '$_POST[km]', '$_POST[pris]', '$_POST[info]', '$userfile_name', '$ip')");

copy($userfile,$dir.$userfile_name);

echo "<h3>$userfile_name er blev uploadet og annoncen oprettet...</h3>";
echo "<META HTTP-EQUIV='Refresh' CONTENT='3;URL=../'>";

mysql_close($conn);
} }
else { //her kommer så min form } ?>

Problemet ligger ved: if (empty($_FILES[userfile])) {
For selvom jeg ikke udfylder noget i feltet "userfile", så kan jeg se at den prøver at uploade "ikke noget" alligevel :(

På forhånd tak
Avatar billede grunken Nybegynder
20. maj 2004 - 04:31 #1
som det ser ud nu prøver du netop udføre hvis den er tom :o)

prøv lige at ændre det til :o)

if (!empty($_FILES[userfile])) {
Avatar billede detox Nybegynder
20. maj 2004 - 10:04 #2
Prøv at bruge is_uploaded_file() og move_uploaded_file() istedet for empty() og copy(). Og så husk apostroffer. En sidste ting du med fordel kan ændre er din opbevaring af dato/tid i tabellen. Det er betydeligt mere flexibelt, hvis du bruger felttypen: DATETIME og så indsætter: NOW(). Så formaterer du blot dit udtræk med DATE_FORMAT(), når du hiver det ud fra databasen.

<? if (isset($_POST['opret'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $date = date("d/m - Y", time());
    $time = date("H:i");
    include "../conn.php";
    if (!is_uploaded_file($_FILES['userfile'])) {
        echo "<h3>Din annonce er oprettet...</h3>";
        mysql_query("INSERT INTO annoncemarked (type, dato, tid, navn, email, tlf, mobil, maerke, model, aargang, km, pris, info, ip) VALUES ('$_POST[type]', '$date', '$time', '$_POST[navn]', '$_POST[email]', '$_POST[tlf]', '$_POST[mobil]', '$_POST[maerke]', '$_POST[model]', '$_POST[aargang]', '$_POST[km]', '$_POST[pris]', '$_POST[info]', '$ip')");
    } else {
        $dir = "./billeder/";
        $userfile = $_FILES['userfile']['tmp_name'];
        $userfile_name = $_FILES['userfile']['name'];
        mysql_query("INSERT INTO annoncemarked (type, dato, tid, navn, email, tlf, mobil, maerke, model, aargang, km, pris, info, billede, ip) VALUES ('$_POST[type]', '$date', '$time', '$_POST[navn]', '$_POST[email]', '$_POST[tlf]', '$_POST[mobil]', '$_POST[maerke]', '$_POST[model]', '$_POST[aargang]', '$_POST[km]', '$_POST[pris]', '$_POST[info]', '$userfile_name', '$ip')");
        move_uploaded_file($userfile,$dir.$userfile_name);
        echo "<h3>$userfile_name er blev uploadet og annoncen oprettet...</h3>";
    }
    mysql_close($conn);
    echo "<META HTTP-EQUIV='Refresh' CONTENT='3;URL=../'>";
} else {
    //her kommer så min form
} ?>
Avatar billede sungdk Nybegynder
20. maj 2004 - 11:14 #3
Virker stadigvæk ikke...

Den kan ikke kende forskel på, om userfile er udfyldt eller ikke. Den bliver ved med at tro, at den ER udfyldt :(
Avatar billede sukos Juniormester
20. maj 2004 - 11:25 #4
if (empty($_FILES[userfile])) {

skal være

if (empty($_FILES["userfile"]["name"])) {

eller bedre, (synes jeg)

if (trim($_FILES["userfile"]["name"]) == "") {
Avatar billede sungdk Nybegynder
20. maj 2004 - 12:04 #5
Du for vild :D

Tak endnu engang....

Synes bare det er underligt. For i et andet stykke kode bruger jeg ikke den linje. Og der virker skidtet

Kan jeg få et svar? :)
Avatar billede sukos Juniormester
20. maj 2004 - 12:26 #6
johh, kan jeg godt.
Men synes nu også du skal følge detox's råd om måden at håndtere filupload.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester