Avatar billede lesp Nybegynder
01. januar 2008 - 19:23 Der er 26 kommentarer og
1 løsning

Problem med script til indsættelse i databasen

Hej eksperter

Jeg får ingen meddelelse på skærmen med denne kode, men den indsætter heller ikke databasen.

<?
  include("connect.php");
    if (isset($_FILES['file']['name'])) {
        $filename = 'billeder/' . basename($_FILES['file']['name']);

        if (move_uploaded_file($_FILES['file']['tmp_name'], $filename)) {
            echo "File is valid, and was successfully uploaded.";
        } else {
            echo 'DEBUG: Fra: ' . $_FILES['file']['tmp_name'] . ' til ' . $filename . '<br>';
            echo "Possible file upload attack!";
        }   

        $sql = "INSERT INTO tre (hej, hejs, you, dig, billede, lol, nix, jo)
            VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')";
        $sql = sprintf($sql,
            mysql_real_escape_string($_POST['hej']),
            mysql_real_escape_string($_POST[hejs']),
            mysql_real_escape_string($_POST['you']),
            mysql_real_escape_string($_POST['dig']),
            mysql_real_escape_string($filename),
            mysql_real_escape_string($_POST['lol']),
            mysql_real_escape_string($_POST['nix']),
            mysql_real_escape_string($_POST['jo']),
            );

        $res = mysql_query($sql) or die(mysql_error());
        echo "Done<br>Klik <a href='nzoet.php?user=$user'>her</a> for at gå tilbage.";

}
?>
Avatar billede straszek Praktikant
01. januar 2008 - 19:30 #1
det skal i hvert fald ikke være noget , i den sidste del  mysql_real_escape_string($_POST['jo']),
Avatar billede dkfire Nybegynder
01. januar 2008 - 19:51 #2
Hvad med at lave en else til hvis ikke $_FILES['file'] er sat.

if (isset($_FILES['file']['name'])) {
....
...
} else {
echo "Ingen fil blevet uploaded. ";
}
Avatar billede lesp Nybegynder
01. januar 2008 - 20:52 #3
Her er hvad jeg får vist på skærmen:

Ingen fil blevet uploaded. DEBUG: Fra: til
Possible file upload attack!Done
Klik her for at gå tilbage.
Avatar billede lesp Nybegynder
01. januar 2008 - 20:56 #4
Efter jeg har ændret koden til dette:

if (isset($_FILES['file']['name'])) {
        $filename = 'billeder/' . basename($_FILES['file']['name']);
        } else {
echo "Ingen fil blevet uploaded. ";
Avatar billede lesp Nybegynder
01. januar 2008 - 21:06 #5
Jeg vel lige så godt tilføje, at alt bliver sat ind i databasen, på nær billedenavnet. Billedet bliver heller ikke flyttet til mappen "billeder" på serveren.
Avatar billede dkfire Nybegynder
01. januar 2008 - 21:06 #6
Jamen så er det jo fordi du ikke uploader nogen fil.
Hvordan ser din form ud ??
Avatar billede lesp Nybegynder
01. januar 2008 - 21:40 #7
Her er feltet for upload af billedet

<input type='file' name='file' id='searchsubmit'>
Avatar billede dkfire Nybegynder
01. januar 2008 - 22:39 #8
Det hjælper jo ikke meget.
Vis HELE din form.
Og så lige lidt html, et tag kan ikke have forskelligt name og id. name og id skal være det samme.
Avatar billede lesp Nybegynder
02. januar 2008 - 00:02 #9
Jeg bruger "id" til at give feltet en bestemt style fra min CSS-file

Her er hele min formular:

<form method='post' action='upload4.php'>
Smykkenavn: <center><input type='text' name='hej' id='searchinput'></center><br>
<center><textarea id='searchinput' cols='50' rows='10' name='hejs'>Smykkebeskrivelse</textarea></center><br>
Pris: <center><input type='text' name='you' id='searchinput'></center><br>
Varenr: <center><input type='text' name='dig' id='searchinput'></center><br>
Leveringstid: <center><input type='text' name='lol' id='searchinput'></center><br>
Billede: <center><input type='file' name='file' id='searchsubmit'></center><br>
<input type='hidden' name='kategori' value='$_GET[nix]'>
<input type='hidden' name='underkategori' value='$_GET[jo]'>

                        <center><input id='searchsubmit' type='submit' value='Videre' /></center>
Avatar billede jakobdo Ekspert
02. januar 2008 - 07:48 #10
Overvej evt. at tage et kig på denne simple upload kode.
Du har nemlig en fejl i din form:

http://www.eksperten.dk/artikler/1098
Læs "punktet" Vi skal bruge en form og du skulle finde dit svar.
Avatar billede lesp Nybegynder
02. januar 2008 - 11:08 #11
Jeg tilføjede 'enctype='multipart/form-data' til min form, men nu indsættes ingen rækker og jeg får en blank skærm.
Avatar billede dkfire Nybegynder
02. januar 2008 - 13:44 #12
Ser din kode stadig ud som øverst ?
Avatar billede lesp Nybegynder
02. januar 2008 - 13:54 #13
Ud over jeg gjorde som straszek sagde og slettede det sidste "," så gør den.
Avatar billede lesp Nybegynder
02. januar 2008 - 14:26 #14
Og min form ser også stadig væk sådan ud, ud over jeg har tilføjet 'enctype='multipart/form-data'
Avatar billede dkfire Nybegynder
02. januar 2008 - 16:58 #15
Prøv at lave en print_r($_FILES) og fortæl os hvad der kommer ud af det.
Avatar billede lesp Nybegynder
02. januar 2008 - 19:56 #16
Jeg får en helt blank skærm, og intet bliver indsat i databasen
Avatar billede lesp Nybegynder
02. januar 2008 - 19:56 #17
Her er min upload-fil:

<?
  include("connect.php");
    if (isset($_FILES['file']['name'])) {
        $filename = 'billeder/' . basename($_FILES['file']['name']);
        } else {
echo "Ingen fil blevet uploaded. ";


        if (move_uploaded_file($_FILES['file']['tmp_name'], $filename)) {
            echo "File is valid, and was successfully uploaded.";
        } else {
            echo 'DEBUG: Fra: ' . $_FILES['file']['tmp_name'] . ' til ' . $filename . '<br>';
            echo "Possible file upload attack!";
        }   

        $sql = "INSERT INTO tre (hej, hejs, you, dig, billede, lol, nix, jo)
            VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')";
        $sql = sprintf($sql,
            mysql_real_escape_string($_POST['hej']),
            mysql_real_escape_string($_POST[hejs']),
            mysql_real_escape_string($_POST['you']),
            mysql_real_escape_string($_POST['dig']),
            mysql_real_escape_string($filename),
            mysql_real_escape_string($_POST['lol']),
            mysql_real_escape_string($_POST['nix']),
            mysql_real_escape_string($_POST['jo']),
            );

        $res = mysql_query($sql) or die(mysql_error());
        echo "Done<br>Klik <a href='nzoet.php?user=$user'>her</a> for at gå tilbage.";

}
?>
Avatar billede lesp Nybegynder
02. januar 2008 - 19:59 #18
Og min formular:

<form  method='post' action='upload4.php' enctype='multipart/form-data'>
Smykkenavn: <center><input type='text' name='hej' id='searchinput'></center><br>
<center><textarea id='searchinput' cols='50' rows='10' name='hejs'>Smykkebeskrivelse</textarea></center><br>
Pris: <center><input type='text' name='you' id='searchinput'></center><br>
Varenr: <center><input type='text' name='dig' id='searchinput'></center><br>
Leveringstid: <center><input type='text' name='lol' id='searchinput'></center><br>
Billede: <center><input type='file' name='file' id='searchsubmit'></center><br>
<input type='hidden' name='nix' value='$_GET[kategori]'>
<input type='hidden' name='jo' value='$_GET[underkategori]'>

                        <center><input id='searchsubmit' type='submit' value='Videre' /></center>


</form>
Avatar billede dkfire Nybegynder
02. januar 2008 - 20:27 #19
Nej nej, prøv lige selv at gennemgå din kode og så se efter hvad du har skrevet. Det er da klart du ikke får noget ud på skærmen.
Tjek dine if-sætninger og find ud af hvad de gør.
Avatar billede lesp Nybegynder
03. januar 2008 - 14:20 #20
Yes. Jeg slettede den første if-sætning og nu virker det hele.
Avatar billede dkfire Nybegynder
03. januar 2008 - 14:43 #21
Hvis du slettede den første if-sætning, så virker din script også selvom der ikke er uploadet en fil.
Derved får du en masse fejlbeskeder.
Avatar billede lesp Nybegynder
03. januar 2008 - 17:21 #22
Jeg får ingen fejlbeskeder. Og jeg skal også kun bruge scriptet når der skal uploades et billede.
Avatar billede dkfire Nybegynder
03. januar 2008 - 17:54 #23
Men hvordan ser din kode ud nu ???
Avatar billede lesp Nybegynder
03. januar 2008 - 23:38 #24
Samme kode, jeg har bare fjernet:

if (isset($_FILES['file']['name'])) {}
Avatar billede dkfire Nybegynder
04. januar 2008 - 01:43 #25
Ja så tjekker din script jo ikke mere for om der er uploaded en fil. Så kan man jo fylde din database med tomme felter, eller fylde den med rigtig meget data hvis man har løst.
Men dit script giver heller ikke din bruger besked hvis der ikke er valgt en fil at uploade.
Husk på at scriptet så bare kører når din php fil bliver sendt.

Men det er jo helt op til dig. ;-)
Avatar billede lesp Nybegynder
17. februar 2008 - 20:42 #26
Dkfire. Du får pointene
Avatar billede dkfire Nybegynder
18. februar 2008 - 01:32 #27
Jamen så lægger jeg et svar :-)
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