Ik probeer een loginsysteem te maken maar ik krijg steeds dezelfde foutmelding : Oooooeeeps! Er is iets fout gelopen bij de registratie waardoor je niet bent geregistreerd! Gebeurt dit meermaals neem dan contact op.

Hieronder plaats ik mijn codes:

<--- MySQL Code: --->
CREATE TABLE IF NOT EXISTS `logins` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` text COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `date_joined` date NOT NULL,
  `userName` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `firstName` text COLLATE utf8_unicode_ci NOT NULL,
  `lastName` text COLLATE utf8_unicode_ci NOT NULL,
  `day` text COLLATE utf8_unicode_ci NOT NULL,
  `month` text COLLATE utf8_unicode_ci NOT NULL,
  `year` text COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;


<--- index.php --->

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/main.css" />
        <link rel="shortcut icon" href="images/favicon.png" type="image/png">
        <title>BrowserGame</title>
    </head>
    <body>
        <div id="header">
            <img src="images/logo.png" class="left" />
            <div class="right">
                <table>
                    <tr>
                    <form method="post" action="login.php" style="position:fixed;">
                        <td><label for="email">Email: </label></td>
                        <td><input type="text" name="email" class="form_boxText"/></td>
                        
                        <td><label for="email">Wachtwoord: </label></td>
                        <td><input type="password" name="pass" class="form_boxText"/></td>
                        
                        <td><button type="submit" name="loginButton" class="button_login" value="Login">Login</button></td>
                    </form>
                    </tr>
                </table>
            </div>
        </div>
        <div id="body">
            <table border="0" align="center">
                <tr>
                <!-- Left container -->             
                    <td width="1000">
                        
                    </td>
                    
                <!-- Right container -->
                    <td width="1000">
                        
                    </td>
                </tr>
                
                <tr>
                <!-- Left content -->
                    <td height="450">
                        <img src="images/connecting.png" width="254" height="352" />
                    </td>
                    
                <!-- Right content -->
                    <td height="345">
                        <table border="0" align="center">
                            <tr>
                                <td />
                                <td><h2>Start snel met ons spel!</h2></td>
                            </tr>
                            <form method="post" action="signup.php">
                            <tr>
                                 <td>
                                     <label for="userName">Gebruikersnaam: </label>
                                 </td>
                                 
                                 <td>
                                     <input type="text" name="userName" class="form_boxText"/>
                                 </td>
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                 <td>
                                     <label for="firstName">Voornaam: </label>
                                 </td>
                                 
                                 <td>
                                     <input type="text" name="firstName" class="form_boxText"/>
                                 </td>
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                 <td>
                                     <label for="lastName">Achternaam: </label>
                                 </td>
                                 
                                 <td>
                                     <input type="text" name="lastName" class="form_boxText"/>
                                 </td>                                
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                 <td>
                                     <label for="email">Email: </label>
                                 </td>
                                 
                                 <td>
                                     <input type="text" name="email" class="form_boxText"/>
                                 </td>                             
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                 <td>
                                     <label for="password">Wachtwoord: </label>
                                 </td>
                                 
                                 <td>
                                     <input type="password" name="password" class="form_boxText"/>
                                 </td>     
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                 <td>
                                     <label for="dob">Geboortedatum: </label>
                                 </td>
                                 
                                 <td>
                                     <select name="day" class="form_boxText">
                                         <option value="0" selected="1">Day</option>
                                         <option value="1">1</option>
                                         <option value="2">2</option>
                                         <option value="3">3</option>
                                         <option value="4">4</option>
                                         <option value="5">5</option>
                                         <option value="6">6</option>
                                         <option value="7">7</option>
                                         <option value="8">8</option>
                                         <option value="9">9</option>
                                         <option value="10">10</option>
                                         <option value="11">11</option>
                                         <option value="12">12</option>
                                         <option value="13">13</option>
                                         <option value="14">14</option>
                                         <option value="15">15</option>
                                         <option value="16">16</option>
                                         <option value="17">17</option>
                                         <option value="18">18</option>
                                         <option value="19">19</option>
                                         <option value="20">20</option>
                                         <option value="21">21</option>
                                         <option value="22">22</option>
                                         <option value="23">23</option>
                                         <option value="24">24</option>
                                         <option value="25">25</option>
                                         <option value="26">26</option>
                                         <option value="27">27</option>
                                         <option value="28">28</option>
                                         <option value="29">29</option>
                                         <option value="30">30</option>
                                         <option value="31">31</option>
                                     </select>
                                     
                                     <select name="month" class="form_boxText">
                                         <option value="0" selected="1">Month</option>
                                         <option value="1">Jan</option>
                                         <option value="2">Feb</option>
                                         <option value="3">Mar</option>
                                         <option value="4">Apr</option>
                                         <option value="5">May</option>
                                         <option value="6">Jun</option>
                                         <option value="7">Jul</option>
                                         <option value="8">Aug</option>
                                         <option value="9">Sep</option>
                                         <option value="10">Oct</option>
                                         <option value="11">Nov</option>
                                         <option value="12">Dec</option>
                                     </select>
                                     
                                     <select name="year" class="form_boxText">
                                         <option value="0" selected="1">Year</option>
                                         <option value="2014">2014</option>
                                         <option value="2013">2013</option>
                                         <option value="2012">2012</option>
                                         <option value="2011">2011</option>
                                         <option value="2010">2010</option>
                                         <option value="2009">2009</option>
                                         <option value="2008">2008</option>
                                         <option value="2007">2007</option>
                                         <option value="2006">2006</option>
                                         <option value="2005">2005</option>
                                         <option value="2004">2004</option>
                                         <option value="2003">2003</option>
                                         <option value="2002">2002</option>
                                         <option value="2001">2001</option>
                                         <option value="2000">2000</option>
                                         <option value="1999">1999</option>
                                         <option value="1998">1998</option>
                                         <option value="1997">1997</option>
                                         <option value="1996">1996</option>
                                         <option value="1995">1995</option>
                                         <option value="1994">1994</option>
                                         <option value="1993">1993</option>
                                         <option value="1992">1992</option>
                                         <option value="1991">1991</option>
                                         <option value="1990">1990</option>
                                         <option value="1989">1989</option>
                                         <option value="1988">1988</option>
                                         <option value="1987">1987</option>
                                         <option value="1986">1986</option>
                                         <option value="1985">1985</option>
                                         <option value="1984">1984</option>
                                         <option value="1983">1983</option>
                                         <option value="1982">1982</option>
                                         <option value="1981">1981</option>
                                         <option value="1980">1980</option>
                                         <option value="1979">1979</option>
                                         <option value="1978">1978</option>
                                         <option value="1977">1977</option>
                                         <option value="1976">1976</option>
                                         <option value="1975">1975</option>
                                         <option value="1974">1974</option>
                                         <option value="1973">1973</option>
                                         <option value="1972">1972</option>
                                         <option value="1971">1971</option>
                                         <option value="1970">1970</option>
                                         <option value="1969">1969</option>
                                         <option value="1968">1968</option>
                                         <option value="1967">1967</option>
                                         <option value="1966">1966</option>
                                         <option value="1965">1965</option>
                                         <option value="1964">1964</option>
                                         <option value="1963">1963</option>
                                         <option value="1962">1962</option>
                                         <option value="1961">1961</option>
                                         <option value="1960">1960</option>
                                         <option value="1959">1959</option>
                                         <option value="1958">1958</option>
                                         <option value="1957">1957</option>
                                         <option value="1956">1956</option>
                                         <option value="1955">1955</option>
                                         <option value="1954">1954</option>
                                         <option value="1953">1953</option>
                                         <option value="1952">1952</option>
                                         <option value="1951">1951</option>
                                         <option value="1950">1950</option>
                                         <option value="1949">1949</option>
                                         <option value="1948">1948</option>
                                         <option value="1947">1947</option>
                                         <option value="1946">1946</option>
                                         <option value="1945">1945</option>
                                         <option value="1944">1944</option>
                                         <option value="1943">1943</option>
                                         <option value="1942">1942</option>
                                         <option value="1941">1941</option>
                                         <option value="1940">1940</option>
                                         <option value="1939">1939</option>
                                         <option value="1938">1938</option>
                                         <option value="1937">1937</option>
                                         <option value="1936">1936</option>
                                         <option value="1935">1935</option>
                                         <option value="1934">1934</option>
                                         <option value="1933">1933</option>
                                         <option value="1932">1932</option>
                                         <option value="1931">1931</option>
                                         <option value="1930">1930</option>
                                         <option value="1929">1929</option>
                                         <option value="1928">1928</option>
                                         <option value="1927">1927</option>
                                         <option value="1926">1926</option>
                                         <option value="1925">1925</option>
                                         <option value="1924">1924</option>
                                         <option value="1923">1923</option>
                                         <option value="1922">1922</option>
                                         <option value="1921">1921</option>
                                         <option value="1920">1920</option>
                                         <option value="1919">1919</option>
                                         <option value="1918">1918</option>
                                         <option value="1917">1917</option>
                                         <option value="1916">1916</option>
                                         <option value="1915">1915</option>
                                         <option value="1914">1914</option>
                                         <option value="1913">1913</option>
                                         <option value="1912">1912</option>
                                         <option value="1911">1911</option>
                                         <option value="1910">1910</option>
                                         <option value="1909">1909</option>
                                         <option value="1908">1908</option>
                                         <option value="1907">1907</option>
                                         <option value="1906">1906</option>
                                         <option value="1905">1905</option>
                                     </select>
                                 </td>   
                            </tr>
                            
                            <tr></tr>
                            
                            <tr>
                                <td></td>
                                 <td>
                                     <button type="submit" value="Register" name="registerButton" class="button_register">Registreren</button>
                                 </td>     
                            </tr>
                            </form>
                        </table>
                    </td>
                </tr>
                <tr>
                </tr>
            </table>
        </div>
    </body>
    
</html>


<--- login.php --->

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/main.css" />
        <link rel="shortcut icon" href="images/favicon.png" type="image/png">
        <title>Browsergame</title>
    </head>
    <body>
        <div id="header">
            <img src="images/logo.png" class="left" />
            <div class="right">
                <table>
                    <tr>
                    <form method="post" action="login.php" style="position:fixed;">
                        <td><label for="email">Email: </label></td>
                        <td><input type="text" name="email" class="form_boxText"/></td>
                        
                        <td><label for="email">Pass: </label></td>
                        <td><input type="password" name="pass" class="form_boxText"/></td>
                        
                        <td><button type="submit" name="loginButton" class="button_login" value="Login">Login</button></td>
                    </form>
                    </tr>
                </table>
            </div>
        </div>
        <div id="body" style="padding-left:25%;">
            <table border="0" align="center">                
                <tr>
                <!-- content -->
                    <td height="693" align="center">
                        <?php require 'config/funcs.php'; login(); ?>
                    </td>
                </tr>
            </table>
        </div>
    </body>
    
</html>


<--- signup.php --->

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/main.css" />
        <link rel="shortcut icon" href="images/favicon.png" type="image/png">
        <title>Browsergame</title>
    </head>
    <body>
        <div id="header">
            <img src="images/logo.png" class="left" />
            <div class="right">
                <table>
                    <tr>
                    <form method="post" action="login.php" style="position:fixed;">
                        <td><label for="email">Email: </label></td>
                        <td><input type="text" name="email" class="form_boxText"/></td>
                        
                        <td><label for="email">Wachtwoord: </label></td>
                        <td><input type="password" name="pass" class="form_boxText"/></td>
                        
                        <td><button type="submit" name="loginButton" class="button_login" value="Login">Login</button></td>
                    </form>
                    </tr>
                </table>
            </div>
        </div>
        <div id="body" style="padding-left:25%;">
            <table border="0" align="center">                
                <tr>
                <!-- content -->
                    <td height="693" align="center">
                        <?php require 'config/funcs.php'; signup(); ?>
                    </td>
                </tr>
            </table>
        </div>
    </body>
    
</html>


<--- funcs.php (ik denk dat hier het probleem zit) --->

<?php
error_reporting('NOTICE');

require 'config/mysql.php';

function login() {
    $email = $_POST['email'];
    $password = $_POST['password'];
    
    $query = mysql_query("SELECT * FROM `logins` WHERE `email`='$email' AND `password`='$password'");
    
    $errors = array();
    
    if (empty($email)) {
        $errors[] = 'The email textbox cannot be blank/has to be valid.';
    }
    
    if (empty($password)) {
        $errors[] = 'The password textbox cannot be blank.';
    }    

    if (strlen($pass) > 20) {
        $errors[] = 'The password textbox cannot have characters longer than 20.';
    }

    if ($errors==true) {
        foreach ($errors as $error) {
            echo $error.'<br />';
        }
    } else {
        if (mysql_num_rows($query)==true) {
            echo 'Login Successful.';
        } else {
            echo 'Login failed.';
        }
    }

}

function signup() {
    $userName = $_POST['userName'];
    $firstName = $_POST['firstName'];
    $lastName = $_POST['lastName'];
    $email = $_POST['email'];
    $day = $_POST['day'];
    $month = $_POST['month'];
    $year = $_POST['year'];
    $password = $_POST['password'];
    
    $query = mysql_query("SELECT * FROM `logins` WHERE `email`='$email' AND `password`='$password' AND `userName`='$userName' AND `firstName`='$firstName' AND `lastName`='$lastName' AND `day`='$day' AND `month`='$month' AND `year`='$year'");
    
    $errors = array();
    
    if (empty($userName)) {
        $errors[] = 'Je gebruikersnaam moet volledig.';
    }
    
    if (empty($firstName)) {
        $errors[] = 'Je voornaam moet volledig zijn.';
    }
    
    if (empty($lastName)) {
        $errors[] = 'Je achternaam moet volledig zijn.';
    }
    
    if (empty($email)) {
        $errors[] = 'Je email moet volledig zijn.';
    }
    
    if (empty($day)) {
        $errors[] = 'Je moet een dag ingeven.';
    }
    
    if (empty($month)) {
        $errors[] = 'Je moet een maand ingeven.';
    }
    
    if (empty($year)) {
        $errors[] = 'Je moet een jaar ingeven.';
    }
    
    if (empty($password)) {
        $errors[] = 'Je wachtwoord moet volledig zijn.';
    }

    if (strlen($pass) > 20) {
        $errors[] = 'Je wachtwoord kan niet langer dan 20 tekens zijn.';
    }

    if ($errors==true) {
        foreach ($errors as $error) {
            echo $error.'<br />';
        }
    } else {
        if (mysql_num_rows($query)==true) {
            echo 'Welkom bij ons spel, start nu.';
        } else {
            echo 'Oooooeeeps! Er is iets fout gelopen bij de registratie waardoor je niet bent geregistreerd! Gebeurt dit meermaals neem dan contact op.';
        }
    }

}

?>


Ik hoop dat iemand mij hier mee kan helpen!


Christophe
mysql_num_rows kan geen true geven.
En waarom sla je je password ongecodeerd op?
Verder ben je behoorlijk hackbaar met het ontbreken van mysql_real_escape_string

Kijk liever naar de functies van mysqli of PDO i.p.v. die mie van mysql die binnenkort verleden tijd zijn.
Wat moet ik dan aanpassen?
Als je wilt kijken of een record bestaat, dan kan je beter vergelijken met 1 i.p.v. true als boolean.

Allereerste zou ik goede foutafhandeling op je queries bouwen, en let er ook op dat je variabelen buiten quotes zijn.

Dan zou ik je zeker kunnen aanraden om je $_POST (en e.v.t. toekomstige $_GET en $_COOKIE) variabelen die je in je query gebruikt, te escapen met mysql_real_escape_string(), plus in het achterhoofd houden dat het weinig nut heeft om deze in een losse variabele op te slaan ($username, $email etc..).

Daarna raad ik aan om een goede encryptie voor je wachtwoorden te gebruiken, met als aanrader bcrypt. Je wilt niet dat de wachtwoorden uit kunnen lekken, met groot gevaar voor je leden.

Dan kan je kijken naar je HTML, want tabellen gebruiken is niet meer van deze tijd, tenzij het om een overzichtlijst gaat.
Ben nog niet zo ervaren met php zou je kunnen zeggen wat ik aan de query moest aanpassen.
Foutafhandeling toevoegen. Ik heb zelfs een link geplaatst in mijn post. En daarna even de controle van mysql_num_rows.
Ok

[size=xsmall]Toevoeging op 29/06/2014 22:03:21:[/size]

Ik snap niets van de foutafhandeling zou je een script kunnen sturen?
Het wordt hier in enkele pagina's uitgelegd?

Probeer eerst gewoon eens wat, en als het niet lukt, laat dan eens zien wat je hebt.
Maar ik snap er gewoon niets van.
Plaats een vacature, als je wilt dat het kant en klaar wordt opgeleverd.
Of als je het wel zelf wilt doen/leren: tijd investeren en de basisbeginselen leren (bv http://www.phptuts.nl/view/39/).

Die HTML-code kan overigens een heel stuk korter ipv bijna 100 regels voor al die jaartallen (met een stukje php-code) en ook de dagen.

Je controleert nergens of de datum wel kan bestaan (30 februari 1999 is mogelijk).

**knip** op 29/06/2014 22:09:51

Maar ik snap er gewoon niets van.

Dan ben ik benieuwd, wat is je kennis, en wat heb je tot nu toe zelf al eigenhandig gemaakt in de PHP-wereld?

Reageren