Data wordt niet in database geschreven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Weij

Jeroen Weij

18/08/2019 22:32:55
Quote Anchor link
Heb een webpagina met een formulier waar een gebruiker een afbeelding en een URL aan een database kan toevoegen.
Het heeft gewerkt maar nu in eens niet meer (Misschien door PHP update??)
File word wel upgeload alleen informatie word niet Inn de Database geschreven.
Als ik de waardes die in de database moeten komen via echo op het scherm zet zijn ze er wel.
Gebruikersnaam etc worden eerder op de pagina via include_once toegevoegd.

Krijg ook geen fout in het scherm.

Dit is de PHP die het formulier afhandelt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
              if(isset($_POST['upload']))
            {
    $allowedExts = array("gif", "jpeg", "jpg", "png","GIF", "JPEG", "JPG", "PNG");
                $temp = explode(".", $_FILES["file"]["name"]);
                $extension = end($temp);
                
                if ((($_FILES["file"]["type"] == "image/gif")
                || (
$_FILES["file"]["type"] == "image/jpeg")
                || (
$_FILES["file"]["type"] == "image/jpg")
                || (
$_FILES["file"]["type"] == "image/pjpeg")
                || (
$_FILES["file"]["type"] == "image/x-png")
                || (
$_FILES["file"]["type"] == "image/png"))
                && (
$_FILES["file"]["size"] < 10000000000000000)
                &&
in_array($extension, $allowedExts)) {
                  if ($_FILES["file"]["error"] > 0) {
                    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
                  }
else {
                    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
                    echo "Type: " . $_FILES["file"]["type"] . "<br>";
                    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
                    if (file_exists("advertiserimage/" . $_FILES["file"]["name"])) {
                      echo $_FILES["file"]["name"] . " already exists. ";
                    }
else {
                      move_uploaded_file($_FILES["file"]["tmp_name"],
                      "advertiserimage/" . $_FILES["file"]["name"]);
                      echo "Stored in: " . "advertiserimage/" . $_FILES["file"]["name"];
                              $target = "url(advertiserimage/". $_FILES['file']['name'].")";
                    //$target = $target . basename( $_FILES['file']['name']);
                    
                        $URL = $_POST['txtUrlimage'];
                    $con = mysqli_connect($_CONFIG["Host"], $_CONFIG["Username"], $_CONFIG["Password"], $_CONFIG["Database"]);
                      $Insert =  mysqli_query($con,"INSERT INTO advertisor(customerid,createddate,imagepath,url,isactive) VALUES ('$ID',curdate(),'$target','$URL',0)")or die(mysqli_error()) ;
                    }

                    
            

                    //$Pic = $_FILES['file']['name'];
                    
                    }
                }

                
                else {
                    
                  echo "File size limit exceed";
                }
            }
        
                }

                ?>

Edit:
Ik heb even een duidelijkere topictitel aan je topic meegegeven die je probleem uitlegt.
Gewijzigd op 19/08/2019 18:33:43 door - Ariën -
 
PHP hulp

PHP hulp

28/03/2024 19:02:11
 
- Ariën  -
Beheerder

- Ariën -

18/08/2019 22:47:37
Quote Anchor link
Welke foutmelding krijg je?
En waar komt $ID vandaan?
 
Jeroen Weij

Jeroen Weij

18/08/2019 23:27:21
Quote Anchor link
- Ariën - op 18/08/2019 22:47:37:
Welke foutmelding krijg je?
En waar komt $ID vandaan?

User is ingelogd en $ID haal ik uit $ID=$_SESSION['uniqueid'];

