Gå til innhold

Problemer med file upload script


Anbefalte innlegg

Skrevet

mysql_query('INSERT INTO uploads(description, filename, filesize, filetype) VALUES('.$filedescription.', '.$filesavelocation.'/'.$filename.', '.$filesize.', '.$filetype.');');

Bytt ut den linja med

mysql_query("INSERT INTO uploads(description, filename, filesize, filetype) VALUES('$filedescription', '{$filesavelocation}/{$filename}', '$filesize', '$filetype')") or die( mysql_error() );

Videoannonse
Annonse
Skrevet
mysql_query('INSERT INTO uploads(description, filename, filesize, filetype) VALUES('.$filedescription.', '.$filesavelocation.'/'.$filename.', '.$filesize.', '.$filetype.');');

Bytt ut den linja med

mysql_query("INSERT INTO uploads(description, filename, filesize, filetype) VALUES('$filedescription', '{$filesavelocation}/{$filename}', '$filesize', '$filetype')") or die( mysql_error() );

 

Jeg får da følgende feilmelding:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Dette er en test'', 'files/Test.exe', '7676', 'exe')' at line 1

Skrevet (endret)

kjør denne koden og skriv resultatet på forumet så vi ser hvordan tabellen ser ut

 

<?php

mysql_connect();
mysql_select_db();

$res = mysql_query('describe uploads;');
while ($row = mysql_fetch_assoc($res) {
$arr[] = $row;
}

print_r($arr);

?>

 

btw: ut i fra den feilmeldingen så har du dobbel quota enden på "Dette er en test"

 

 

'Dette er en test'', 'files/Test.exe', '7676

Endret av grimjoey
Skrevet (endret)
kjør denne koden og skriv resultatet på forumet så vi ser hvordan tabellen ser ut

 

<?php

mysql_connect();
mysql_select_db();

$res = mysql_query('describe uploads;');
while ($row = mysql_fetch_assoc($res) {
$arr[] = $row;
}

print_r($arr);

?>

 

btw: ut i fra den feilmeldingen så har du dobbel quota enden på "Dette er en test"

 

 

'Dette er en test'', 'files/Test.exe', '7676

 

La inn db settings og prøvde å kjøre men får følgende feilmelding:

 

Parse error: syntax error, unexpected '{' in /home/.dewalt/*sensurt/*sensurert /upload/db.php on line 7

 

Edit:

 

Jeg kan ikke skjønne hvorfor det blir dobbel quote på slutten :S Har sjekka coden men finner ikke feilen

Endret av Lapstuen
Skrevet

<?php

mysql_connect();
mysql_select_db();

$res = mysql_query('describe uploads;');
while ($row = mysql_fetch_assoc($res)) {
$arr[] = $row;
}

print_r($arr);

?>

;)

Manglet en ")" etter "$res)"

Skrevet
<?php

mysql_connect();
mysql_select_db();

$res = mysql_query('describe uploads;');
while ($row = mysql_fetch_assoc($res)) {
$arr[] = $row;
}

print_r($arr);

?>

;)

Manglet en ")" etter "$res)"

 

Takker! nå fikk jeg en output

 

Array ( [0] => Array ( [Field] => id [Type] => int(4) [Null] => NO [Key] => PRI [Default] => [Extra] => auto_increment ) [1] => Array ( [Field] => description [Type] => char(50) [Null] => YES [Key] => [Default] => [Extra] => ) [2] => Array ( [Field] => filename [Type] => char(50) [Null] => YES [Key] => [Default] => [Extra] => ) [3] => Array ( [Field] => filesize [Type] => char(50) [Null] => YES [Key] => [Default] => [Extra] => ) [4] => Array ( [Field] => filetype [Type] => char(50) [Null] => YES [Key] => [Default] => [Extra] => ) )

Skrevet

Problemet er ' rundt description. Jeg gjorde en del endringer og testet litt så nå skal koden ovenfor (den første jeg postet) virke. Husk å lag en mappe som filene skal ligge i først. Den må ha samme navn som $filesavelocation og ligge relativt til banen upload.php eksekveres fra.

 

Dersom det da ikke virker kan du prøve å gjøre en "chmod a+wt <mappenavn>" og prøve igjen.

Skrevet
Problemet er ' rundt description. Jeg gjorde en del endringer og testet litt så nå skal koden ovenfor (den første jeg postet) virke. Husk å lag en mappe som filene skal ligge i først. Den må ha samme navn som $filesavelocation og ligge relativt til banen upload.php eksekveres fra.

 

Dersom det da ikke virker kan du prøve å gjøre en "chmod a+wt <mappenavn>" og prøve igjen.

 

Tusen takk for all hjelp!

 

Jeg har nå begynt å lære meg mer om PHP og har allerede laget en ny versjon som kalkulerer md5 checksum og adder denne til databasen. Denne vises senere når man skal laste ned filen.

Skrevet

Hei alle sammen!

 

Scriptet som grimjoey lagde funker utmerket! men nå kommer jo neste del av jobben, finne en måte å laste filene ned på...

 

Jeg tenker meg noe sånt som dette: når man laster opp filen så får man en link man kan kopiere for å laste ned filen, eller poste linken på et forum. link kommer til å se sånn ut: "www.minside.com/upload/files/download.php?id=1" id'en henviser til iden i mysql databasen og ut derifra blir filens fullstendige bane lagt til en link som man trykker på igjennom et bilde. Et slags download ikon altså, som linker til filen.

 

Jeg har nå prøvd å skrive starten av scriptet som gir den fullstendige url'en men får det ikke til å fungere som jeg ønsker, jeg lurer derfor på om noen kan ta en titt på det.

 

<?php
mysql_connect("database","bruker","passord");
mysql_select_db("upload");
$query = "SELECT filename FROM uploads where id=$id";
$result = MYSQL_QUERY($query);
Header( "Content-type: $type");
$link = 'www.minside.com/upload/files/';
echo $link,$result;
?>

 

Bare si ifra hvis jeg forklarte dårlig så skal jeg prøve igjen.

Skrevet (endret)

Der er det mange ting som ikke vil kunne fungere.

 

For det første så er $id åpen for sql-injection. Fiks:

$query = 'SELECT filename FROM uploads WHERE id = '.(int)$id.';';

 

For det andre skal man ikke sende egen header for å vise en link som du ønsker. Det er kun hvis scriptet skal vise et rått bilde for eksempel. $type er dessuten en udefinert variabel.

 

Og til slutt:

 

echo $link, $result;

 

$result er en ressurs id som peker mot en form for data hentet fra en database. For å benytte denne dataen i echo må man bruke en av mysql funksjonene for det. for eksempel mysql_result(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_object() eller liknende.

 

Og jeg tror du får en error med det commaet i echo også.

 

Edit: Dersom register_globals er off er $id også en udefinert variabel.

Endret av grimjoey

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...