Versio

Ledenscript

Overzicht Reageren

Mario Onbekend

Mario Onbekend

27/09/2010 07:26:30
Quote Anchor link
Hallo,

Ik ben bezig met het maken van een ledenscript (voor eigen gebruik). Ik ben bijna klaar, maar de gegevens staan nu nog onbeveiligd in de database.
Ik heb via Google een pagina gelezen over md5, en dit uitgeprobeerd, maar dit werkte niet. Ik denk dat ik iets verkeerd doe.

Inloggen:
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
if ($_GET['pagina'] == "aanmelden" and $_GET['id'] == "aanmelden") {
    $gebruikersnaam = $_POST['gebruikersnaam'];
    $gebruikersnaam = stripslashes($gebruikersnaam);
    $gebruikersnaam = mysql_real_escape_string($gebruikersnaam);
    $wachtwoord = $_POST['wachtwoord'];
    $wachtwoord = stripslashes($wachtwoord);
    $wachtwoord = mysql_real_escape_string($wachtwoord);
    $veiligwachtwoord = md5($wachtwoord); // Met md5 uit de database halen
    $query = "SELECT * FROM gebruikers WHERE gebruikersnaam='".$gebruikersnaam."' AND wachtwoord='".$veiligwachtwoord."'";
    $query2 = mysql_query($query);
    $query3 = mysql_num_rows($query2);
    if ($query3 == 1) {
        session_register("gebruikersnaam");
        session_register("wachtwoord");
        header("Location: welkom.php");
    }


Registreren:
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
} elseif ($_GET['pagina'] == "inschrijven") {
    if ($_GET['id'] == "inschrijven") {
        $gebruikersnaam = $_POST['gebruikersnaam'];
        $wachtwoord = $_POST['wachtwoord'];
        $wachtwoord2 = $_POST['wachtwoord2'];
        $emailadres = $_POST['emailadres'];
        $voornaam = $_POST['voornaam'];
        $achternaam = "";
        $rang = 1;
        $saldo = 10;
        if (!empty($voornaam) and !empty($gebruikersnaam) and !empty($wachtwoord) and !empty($wachtwoord2) and $wachtwoord2 == $wachtwoord) {
            $query = "SELECT * FROM gebruikers WHERE gebruikersnaam='".$gebruikersnaam."'";
            $query2 = mysql_query($query) or die ("We kunnen geen verbinding maken.");
            $query3 = mysql_num_rows($query2);
            if ($query3 == 0) {
                ob_start();
                    header("Location: http://www..eu/index.php?pagina=inschrijven&id=inschrijven&id=ingeschreven");
                ob_flush();
                $veiligwachtwoord = md5($wachtwoord); // Met md5 in de database zetten
                $inschrijven = "INSERT INTO gebruikers (gebruikersnaam, wachtwoord, emailadres, voornaam, rang, saldo) VALUES ('".$gebruikersnaam."', '".$veiligwachtwoord."', '".$emailadres."', '".$voornaam."', '".$rang."', '".$saldo."')";
                mail("".$emailadres."", "Welkom bij ", "Hallo ".$voornaam.",\n\nWelkom bij ! Uw gegevens zijn:\n\nGebruikersnaam: ".$gebruikersnaam."\nWachtwoord: ".$wachtwoord."\n\nVeel plezier!\n\n\n\n\nwww..eu", "From: ");
                mysql_query($inschrijven) or die ("We kunnen geen verbinding maken.");
            } else {
                ob_start();
                    header("Location: http://www..eu/id/index.php?pagina=inschrijven&id=inschrijven&id=probleem");
                ob_flush();
            }
        }
    }
}


Weet iemand hoe ik dit op kan lossen?
Gewijzigd op 13/07/2011 14:05:22 door Bas Kreleger
 
PHP hulp

PHP hulp

25/05/2012 07:48:13
Gesponsorde koppelingen:
 
Www JdeRuijterNL

www JdeRuijterNL

27/09/2010 08:09:32
Quote Anchor link
Wat voor foutmelding krijg je?
 
Mario Onbekend

Mario Onbekend

27/09/2010 08:14:18
Quote Anchor link
Ik krijg geen foutmelding verder, maar het inloggen lukt gewoon niet. De gegevens zijn niet bekend, zegt-ie dan. Dus wat er wordt ingevuld, klopt niet met wat er in de database staat.

Dus ergens moet er wat verkeerd staan waardoor OF de md5 niet juist in de database wordt gezet, OF dat het er niet goed uit wordt gehaald.

Het erin zetten is alleen dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$wachtwoord = $_POST['wachtwoord'];
$veiligwachtwoord = md5($wachtwoord);


En bij het inloggen, het controleren van de wachtwoorden is dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$wachtwoord = $_POST['wachtwoord'];
$wachtwoord = stripslashes($wachtwoord);
$wachtwoord = mysql_real_escape_string($wachtwoord);
$veiligwachtwoord = md5($wachtwoord);
$query = "SELECT * FROM gebruikers WHERE gebruikersnaam='".$gebruikersnaam."' AND wachtwoord='".$veiligwachtwoord."'";
$query2 = mysql_query($query);
$query3 = mysql_num_rows($query2);
 
Www JdeRuijterNL

www JdeRuijterNL

27/09/2010 08:28:15
Quote Anchor link
Zet dit even aan het begin van je code.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php error_reporting(E_ALL); ?>


Dan weet je gelijk waar het fout gaat, want code nalopen kost gewoon meer tijd.

en wat staat er in het DB bij wachtwoord?
Gewijzigd op 27/09/2010 08:30:12 door www JdeRuijterNL
 
Mario Onbekend

Mario Onbekend