Krijg geen fout melding en gekke is dat de afbeelding wel geupload word, alles gaat goed tot $Insert = mysqli_query($con,........
 
- Ariën  -
Beheerder

- Ariën -

18/08/2019 23:29:37
Quote Anchor link
Als de querie fout gaat, dan moet je wel een foutmelding krijgen.

Pas mysqli_error() eens aan naar:
mysqli_error($con)
 
Jeroen Weij

Jeroen Weij

18/08/2019 23:41:10
Quote Anchor link
- Ariën - op 18/08/2019 22:47:37:
Welke foutmelding krijg je?
En waar komt $ID vandaan?


Weet denk ik waar het fout gaat, krijg error: Field 'counter' doesn't have a default value.
Kijkeven en laat weten of het opgelost is. (Is een teller toegevoeg, zet de waarde voor dit veld even op 0)


Toevoeging op 18/08/2019 23:49:36:

Jeroen Weij op 18/08/2019 23:41:10:
- Ariën - op 18/08/2019 22:47:37:
Welke foutmelding krijg je?
En waar komt $ID vandaan?


Weet denk ik waar het fout gaat, krijg error: Field 'counter' doesn't have a default value.
Kijkeven en laat weten of het opgelost is. (Is een teller toegevoeg, zet de waarde voor dit veld even op 0)


Hallo Ariën, opgelost bedankt!
Counter toegevoegd en waarde op 0 gezet.
$Insert = mysqli_query($con,"INSERT INTO advertisor(customerid,createddate,imagepath,url,isactive,counter) VALUES ('$ID',curdate(),'$target','$URL',0,0)
 
- Ariën  -
Beheerder

- Ariën -

18/08/2019 23:53:35
Quote Anchor link
Ik raad wel aan om je invoer te escapen met mysqli_real_escape_string() want nu is er SQL-injectie mogelijk. En dát wil je niet, of het nu schadelijk is, of onverwacht.
 
Jeroen Weij

Jeroen Weij

19/08/2019 00:22:56
Quote Anchor link
- Ariën - op 18/08/2019 23:53:35:
Ik raad wel aan om je invoer te escapen met mysqli_real_escape_string() want nu is er SQL-injectie mogelijk. En dát wil je niet, of het nu schadelijk is, of onverwacht.


Alleen $_POST['txtUrlimage'] toch?
 
- Ariën  -
Beheerder

- Ariën -

19/08/2019 00:27:45
Quote Anchor link
Het kan geen kwaad om dit op al je variabelen in je query te doen.
Gewijzigd op 19/08/2019 00:28:07 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

19/08/2019 01:28:46
Quote Anchor link
Quote:
Krijg ook geen fout in het scherm.

Maar je echo'd in het bovenstaande fragment een heleboel informatie op het scherm. Wat krijg je precies te zien?

Overigens, het Content-Type van het bestand wordt volgens mij door de browser "bepaald" door de extentie, dus in bovenstaande code controleer je in wezen twee keer hetzelfde (de extensie, en vervolgens het Content-Type, wat gebaseerd is op de extentie).

Een hele rudimentaire check om te zien of het bestand een afbeelding is en niet simpelweg een bestand met de extentie van een afbeelding, is via een aanroep van getimagesize(). Indien deze false retourneert dan heb je naar alle waarschijnlijkheid in ieder geval niet te maken met een afbeelding.

Als de informatie niet in de database wordt geschreven houdt dit ofwel in:
- dat je niet in het goede (geneste) if-statement terecht bent gekomen, de insert wordt dan simpelweg niet uitgevoerd, hier zou je informatie over terug moeten krijgen, voeg anders else-statements toe zodat je precies kunt zien waar het misgaat
- de insert mislukt om een of andere reden

Ik denk dat het belangrijk is dat je eerst precies vaststelt hoe het pad eruit ziet wat in de code wordt afgelegd. Pas dan weet je precies wat er is gebeurd. En vervolgens kun je gaan verklaren waarom dat specifieke pad doorlopen werd, en moeten mogelijk aanpassingen in code gedaan worden als blijkt dat bepaalde controles niet goed (of niet meer zoals voorheen) werk(t)en. Begin dus bij een analyse van wat er stap voor stap gebeurt.
Gewijzigd op 19/08/2019 16:19:06 door Thomas van den Heuvel
 
Jeroen Weij

Jeroen Weij

19/08/2019 18:28:47
Quote Anchor link
Thomas van den Heuvel op 19/08/2019 01:28:46:
Quote:
Krijg ook geen fout in het scherm.

Maar je echo'd in het bovenstaande fragment een heleboel informatie op het scherm. Wat krijg je precies te zien?

Overigens, het Content-Type van het bestand wordt volgens mij door de browser "bepaald" door de extentie, dus in bovenstaande code controleer je in wezen twee keer hetzelfde (de extensie, en vervolgens het Content-Type, wat gebaseerd is op de extentie).

Een hele rudimentaire check om te zien of het bestand een afbeelding is en niet simpelweg een bestand met de extentie van een afbeelding, is via een aanroep van getimagesize(). Indien deze false retourneert dan heb je naar alle waarschijnlijkheid in ieder geval niet te maken met een afbeelding.

Als de informatie niet in de database wordt geschreven houdt dit ofwel in:
- dat je niet in het goede (geneste) if-statement terecht bent gekomen, de insert wordt dan simpelweg niet uitgevoerd, hier zou je informatie over terug moeten krijgen, voeg anders else-statements toe zodat je precies kunt zien waar het misgaat
- de insert mislukt om een of andere reden

Ik denk dat het belangrijk is dat je eerst precies vaststelt hoe het pad eruit ziet wat in de code wordt afgelegd. Pas dan weet je precies wat er is gebeurd. En vervolgens kun je gaan verklaren waarom dat specifieke pad doorlopen werd, en moeten mogelijk aanpassingen in code gedaan worden als blijkt dat bepaalde controles niet goed (of niet meer zoals voorheen) werk(t)en. Begin dus bij een analyse van wat er stap voor stap gebeurt.


Thomas, bedankt. Heb het inmiddels opgelost. Miste een DB veld
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.