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?
SELECT * FROM Accounts where naam='haha

[size=xsmall]Toevoeging op 04/02/2015 15:59:24:[/size]

Dat krijg ik te zien
Dan mist je wachtwoord in de querie.
Ik gok dat je op een verkeerde plek kijkt.

Gezien je bestandsnamen kan ik me dat best wel indenken, dus hernoem ze eens naar logische namen.
hm, als ik nu zet:
SELECT * FROM Accounts where naam=$naam AND wachtwoord=$wachtwoord;
Kan het dan opgelost zijn?
Dat had je toch al?
Let overigens wel op je quotes.
WHERE kan je het best in hoofdletters plaatsen, gezien het een MySQL-functie is.
Ohja ik had dit inderdaad al!!
Ik vraag me af of het niet door dit stukje komt:

        $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.'; 


Maar om nou een wachtwoord mee te geven in een sessie... nee XD

of zit er toch een fout hierin?:

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

Controleer je $controle. Die geeft aan hoeveel account er gevonden zijn aan de hand van de ingevulde inloggegevens. Als alles goed is zou dat dan een 1 moeten teruggeven.
echo, print, var_dump etc...
Hij geeft een 0 aan maar verbind me wel door
Dan kloppen de gegevens niet in de query. Hij zou dan niet verder mogen gaan.
Ik vind het wel vreemd dat je controleert of het aantal geen 3 is?

Ik zou het zo doen:

  $controle = mysql_num_rows($uitvoer); //Uitvoer van inlog
            if($controle == 1) {

Zo kan er maar met één overeenkomend record worden ingelogd, waarvan de gebruikersnaam en wachtwoordhash overeenkomen met wat er ingevuld is.

Reageren