fout met insert database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Rick Donderwinkel

Rick Donderwinkel

14/07/2009 14:06:00
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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')].")");
?>
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
 
PHP hulp

PHP hulp

23/11/2024 16:04:10
 
Marco PHPJunky

Marco PHPJunky

14/07/2009 14:18:00
Quote Anchor link
Ik zou het eens zo proberen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']).'\')');

?>


Want je bent ook je beveiliging vergeten.....
en je mist er een paar bij je veld namen...
 
Rick Donderwinkel

Rick Donderwinkel

14/07/2009 14:23:00
Quote Anchor link
Dat werkt niet, ik snap er niks van.

Mijn SQL ziet er zo uitL
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
<?
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 ;
?>
 
Marco PHPJunky

Marco PHPJunky

14/07/2009 14:31:00
Quote Anchor link
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 ?
Gewijzigd op 01/01/1970 01:00:00 door Marco PHPJunky
 
Rick Donderwinkel

Rick Donderwinkel

14/07/2009 14:33:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
 
Marco PHPJunky

Marco PHPJunky

14/07/2009 14:36:00
Quote Anchor link
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 ?
 
Mr.Ark

Mr.Ark

14/07/2009 14:39:00
Quote Anchor link
Ik zou het zo doen:

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
<?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'])."'
        )
"
;

?>
 
Rick Donderwinkel

Rick Donderwinkel

14/07/2009 14:42:00
Quote Anchor link
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
 
Marco PHPJunky

Marco PHPJunky

14/07/2009 14:47:00
Quote Anchor link
En wat staat er op/rond Line 13...
Of hoe ziet je script er nu uit...
 
Rick Donderwinkel

Rick Donderwinkel

14/07/2009 14:51:00
Quote Anchor link
Op regel 13 staat het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(mysql_num_rows($sql) == 0) {
?>


Hier ga ik kijken of de gebruikersnaam al reeds in gebruik is
 
Marco PHPJunky

Marco PHPJunky

14/07/2009 14:52:00
Quote Anchor link
en hoe doe je dat dan ?
 
Mr.Ark

Mr.Ark

14/07/2009 14:59:00
Quote Anchor link
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) {
 
Rick Donderwinkel

Rick Donderwinkel

14/07/2009 15:04: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
<?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>';
                        }

?>
Gewijzigd op 01/01/1970 01:00:00 door Rick Donderwinkel
 
Afra ca

Afra ca

14/07/2009 16:08:00
Quote Anchor link
Controleren of een formulier gesubmit wordt doen we met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
?>


Controleren op variabele leegte doen we zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!empty($_POST['naam'])){
?>


Foutafhandeling queries ontbreekt. Doe dit zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($sql = true){
?>


herschrijven naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($sql))
//of, voor false:
if(!$sql)){
?>


In je eerste regel zou ik als ik jou was gebruik maken van true of false, en niet de STRING '1'. Dus

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// === betekent gelijk EN hetzelfde type
if($_CONFIG['database_active'] === true) {
?>


in plaats van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_CONFIG['database_active'] == '1') {
?>


Rewrite van je code:

{KOMT IN EDIT}
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
 
Mr.Ark

Mr.Ark

14/07/2009 17:53:00
Quote Anchor link
@ 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?
 
Eddy E

Eddy E

14/07/2009 18:35:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$string
= 'wachtwoord';
$string = 'gewoon.lang.maken__' . $string . '__nog.meer.salt';
$hash = hash('ripemd160', $string);
?>
 
Afra ca

Afra ca

14/07/2009 21:04:00
Quote Anchor link
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):

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
<?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);
}

?>


Natuurlijk zet je pepper file buiten webserver.
 
- SanThe -

- SanThe -

14/07/2009 21:44:00
Quote Anchor link
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.
 
Rick Donderwinkel

Rick Donderwinkel

15/07/2009 10:32:00
Quote Anchor link
waarom zal dat fout moeten gaan, de varchar(7) is voor de postcode. Deze mag niet langer zijn dan 7 karakters.
 
Jeffrey

Jeffrey

15/07/2009 10:54:00
Quote Anchor link
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.
 

15/07/2009 11:34:00
Quote Anchor link
Het gaat hier om mysql, dus een fout zou je daar niet voor terug krijgen enkel dat niet alles wordt opgeslagen 8-)
 

Pagina: 1 2 volgende »



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.