fout bij updaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels van Dijk

Niels van Dijk

24/09/2009 00:31:00
Quote Anchor link
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?PHP

require("../config.php");

                    $id = $_GET["id"];
                    
$query = mysql_query("SELECT menu_naam,menu_titel,menu_content FROM  menu WHERE id = '".$id."'");
$rij = mysql_fetch_object($query);

$paginanaam = $rij->menu_naam;
$paginatitel = $rij->menu_titel;
$content = $rij->menu_content;
echo

"<form name=\"form\" method=\"post\" action=\"\">
        <table width=\"700\">
            <tr>
            <td width=\"160\"><b>Pagina naam:<b></td>
            <td><input type=\"text\" name=\"menu_naam\" value=\"$paginanaam\" size=\"93\"></td>
            </tr>
            
            <tr>
            <td width=\"160\"><b>Pagina titel:<b></td>
            <td width=\"160\"><input type=\"text\" name=\"menu_titel\" value=\"$paginatitel\" size=\"93\"></td>
            </tr>
            
            <tr>
            <td width=\"160\"><b>Content:<b><td>
            <textarea name=\"menu_content\"  rows=\"15\" cols=\"80\" style=\"width: 80%;\">
                $content
            </textarea><br>
            <input type=\"submit\" name=\"submit\" value=\"wijzigen\">
        </table></form>"
;




if(isset($_POST['submit']))
{

 if(isset($_GET['id']) && !empty($_GET['id']))
 {

    if(isset($_POST['menu_naam']) && !empty($_POST['menu_naam']))
    {

       $query = "UPDATE menu SET menu_naam='".$_POST['menu_naam']."' WHERE id='".$_GET['id']."' LIMIT 1";
        $res = mysql_query($query) or die ("Error: " . mysql_error());

   // succes bericht kan hier...
     }
    else
    {
      echo 'Er ging iets niet goed met het updaten van het systeem';
      exit();
    }
 }

 else
 {
   echo 'Error: Sorry er ging iets fout bij het mee geven van het ID';
 }
}





if(isset($_POST['submit']))
{

 if(isset($_GET['id']) && !empty($_GET['id']))
 {

    if(isset($_POST['menu_content']) && !empty($_POST['menu_content']))
    {

       $query = "UPDATE menu SET menu_content='".$_POST['menu_content']."' WHERE id='".$_GET['id']."' LIMIT 1";
        $res = mysql_query($query) or die ("Error: " . mysql_error());

   // succes bericht kan hier...
     }
    else
    {
      echo '';
      exit();
    }
 }

 else
 {
   echo '';
 }
}



if(isset($_POST['submit']))
{

 if(isset($_GET['id']) && !empty($_GET['id']))
 {

    if(isset($_POST['menu_titel']) && !empty($_POST['menu_titel']))
    {

       $query = "UPDATE menu SET menu_titel='".$_POST['menu_titel']."' WHERE id='".$_GET['id']."' LIMIT 1";
        $res = mysql_query($query) or die ("Error: " . mysql_error());

     }

    else
    {
      echo '';
      exit();
    }
 }

 else
 {
   echo '';
 }
}

echo'<a href="index.php">terug</a>';

?>


</div>
</div>
</body>
</html>


dit is de code en de fout die ik steeds krijg is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Error: 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 's, briefpapier, visitekaartjes, enveloppen, bonnenblocks, leaflets, notitieblock' at line 1


maar ik snap er geen hout van
 
PHP hulp

PHP hulp

24/11/2024 21:56:51
 
Winston Smith

Winston Smith

24/09/2009 01:52:00
Quote Anchor link
Zo te zien zijn je databasenamen niet helemaal correct, omdat je een apostrophe gebruikt?
 
Niels van Dijk

Niels van Dijk

24/09/2009 13:26:00
Quote Anchor link
hoe moet ik dat oplossen dan ?
 
Pieter Jansen

Pieter Jansen

24/09/2009 13:44:00
Quote Anchor link
Nou ja, dat ligt waarschijnlijk in je ../config.php bestand.
Aangezien je query of error niet refereert naar een query in het script welke hier staat.

althans, ik kan nergens briefpapier, visitekaartjes en wat dan ook vinden.. Dus wellicht is het handig even je ../config.php bestand hier neer te zetten.
 
Niels van Dijk

Niels van Dijk

24/09/2009 13:56:00
Quote Anchor link
De config.php

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
<?php
ob_start();

//Connectie gegevens

