Kan form informatie niet posten naar database
Ik ben middels een online cursus mijn website aan het inrichten alleen loop ik ergens tegenaan en dat is bij het inrichten van mijn formulieren pagina. Hier heb ik dus een aantal inputvelden die ingevuld worden en vervolgens via een script zouden deze naar mijn mysql database moeten worden verstuurd.
Ik heb al van alles geprobeerd maar het lukt me maar niet om het werkend te krijgen.
Zelf dacht ik dat het komt omdat de $conn niet goed wordt opgeroepen maar die functie heb ik omschrijven op mijn db/db.php pagina dus dat zou niet het punt moeten zijn toch?
Mijn query waar alles vasloopt is als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
if(move_uploaded_file($image_tmp,$image_path)){
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum ) VALUES ('$_POST[score]', '$title', '$_POST[prijs]', '$_POST[info]', '$image_db_path', '$_POST[link]', $datum, '$_POST[einddatum]')";
if(mysqli_query($conn,$ins_sql)){
header('index.php');
} else {
$error = '<div class="alert alert-danger">The query was not working</div>';
}
?>
if(move_uploaded_file($image_tmp,$image_path)){
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum ) VALUES ('$_POST[score]', '$title', '$_POST[prijs]', '$_POST[info]', '$image_db_path', '$_POST[link]', $datum, '$_POST[einddatum]')";
if(mysqli_query($conn,$ins_sql)){
header('index.php');
} else {
$error = '<div class="alert alert-danger">The query was not working</div>';
}
?>
Alle vorige stappen komen goed omdat ik alleen de foutmelding van else krijg bij het laatste onderdeel.
Hulp zou ik zeer op prijs stellen
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 25/05/2017 22:18:16 door - Ariën -
Ook vraag je niet aan MySQL wat er fout gaat, dit kan met mysqli_error($con). Gebruik dit alleen maar voor test en ontwikkeldoeleinden, en geef dergelijke foutmeldingen niet openbaar aan je bezoekers. Ze vinden dit vaak 'eng' en je maakt hackers ook meer wijs dan ze moeten weten.
Ook vergeet je de Location-header mee te sturen in de header() functie.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// Met tabjes en enters maak je de query beter leesbaarder....
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum )
VALUES ('".mysqli_real_escape_string($conn,$_POST['score'])."',
'".$title."',
'".mysqli_real_escape_string($conn,$_POST['prijs'])."',
'".mysqli_real_escape_string($conn,$_POST['info'])."',
'".$image_db_path."',
'".mysqli_real_escape_string($conn,$_POST['link'])."',
'".$datum."',
'".mysqli_real_escape_string($conn,$_POST['einddatum'])."'
)";
if(mysqli_query($conn,$ins_sql)){
header('Location: index.php');
exit(); // nooit vergeten bij een location redirect!
} else {
$error = '<div class="alert alert-danger">The query was not working, because: '.mysqli_error($conn).'</div>';
}
?>
// Met tabjes en enters maak je de query beter leesbaarder....
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum )
VALUES ('".mysqli_real_escape_string($conn,$_POST['score'])."',
'".$title."',
'".mysqli_real_escape_string($conn,$_POST['prijs'])."',
'".mysqli_real_escape_string($conn,$_POST['info'])."',
'".$image_db_path."',
'".mysqli_real_escape_string($conn,$_POST['link'])."',
'".$datum."',
'".mysqli_real_escape_string($conn,$_POST['einddatum'])."'
)";
if(mysqli_query($conn,$ins_sql)){
header('Location: index.php');
exit(); // nooit vergeten bij een location redirect!
} else {
$error = '<div class="alert alert-danger">The query was not working, because: '.mysqli_error($conn).'</div>';
}
?>
Gewijzigd op 25/05/2017 22:28:06 door - Ariën -
Code (php)
1
VALUES ('".mysqli_real_escape_string($conn,$_POST['score'])."','".$title."', ('$_POST['prijs'])."') etc.
Code (php)
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
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
<?php session_start();
include 'db/db.php';
$error = '';
if(isset($_POST['submit_post'])) {
$title = strip_tags($_POST['titel']);
$date = date('Y-m-d h:i:s');
if($_FILES['afbeelding']['name'] != ''){
$image_name = $_FILES['afbeelding']['name'];
$image_tmp = $_FILES['afbeelding']['tmp_name'];
$image_size = $_FILES['afbeelding']['size'];
$image_ext = pathinfo($image_name,PATHINFO_EXTENSION);
$image_path = '../images/'.$image_name;
$image_db_path = 'images/'.$image_name;
if($image_size < 1000000){
if($image_ext == 'jpg' || $image_ext == 'PNG'){
if(move_uploaded_file($image_tmp,$image_path)){
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum ) VALUES ('$_POST[score]', '$title', '$_POST[prijs]', '$_POST[info]', '$image_db_path', '$_POST[link]', $datum, '$_POST[einddatum]')";
if(mysqli_query($conn,$ins_sql)){
header('index.php');
} else {
$error = '<div class="alert alert-danger">The query was not working</div>';
}
} else {
$error = '<div class="alert alert-danger">Sorry, unfortunately image not uploaded</div>';
}
} else {
$error = '<div class="alert alert-danger">Image format was not correct</div>';
}
} else {
$error = '<div class="alert alert-danger">Image file size is too big</div>';
}
}
}
?>
include 'db/db.php';
$error = '';
if(isset($_POST['submit_post'])) {
$title = strip_tags($_POST['titel']);
$date = date('Y-m-d h:i:s');
if($_FILES['afbeelding']['name'] != ''){
$image_name = $_FILES['afbeelding']['name'];
$image_tmp = $_FILES['afbeelding']['tmp_name'];
$image_size = $_FILES['afbeelding']['size'];
$image_ext = pathinfo($image_name,PATHINFO_EXTENSION);
$image_path = '../images/'.$image_name;
$image_db_path = 'images/'.$image_name;
if($image_size < 1000000){
if($image_ext == 'jpg' || $image_ext == 'PNG'){
if(move_uploaded_file($image_tmp,$image_path)){
$ins_sql = "INSERT INTO producten (score, titel, prijs, info, afbeelding, link, datum, einddatum ) VALUES ('$_POST[score]', '$title', '$_POST[prijs]', '$_POST[info]', '$image_db_path', '$_POST[link]', $datum, '$_POST[einddatum]')";
if(mysqli_query($conn,$ins_sql)){
header('index.php');
} else {
$error = '<div class="alert alert-danger">The query was not working</div>';
}
} else {
$error = '<div class="alert alert-danger">Sorry, unfortunately image not uploaded</div>';
}
} else {
$error = '<div class="alert alert-danger">Image format was not correct</div>';
}
} else {
$error = '<div class="alert alert-danger">Image file size is too big</div>';
}
}
}
?>
Je kan onmogelijk één functie gebruiken om alles in één klap te escapen. je moet altijd selectief zijn wat je escaped.
Dit doe je alleen bij manipuleerbare waardes in je query. Waaronder $_POST, $_GET, $_FILES, $_COOKIE, $_SESSION en $_ENV.
Je kan je natuurlijk ook richten op 'Prepared Statements'
Gewijzigd op 25/05/2017 23:16:45 door - Ariën -
Maar het gebruik van real escape string is toch meer een van veiligheid? Of is dit ook de reden waarom mijn query niet goed functioneert?
Het beveiligt je tegen schadelijke tekens die kwade dingen met je query kunnen doen (SQL-injection). Maar ook onbedoeld kan je die tekens gebruiken. Voeg voor de grap eens een single quote (') in in een onbeveiligde query. Je zal dan een foutmelding krijgen met mysqli_error(...).
Ik ga het in ieder geval morgen testen en kijken of hij dan wel werkt. In ieder geval al bedankt voor je reacties!