27/09/2010 08:29:25
Quote Anchor link
Zal dat helpen? Volgens mij zit er niet een echte fout in het script, maar gewoon in de verwerking...
En wat hier aan scripts is geplaatst, is in principe de enige scripting van de verwerking. Dus heel groot is het niet.
Gewijzigd op 27/09/2010 08:30:17 door Mario Onbekend
 
Www JdeRuijterNL

www JdeRuijterNL

27/09/2010 09:18:13
Quote Anchor link
Maargoed, ik kom met een tip zodat je je fouten makkelijker kan opsporen, wat je ermee doet is natuurlijk weer aan jou.
 
Mario Onbekend

Mario Onbekend

27/09/2010 09:22:40
Quote Anchor link
Je hebt gelijk. Ik heb het er toch even ingezet, en ik krijg dit:

Notice: Undefined index: id in /home/nieuwni/domains/nieuwnieuws.eu/public_html/nieuwnieuwsid/index.php on line 140

Notice: Undefined index: id in /home/nieuwni/domains/nieuwnieuws.eu/public_html/nieuwnieuwsid/index.php on line 142

Deze 'id-s' worden gebruikt voor de verwerking van het script. Wanneer de gebruiker op de verzendknop drukt, wordt het script doorgestuurd naar bijvoorbeeld &id=aanmelden, en wordt, zoals je in het script al ziet, door middel van een $_GET['id'] == "aanmelden" de actie uitgevoerd.

Daarnaast krijg ik:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/nieuwni/domains/nieuwnieuws.eu/public_html/nieuwnieuwsid/index.php:24) in /home/nieuwni/domains/nieuwnieuws.eu/public_html/nieuwnieuwsid/index.php on line 54

Maar deze error kreeg ik niet toen ik jouw scriptje er niet in had staan. En registreren deed hij gewoon, en inloggen ook. Alleen toen ik de 2 md5-scriptjes erin had gezet deed hij het niet meer.
 
Www JdeRuijterNL

www JdeRuijterNL

27/09/2010 09:32:31
Quote Anchor link
Staat het wachtwoord in het database al opgeslagen als een MD5-codering?

Het gaat namelijk fout met het vergelijken van de ingevoerde md5(wachtwoord) en het wachtwoord in het database, die moet ook MD5 wezen!
 
Mitchel V

Mitchel V

27/09/2010 09:41:17
Quote Anchor link
Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
if ($_GET['pagina'] == "aanmelden" and $_GET['id'] == "aanmelden") {
    $gebruikersnaam = mysql_real_escape_string(stripslashes($_POST['gebruikersnaam']));
    $wachtwoord = stripslashes(mysql_real_escape_string($_POST['wachtwoord'])));
    $sql = "SELECT * FROM gebruikers WHERE gebruikersnaam='".$gebruikersnaam."' AND wachtwoord='".md5($wachtwoord)."'";
    $query = mysql_query($sql);
    if (mysql_num_rows($query) == 1) {
        echo 'Gelukt, Je bent ingelogd.<br>';
    }else{
        $row = mysql_fletch_array($query);
        echo 'Je bent nog niet ingelogd.<br>wachtwoord: '.$wachtwoord.' - Wachtwoord Database: '.$row['wachtwoord'].'<br>';
    }
}


Zelf even na kijken of ik het goed gedaan heb:)
Gewijzigd op 27/09/2010 09:44:12 door Mitchel V
 
Www JdeRuijterNL

www JdeRuijterNL

27/09/2010 09:42:18
Quote Anchor link
<knip> dubbel
Gewijzigd op 27/09/2010 09:42:35 door www JdeRuijterNL
 
Mario Onbekend

Mario Onbekend

27/09/2010 09:43:39
Quote Anchor link
@Mitchel V:
Bedankt, ik zal het proberen!

@OverdatumpuntNL:
Het invoeren van de md5 is geen probleem, dat is simpel te doen met md5($wachtwoord). Het is precies hoe jij het zegt, de vergelijking gaat niet goed.
UPDATE: Dat betekent dus dat het wachtwoord al in md5 in de database staat.

Toevoeging op 27/09/2010 09:51:44:

@Mitchel V:
Hij stuurt mij net weer naar die } else { toe, wat betekent: het script snapt het dan nog niet :P

Toevoeging op 27/09/2010 10:01:03:

Wow dit is echt heel grappig! Ik kwam per ongeluk bij mijn vorige 'hulpvraag' terecht, en daar had iemand geplaatst dat ik de structuur van de database moest controleren. (Ik dacht dat dat dit topic was, en dat iemand het op deze vraag had geantwoordt!)

Dus ik kijken bij de databasestructuur, en ik zie dat ik bij het veld 'wachtwoord' nog een varchar(20) had staan. Nou lijkt mij dit niet echt logisch voor een md5, dus ik heb het aangepast naar varchar(50).

Het verkeerde bericht in het verkeerde topic, heeft mij dus de GOEDE OPLOSSING GEBRACHT! Geweldig!

Allemaal bedankt voor jullie reacties!

UPDATE: Ik heb gelijk van de gelegenheid gebruik gemaakt, en het wachtwoord eerst 2x 'gemd5-t' en daarna nog een SHA1 over heen gegooid!
Gewijzigd op 27/09/2010 10:08:17 door Mario Onbekend
 
Mitchel V

Mitchel V

27/09/2010 10:54:29
Quote Anchor link
gebruik gewoon sha512? :)

Als je mijn voorbeeld had gebruikt had je ook gezien dat de pass in de database korter is dan de md5 wachtwoord die wordt ingevoerd.
Gewijzigd op 27/09/2010 10:56:57 door Mitchel V
 



Overzicht Reageren

Get Adobe Flash player