$host = "localhost";  //Meestal local host
$user = "root";  //Username van je database
$pass = "";  //Password van je database
$data = "menu_cms";  //Je database

//De connectie


mysql_connect($host, $user, $pass) or die($mysql_con);
mysql_select_db($data) or die($mysql_dat);

?>
Gewijzigd op 01/01/1970 01:00:00 door Niels van Dijk
 
- SanThe -

- SanThe -

24/09/2009 15:58:00
Quote Anchor link
Lek => Sql-Injection.
Beveilig met mysql_real_escape_string().
 
Niels van Dijk

Niels van Dijk

24/09/2009 23:28:00
Quote Anchor link
òke SanThe hoe moet ik dat doen dan ?
als ik vragn mag
 
Jaron T

Jaron T

25/09/2009 08:15:00
Quote Anchor link
je $_POST beveiligen met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
addslashes($_POST['jeveldnaam'];
# of
mysql_real_escape_string($_POST['jeveldnaam']);
?>
 
Jan Willem van der Veer

Jan Willem van der Veer

25/09/2009 09:38:00
Quote Anchor link
Quote:
addslashes($_POST['jeveldnaam']);
Nee, daar is addslashes in dit geval niet voor bedoeld. Het wordt zelfs sterk afgeraden om dat te doen. Addslashes houdt bijvoorbeeld totaal geen rekening met de connectie charset en instellingen van je database. Wat je best wel eens wat extra slashes in je database kan opleveren als jij braaf denkt te zijn geweest door MySQL op te voeden bijvoorbeeld :)
 
Jaron T

Jaron T

25/09/2009 11:14:00
Quote Anchor link
Tog met addslashes in db zetten en stripslashes uitlezen? ..
 
Jan Willem van der Veer

Jan Willem van der Veer

25/09/2009 17:00:00
Quote Anchor link
Quote:
Tog met addslashes in db zetten en stripslashes uitlezen? ..
Nee... Ik denk dat je een beetje de clue van het verhaal gemist hebt.
Het idee is dit:

Stel, we hebben een tabel. Met de kolommen naam, wachtwoord en e-mail. Dus bijvoorbeeld deze structuur:
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR (200) NOT NULL,
pass VARCHAR (40) NOT NULL,
mail VARCHAR(200) NOT NULL
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

Nu kun je daar met PHP waarden in stoppen, bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_query('INSERT INTO users (name, pass, mail) VALUES (\''.$_POST['name'].'\', \''.sha1($_POST['pass']).'\', \''.$_POST['mail'].'\')');
?>


Stel dat jij nu degene bent die zich aanmeldt, kan dit resulteren in:
INSERT INTO users (name, pass, mail) VALUES ('Jaron', 'AB3...AB4', '[email protected]')

Als je geen mysql_real_escape_string gebruikt, levert dit bij namen met een ' er in een probleem op. Om die problemen te voorkomen gebruik je dus mysql_real_escape_string of addslashes.
Echter addslashes werkt alleen maar voor charsets waar enkel ' en " als teken wordt gebruikt voor het openen van velden. Het gevolg is echter wel dat bijv. in UTF8 er meerdere tekens zijn die hetzelfde betekenen als ' die ge-escaped dienen te worden. Daarnaast escaped addslashes ook double-quotes, die we helemaal niet ge-escaped willen hebben. Dat levert namelijk bij bepaalde configuraties extra slashes op in de database. Om die reden willen we dus geen addslashes maar mysql_real_escape_string zien.

Stripslashes om de waarden terug te krijgen is helemaal onzin. Daar ga ik niet eens over beginnen. Dat mag je gewoon zelf uitproberen. Als je dat echt nodig hebt, dan heb je toch echt een paar foute instellingen in je PHP en/of MySQL zitten.

Zie ook even: http://wiki.phpfreakz.nl/SQLInjectie
Gewijzigd op 01/01/1970 01:00:00 door Jan Willem van der Veer
 
Niels van Dijk

Niels van Dijk

26/09/2009 15:19:00
Quote Anchor link
huh ik snap er weinig van
 
Niels van Dijk

Niels van Dijk

29/09/2009 22:47:00
Quote Anchor link
#bump#
 
Jan Koehoorn

Jan Koehoorn

29/09/2009 23:01:00
Quote Anchor link
Het commentaar: "huh ik snap er weinig van" is niet specifiek genoeg om goed op te kunnen reageren. Vandaar dat je geen reacties meer krijgt.

Als je iets niet snapt, beschrijf dan precies wat je niet snapt.
 



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.