Ik heb nu een beveiligde registratiepagina, maar echter na het invullen en ik druk op registreren kom ik op een errorpagina uit.

Heb het script meermaals doorlopen maar zie die fout niet, wellicht zien jullie wat apparts?



<?php

//Defineer functie

if($_SERVER['REQUEST_METHOD'] == 'submit') // Controle of er op de knop is geklikt.
{
    include_once 'connect.php'; // Connectie db.

    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['zelfinfo']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail'])) // Controle op invoeren
    {
        if(($_POST['password']) == ($_POST['passwordc'])) // Controle of controle pw overeenkomt met echte pw.
        {
            
            include_once 'uwx3g.php';            // Connectie met salt page.
            $gebruikersnaam    = mysql_real_escape_string($_POST['gebruikersnaam']); //Data veilig maken voor sql injectie d.m.v. mysql_real.....
			$zelfinfo 		= mysql_real_escape_string($_POST['zelfinfo']);
            $password        = sha1(salt($_POST['password'])); //sha1 hash van pass. Inclusief salt.
            $mail            = mysql_real_escape_string($_POST['mail']);
            $sql = ("SELECT naam FROM Accounts WHERE naam='". $gebruikersnaam . "'"); // Controle op gebruikersnaam, zo ja een 1 else en 0 (zie controle bij de volgende if)
            $uitvoer = mysql_query($sql);        //($row = mysql_fetch_assoc($get))
            
            $controle = mysql_num_rows($uitvoer);
                
            if($controle == 0) // Als uitvoer is 0 registreren.
            {
                mysql_query("INSERT INTO Accounts (ID, naam, wachtwoord, xp, geld, zelfinfo, email, vipdagen, credits, monteur, bevoegdheid, datum, status) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . 0 . "','" . 1000 . "','" . $zelfinfo . "','" . $mail . "','" . 0 . "','" . 0 . "','" . 0 . "','" . 0 . "', '" . now() . "','" . 0 . "')"); // Gebruiker in db plaatsen.
                header('Refresh: 4; url= login_form.php');
                echo ('U bent succesvol aangemeld, u kunt nu inloggen.');
            }
            else
            {
                header('Refresh: 2; url=login_form.php');
                echo ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
            }    
        }
        else
        {
			                header('Refresh: 5; url=login_form.php');
            echo ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');  // Negatieve melding van ingevoerde gegevens.
        }
    }
    else
    {               
header('Refresh: 1; url=login_form.php');

        echo ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');  // Negatieve melding van ingevoerde gegevens.
    }
    
    

}


?>


De pagina waar de vakjes staan om in te vullen (registreren en inloggen) staan samen op http://testversie.site90.net/login_form.php dus daar moet er naartoe gestuurd worden.



P.S. Na het invullen en de errorpagina zie ik in de phpmyadmin dat het account niet aangemaakt is, dus hij verwerkt de gegevens niet o.i.d?

[size=xsmall]Toevoeging op 03/02/2015 20:42:59:[/size]

Ohja, en ik gebruik notepad++, is er ook nog een speciaal programma voor php? Iets wat misschien wat fijner en duidelijker werkt?
'" . now() . "' veranderen in alleen NOW()
now() is geen bestaande PHP-functie. Het is een MySQL-functie, dus moeten de quotes weg:


<?php //negeer deze regel, deze dient voor de kleurtjes
mysql_query("INSERT INTO Accounts (ID, naam, wachtwoord, xp, geld, zelfinfo, email, vipdagen, credits, monteur, bevoegdheid, datum, status) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . 0 . "','" . 1000 . "','" . $zelfinfo . "','" . $mail . "','" . 0 . "','" . 0 . "','" . 0 . "','" . 0 . "',NOW(),'" . 0 . "')"); // Gebruiker in db plaatsen.
?>
Jullie zijn geweldig!!
Hij werkt alleen maakt hij het wachtwoord anders.

Sorry :$$$$

I.p.v. "haha" als wachtwoord heeft hij dit gemaakt: "270884d58f5681e683db"

Komt waarschijnlijk door dit script:


<?php

function salt($pass, $salt="7dy23kl6yw4bd9x0k3", $str="")
{
    $pass = str_replace(" ", "", $pass);
    $pass = strrev($pass);

    $arr[0] = strlen($pass);
    $arr[1] = strlen($salt);
    
    while($arr[0] > $arr[1] + 1)
    {
        $salt = $salt.$salt;
        $arr[1] = strlen($salt);
    }

    $split_len = floor(max($arr) / (min($arr) - 1));
    
    $salt = explode(" ", chunk_split($salt, $split_len, " "));
    array_pop($salt);
    $salt = array_reverse($salt);
    
    $j = $arr[0] > count($salt) ? $arr[0] : count($salt);
    
    for($i=0; $i<$j; $i++)
    {
        if(isset($pass{$i}))    $str .= $pass{$i};
        if(isset($salt[$i]))    $str .= $salt[$i];
    }
    
    return $str;
}
?>


Ja, lijkt me ook logisch als je naar 2015 kijkt, en de vele nieuwsberichten van afgelopen jaren leest over uitgelekte en gehackte databases met wachtwoorden.

Dit doen ze niet voor niks, en ik zie geen reden om het te wijzigen.

Verder is het handig om je salt niet vrij te geven op het forum uit veiligheidsoverwegingen.
Ik wou testen of het ingegeven wachtwoord wel werkt namelijk "haha" toen ik tot de conclussie kwam dat ik alleen een gebruikersnaam in hoef te vullen en elk wachtwoord / elk woord die je maar wilt typen gepakt wordt :o je kan inloggen zonder wachtwoord... das ni goed

[size=xsmall]Toevoeging op 03/02/2015 22:46:09:[/size]

@aar heb dit script juist van hier haha, van die salt pagina snap ik helemaal niks. en alle accounts endergelijke die nu bestaan worden toch verwijdert en komt als het af is nieuwe server etc dus is nog weinig veiligheid tot noch toe nodig

    $sql = ("SELECT naam FROM Accounts WHERE naam='". $gebruikersnaam . "'");


Dat klopt, hier wordt niks gecontroleerd aan het wachtwoord. Je kan daarin met een AND vervolgen om te kijken of je wachtwoord goed is ingevuld. Vergeet dan niet om het ingevoerde wachtwoord door SHA1 te halen.


    $password = sha1(salt($_POST['password']));
    $sql = "SELECT naam FROM Accounts WHERE naam='".$gebruikersnaam."' AND password='"".$password.'");



[size=xsmall]Toevoeging op 03/02/2015 22:52:37:[/size]

Prospere Gaming op 03/02/2015 22:44:30

@aar heb dit script juist van hier haha, van die salt pagina snap ik helemaal niks.

Gelukkig staan er linkjes ind e code-blokken op het forum die je naar de PHP.net manual leiden. Enige basis-ervaring met PHP is wel gewenst.
Bij Login.php?
Zoja zal ik dat morgen doen en dan t laatste vraagje voor hier: die sha1/shalt o.i.d, is dat alleen om het wachtwoord in de database anders eruit te laten zien als dat het wachtwoord is? Of?
Bij het inloggen inderdaad, daar wordt immers gecontroleerd of je inloggegevens kloppen.

Verder is het wachtwoord omgezet naar een 'salt' en een sha1() encryptie die onomkeerbaar is. Niemand hoeft te weten welke wachtwoorden je gebruikers hebben ingevuld.
Oke ik ben zeer erg geholpen en leer elke dag meer!
Niet slecht voor in timmerman in opleiding vind ik zelf haha. Hierna snel een php cursus doen want vind het wel erg tof! Mijn dank is weer groot

[size=xsmall]Toevoeging op 04/02/2015 14:43:26:[/size]

Ok. de fout blijft. tot nu toe heb ik dit:

<?php
session_start();
if( $_SERVER['REQUEST_METHOD'] == 'POST')        // Controle of er op de knop is gedrukt.
{
          
    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password'])) // Controle of alles is ingevult.
    {
        include_once 'connect.php';            // Connectie met database.
        include_once 'uwx3g.php'; // Connectie salt page.

        $gebruikersnaam    = mysql_real_escape_string($_POST['gebruikersnaam']);  // Gevaren voor sql injectie weren dmv. mysql_real_.......
            $password = sha1(salt($_POST['password']));
    $sql = ("SELECT naam FROM Accounts WHERE naam='".$gebruikersnaam."' AND wachtwoord='".$password."'"); // Selecteer user waar de gebruiker overeenkomt met ingevoerde pas
        $uitvoer = mysql_query($sql);
        
        $controle = mysql_num_rows($uitvoer); //Uitvoer van inlog
            if($controle != 3)
            {
			$_SESSION['logged_in'] = true; 
            $_SESSION['gebruiker'] = $gebruikersnaam; 
            header('Refresh: 3; url=index.php'); 
            echo 'Je bent succesvol ingelogd. Je wordt doorgestuurd.'; 
            }
            else
            {
                header('Refresh: 2; url=login_form.php');
                exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
            }            
    }
    else
    {
        header('Refresh: 2; url=login_form.php');
        exit ('U heeft een van de gegevens niet goed ingevuld.');        // Negatieve melding van ingevoerde gegevens.
    }   
}
else
{
    header('Refresh: 2; url=login_form.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}
?>



In de sql heet gebruikersnaam: naam en wachtwoord: wachtwoord. misschien staat er ergens een x password verkeerd ofzo dat er daarom geen controle is?
Wat is het type en de grootte van het veld wachtwoord in de database?

Reageren