fout met insert database
Hallo,
Ik heb een vraagje, ik heb zelf al van alles geprobeerd. Maar ik kom er maar niet uit. Het is een fout met het inserten van de database.
Ik heb een vraagje, ik heb zelf al van alles geprobeerd. Maar ik kom er maar niet uit. Het is een fout met het inserten van de database.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = mysql_query("INSERT INTO leden (gebruikersnaam, emailadress, wachtwoord, voornaam, achternaam, adres, postcode, plaats)VALUES (
".$_POST[md5('user')].",
".$_POST[md5('email')].",
".$_POST[md5(md5('pass'))].",
".$_POST[md5('voornaam')].",
".$_POST[md5('achternaam')].",
".$_POST[md5('postcode')].",
".$_POST[md5('huisnr')].",
".$_POST[md5('straat')].",
".$_POST[md5('woonplaats')].")");
?>
$sql = mysql_query("INSERT INTO leden (gebruikersnaam, emailadress, wachtwoord, voornaam, achternaam, adres, postcode, plaats)VALUES (
".$_POST[md5('user')].",
".$_POST[md5('email')].",
".$_POST[md5(md5('pass'))].",
".$_POST[md5('voornaam')].",
".$_POST[md5('achternaam')].",
".$_POST[md5('postcode')].",
".$_POST[md5('huisnr')].",
".$_POST[md5('straat')].",
".$_POST[md5('woonplaats')].")");
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
Ik zou het eens zo proberen:
Want je bent ook je beveiliging vergeten.....
en je mist er een paar bij je veld namen...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?PHP
$sql = mysql_query('INSERT INTO leden (gebruikersnaam, emailadress, wachtwoord, voornaam, achternaam, adres, postcode, plaats) VALUES (
\''.mysql_escape_string($_POST['user']).'\',
\''.mysql_escape_string($_POST['email']).'\',
\''.mysql_escape_string(md5($_POST['pass'])).'\',
\''.mysql_escape_string($_POST['voornaam']).'\',
\''.mysql_escape_string($_POST['acternaam']).'\',
\''.mysql_escape_string($_POST['postcode']).'\',
\''.mysql_escape_string($_POST['huisnr']).'\',
\''.mysql_escape_string($_POST['straat']).'\',
\''.mysql_escape_string($_POST['woonplaats']).'\')');
?>
$sql = mysql_query('INSERT INTO leden (gebruikersnaam, emailadress, wachtwoord, voornaam, achternaam, adres, postcode, plaats) VALUES (
\''.mysql_escape_string($_POST['user']).'\',
\''.mysql_escape_string($_POST['email']).'\',
\''.mysql_escape_string(md5($_POST['pass'])).'\',
\''.mysql_escape_string($_POST['voornaam']).'\',
\''.mysql_escape_string($_POST['acternaam']).'\',
\''.mysql_escape_string($_POST['postcode']).'\',
\''.mysql_escape_string($_POST['huisnr']).'\',
\''.mysql_escape_string($_POST['straat']).'\',
\''.mysql_escape_string($_POST['woonplaats']).'\')');
?>
Want je bent ook je beveiliging vergeten.....
en je mist er een paar bij je veld namen...
Dat werkt niet, ik snap er niks van.
Mijn SQL ziet er zo uitL
Mijn SQL ziet er zo uitL
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
CREATE TABLE IF NOT EXISTS `leden` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gebruikersnaam` varchar(255) NOT NULL,
`emailadress` varchar(255) NOT NULL,
`wachtwoord` varchar(255) NOT NULL,
`voornaam` varchar(255) NOT NULL,
`achternaam` varchar(255) NOT NULL,
`adres` varchar(255) NOT NULL,
`postcode` varchar(7) NOT NULL,
`plaats` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
?>
CREATE TABLE IF NOT EXISTS `leden` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gebruikersnaam` varchar(255) NOT NULL,
`emailadress` varchar(255) NOT NULL,
`wachtwoord` varchar(255) NOT NULL,
`voornaam` varchar(255) NOT NULL,
`achternaam` varchar(255) NOT NULL,
`adres` varchar(255) NOT NULL,
`postcode` varchar(7) NOT NULL,
`plaats` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
?>
Hoe kan het dan dat je in je velden rij minder hebt staan dan in je value rij...
want deze moeten gelijk zijn in aantal..
Welke foutmelding(en) krijg je ?
want deze moeten gelijk zijn in aantal..
Welke foutmelding(en) krijg je ?
Gewijzigd op 01/01/1970 01:00:00 door Marco PHPJunky
ik heb alle velden er in staan behalve id, deze wordt als het goed is automatisch toegevoegd.
PS: ik zie het al, ik was huisnummer vergeten
PS: ik zie het al, ik was huisnummer vergeten
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
Ik bedoel je Insert query....
Daar heb je er bij de veld namen 8 staan... en bij de value 9 staan....
zet er anders even: or die ('kan niet omdat ==> ' . mysql_error());
achter ...
En wat krijg je allemaal voor foutmeldingen ?
Daar heb je er bij de veld namen 8 staan... en bij de value 9 staan....
zet er anders even: or die ('kan niet omdat ==> ' . mysql_error());
achter ...
En wat krijg je allemaal voor foutmeldingen ?
Ik zou het zo doen:
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
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
<?PHP
$sql =
"
INSERT INTO
leden
(
gebruikersnaam,
emailadress,
wachtwoord,
voornaam,
achternaam,
adres,
postcode,
plaats
)
VALUES
(
'".mysql_escape_string($_POST['user'])."',
'".mysql_escape_string($_POST['email'])."',
'".mysql_escape_string(md5($_POST['pass']))."',
'".mysql_escape_string($_POST['voornaam'])."',
'".mysql_escape_string($_POST['acternaam'])."',
'".mysql_escape_string($_POST['postcode'])."',
'".mysql_escape_string($_POST['huisnr'])."',
'".mysql_escape_string($_POST['straat'])."',
'".mysql_escape_string($_POST['woonplaats'])."'
)
";
?>
$sql =
"
INSERT INTO
leden
(
gebruikersnaam,
emailadress,
wachtwoord,
voornaam,
achternaam,
adres,
postcode,
plaats
)
VALUES
(
'".mysql_escape_string($_POST['user'])."',
'".mysql_escape_string($_POST['email'])."',
'".mysql_escape_string(md5($_POST['pass']))."',
'".mysql_escape_string($_POST['voornaam'])."',
'".mysql_escape_string($_POST['acternaam'])."',
'".mysql_escape_string($_POST['postcode'])."',
'".mysql_escape_string($_POST['huisnr'])."',
'".mysql_escape_string($_POST['straat'])."',
'".mysql_escape_string($_POST['woonplaats'])."'
)
";
?>
Oke, ik krijg op het moment deze foutmelding:
Notice: Use of undefined constant mysql_num_rows - assumed 'mysql_num_rows' in C:\Program Files\xampplite\htdocs\test\include_files\registreer.php on line 13
Notice: Use of undefined constant mysql_num_rows - assumed 'mysql_num_rows' in C:\Program Files\xampplite\htdocs\test\include_files\registreer.php on line 13
En wat staat er op/rond Line 13...
Of hoe ziet je script er nu uit...
Of hoe ziet je script er nu uit...
Op regel 13 staat het volgende:
Hier ga ik kijken of de gebruikersnaam al reeds in gebruik is
Hier ga ik kijken of de gebruikersnaam al reeds in gebruik is
en hoe doe je dat dan ?
Lees eens een handleiding van PHP/MYSQL
if(mysql_num_rows($sql) == 0) {
Maak daar van
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
if(mysql_num_rows($sql) == 0) {
Maak daar van
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
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
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
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
<?php
if($_CONFIG['database_active'] == '1') {
if(isset($_POST['subm'])) {
// controleren van velden account gegevens
if($_POST['user'] != "" AND $_POST['email'] != "" AND $_POST['pass'] != "") {
$sql = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$_POST['user']."'");
if(mysql_num_rows($sql) == 0) {
if(preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i", $_POST['email'])) {
$account = 'oke';
}else{
$fout .= '<small>Het opgegeven emailadres is niet geldig</strong></small><br>';
}
}else{
$fout .= '<small>De opgegeven gebruikersnaam is reeds in gebruik</strong></small><br>';
}
}else{
$fout .= '<small>U bent een of meerdere velden vergeten in te voeren bij <strong>Account gegevens</strong></small><br>';
}
// controleren van velden persoonlijke gegevens
if($_POST['voornaam'] != "" AND $_POST['achternaam'] != "" AND $_POST['postcode'] != "" AND $_POST['huisnr'] != "" AND $_POST['straat'] != "" AND $_POST['woonplaats'] != "") {
$persoonlijk = 'oke';
}else{
$fout .= '<small>U bent een of meerdere velden vergeten in te voeren bij <strong>Persoonlijke gegevens</strong></small><br>';
}
// als alles correct is afgehandeld
if($account == 'oke' && $persoonlijk == 'oke') {
$sql =
"
INSERT INTO
leden
(
gebruikersnaam,
emailadress,
wachtwoord,
voornaam,
achternaam,
adres,
postcode,
straat,
plaats
)
VALUES
(
'".mysql_escape_string($_POST['user'])."',
'".mysql_escape_string($_POST['email'])."',
'".mysql_escape_string(md5($_POST['pass']))."',
'".mysql_escape_string($_POST['voornaam'])."',
'".mysql_escape_string($_POST['acternaam'])."',
'".mysql_escape_string($_POST['postcode'])."',
'".mysql_escape_string($_POST['huisnr'])."',
'".mysql_escape_string($_POST['straat'])."',
'".mysql_escape_string($_POST['woonplaats'])."'
)
";
if($sql == true) {
echo 'goed';
}
}
// fouten weergeven
if(isset($fout)) {
echo '<small><strong>Fouten:</strong></small><br>';
echo $fout;
}
}
if(isset($invoer)) {
echo '<small><strong>Registratie geslaagd:</strong></small><br>';
}
?>
if($_CONFIG['database_active'] == '1') {
if(isset($_POST['subm'])) {
// controleren van velden account gegevens
if($_POST['user'] != "" AND $_POST['email'] != "" AND $_POST['pass'] != "") {
$sql = mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$_POST['user']."'");
if(mysql_num_rows($sql) == 0) {
if(preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i", $_POST['email'])) {
$account = 'oke';
}else{
$fout .= '<small>Het opgegeven emailadres is niet geldig</strong></small><br>';
}
}else{
$fout .= '<small>De opgegeven gebruikersnaam is reeds in gebruik</strong></small><br>';
}
}else{
$fout .= '<small>U bent een of meerdere velden vergeten in te voeren bij <strong>Account gegevens</strong></small><br>';
}
// controleren van velden persoonlijke gegevens
if($_POST['voornaam'] != "" AND $_POST['achternaam'] != "" AND $_POST['postcode'] != "" AND $_POST['huisnr'] != "" AND $_POST['straat'] != "" AND $_POST['woonplaats'] != "") {
$persoonlijk = 'oke';
}else{
$fout .= '<small>U bent een of meerdere velden vergeten in te voeren bij <strong>Persoonlijke gegevens</strong></small><br>';
}
// als alles correct is afgehandeld
if($account == 'oke' && $persoonlijk == 'oke') {
$sql =
"
INSERT INTO
leden
(
gebruikersnaam,
emailadress,
wachtwoord,
voornaam,
achternaam,
adres,
postcode,
straat,
plaats
)
VALUES
(
'".mysql_escape_string($_POST['user'])."',
'".mysql_escape_string($_POST['email'])."',
'".mysql_escape_string(md5($_POST['pass']))."',
'".mysql_escape_string($_POST['voornaam'])."',
'".mysql_escape_string($_POST['acternaam'])."',
'".mysql_escape_string($_POST['postcode'])."',
'".mysql_escape_string($_POST['huisnr'])."',
'".mysql_escape_string($_POST['straat'])."',
'".mysql_escape_string($_POST['woonplaats'])."'
)
";
if($sql == true) {
echo 'goed';
}
}
// fouten weergeven
if(isset($fout)) {
echo '<small><strong>Fouten:</strong></small><br>';
echo $fout;
}
}
if(isset($invoer)) {
echo '<small><strong>Registratie geslaagd:</strong></small><br>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
Controleren of een formulier gesubmit wordt doen we met:
Controleren op variabele leegte doen we zo:
Foutafhandeling queries ontbreekt. Doe dit zo:
Gebruik ook in je eerste query mysql_real_escape_string.
Een md5 bevat nooit gekke tekens die je database kunnen "hacken", dus mysql_real_escape_string(md5(...)) is overbodig. Gebruik alleen md5(blabla) .
MD5 word trouwens tegenwoordig gezien als "onveilig". Gebruik 1 van de vele andere algoritmes van hash() , óf gebruik in ieder geval een SALT.
Je kan trouwens ook:
herschrijven naar:
In je eerste regel zou ik als ik jou was gebruik maken van true of false, en niet de STRING '1'. Dus
in plaats van:
Rewrite van je code:
{KOMT IN EDIT}
Controleren op variabele leegte doen we zo:
Foutafhandeling queries ontbreekt. Doe dit zo:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$query = "jequery";
if(!$result = mysql_query($query)){
trigger_error(mysql_error());
}
else {
//rest code
}
?>
$query = "jequery";
if(!$result = mysql_query($query)){
trigger_error(mysql_error());
}
else {
//rest code
}
?>
Gebruik ook in je eerste query mysql_real_escape_string.
Een md5 bevat nooit gekke tekens die je database kunnen "hacken", dus mysql_real_escape_string(md5(...)) is overbodig. Gebruik alleen md5(blabla) .
MD5 word trouwens tegenwoordig gezien als "onveilig". Gebruik 1 van de vele andere algoritmes van hash() , óf gebruik in ieder geval een SALT.
Je kan trouwens ook:
herschrijven naar:
In je eerste regel zou ik als ik jou was gebruik maken van true of false, en niet de STRING '1'. Dus
Code (php)
1
2
3
4
2
3
4
<?php
// === betekent gelijk EN hetzelfde type
if($_CONFIG['database_active'] === true) {
?>
// === betekent gelijk EN hetzelfde type
if($_CONFIG['database_active'] === true) {
?>
in plaats van:
Rewrite van je code:
{KOMT IN EDIT}
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
@ Afra
Heb je misschien een voorbeeldje hoe je een goed beveiligd wachtwoord maakt?
Kan je bijvoorbeeld ook een md5 en een hash samen doen? Of zal dat niet veel uitmaken kwa sterkte?
Heb je misschien een voorbeeldje hoe je een goed beveiligd wachtwoord maakt?
Kan je bijvoorbeeld ook een md5 en een hash samen doen? Of zal dat niet veel uitmaken kwa sterkte?
Agree met Eddy. Je kan ook je salt dynamisch laten genereren bij het registreren, in een aparte database of tabel opslaan. Die haal je dan bij het "decrypten" weer op. En je kan het nog meer uitbreiden met zogeheten pepper, daarbij maak je nog een extra string aan in een apart tekst bestand buiten de webserver. dan krijg je uiteindelijk iets als (oud concept dingetje):
Natuurlijk zet je pepper file buiten webserver.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
/*encryption functie*/
function custom_hash($pass, $username) {
/*Pepper ophalen uit bestand */
$pepperfile = "pepper.txt";
$fh = fopen($pepperfile, 'r');
$pepper = fread($fh, filesize($pepperfile));
fclose($fh);
/*salt ophalen uit database*/
$query = "SELECT Salt FROM salt WHERE Gebruikersnaam = '".$username."'";
$result = mysql_query($query);
$rij = mysql_fetch_assoc($result);
$salt = $rij['Salt'];
/*password generaten*/
return hash('ripemd160', $pepper.$pass.$salt);
}
?>
/*encryption functie*/
function custom_hash($pass, $username) {
/*Pepper ophalen uit bestand */
$pepperfile = "pepper.txt";
$fh = fopen($pepperfile, 'r');
$pepper = fread($fh, filesize($pepperfile));
fclose($fh);
/*salt ophalen uit database*/
$query = "SELECT Salt FROM salt WHERE Gebruikersnaam = '".$username."'";
$result = mysql_query($query);
$rij = mysql_fetch_assoc($result);
$salt = $rij['Salt'];
/*password generaten*/
return hash('ripemd160', $pepper.$pass.$salt);
}
?>
Natuurlijk zet je pepper file buiten webserver.
Je hebt allemaal varchar(255) en één varchar(7).
Interessant, want een md5() heeft altijd precies varchar(32) nodig.
Dus die met 7 gaat helemaal fout.
Interessant, want een md5() heeft altijd precies varchar(32) nodig.
Dus die met 7 gaat helemaal fout.
waarom zal dat fout moeten gaan, de varchar(7) is voor de postcode. Deze mag niet langer zijn dan 7 karakters.
SanThe doelt waarschijnlijk op jouw initiele post waarin jij alles een md5 encryptie geeft.
Dan maakt het niet meer uit of je waarde nou 2, 5, 7 of 12 tekens heeft, de hash waarde (md5) wordt altijd een combinatie van 32 tekens, wat niet gaat passen in een varchar veld met een maximale lengte van 7.
Dan maakt het niet meer uit of je waarde nou 2, 5, 7 of 12 tekens heeft, de hash waarde (md5) wordt altijd een combinatie van 32 tekens, wat niet gaat passen in een varchar veld met een maximale lengte van 7.
Het gaat hier om mysql, dus een fout zou je daar niet voor terug krijgen enkel dat niet alles wordt opgeslagen 8-)




