Register Script error

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pim Willems

pim Willems

04/12/2010 15:34:33
Quote Anchor link
Hallo allemaal,

Ik ben net begonnen met php en druk bezig met een user systeem werkend te krijgen. Nu heb ik een register functie. Maar wanneer ik deze invul zegt hij dat alles goed gaat, maar ondertussen wordt mijn database niet gevult. De site staat op : http://illzgaming.eu/informatica/register.php. Hoe kan dit?

Dit is mijn code:

Register pagina
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
            <form action="register-verwerk.php" method="post">
                Gewenste gebruikersnaam : <input type="text" name="username" /> <br />
                Gewenste wachtwoord : <input type="password" name="password" /> <br />
                Uw email adres : <input type="text" name="email" /> <br /><br />
                <input type="submit" value="Registreren" /> <input type="reset" value="Leeg Velden" />
            </form>    


Register verwerk pagina
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
<?php include "database.php"; ?>
<html>
    <head>
        <title>t</title>
    </head>
    <body>
        <p>
            <?php
                $username
=$_POST["username"];
                $password=$_POST["password"];
                $email=$_POST["email"];
                
                if ($username=="" or $password=="" or $email="")
                {

                    echo("Je hebt een veld niet ingevuld, je zult het opnieuw moeten proberen.<br>\n");
                    $doorgaan=false;
                }


                $sql="INSERT into users (username, password, email) VALUES ('$username','$password','$email')";
                $result=mysql_db_query('$dbnaam','$sql','$verbinding');
                $fout=mysql_errno($verbinding);
                if ($fout != 0)
                    {

                        echo ("Er is een fout opgetreden. De gegevens zijn niet in de database opgeslagen");
                        mysql_close($verbinding);
                    }

                else
                    {
                        echo ("Je registratie is gelukt! Je kunt nu inloggen");
                        mysql_close($verbinding);
                    }

                
            ?>

        </p>
    </body>
</html>


Database connect
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
<?php
    
    // verander deze gegevens om een database te selecteren
    $host="localhost";        // vul hier je host in
    $dbnaam="dbnaan";        // vul hier je database naam in
    $gebruiker="gebruiker";        // vul hier je database username in
    $wachtwoord="test";        // vul hier je database user wachtwoord in
    
    // verander hieronder niks

    error_reporting(E_ALL);    
    $verbinding=mysql_connect("$host","$gebruiker","$wachtwoord");     //laat hem verbinden met de mysql database
    if (!$verbinding) die ("<br />Er kan geen verbinden worden gemaakt de mysql database, script afgebroken.");
    // de regel hierboven geeft een eigen error, wanneer hij geen verbinding met de database kan maken
?>


MySQL database
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE TABLE `users` (
`number` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`password` VARCHAR( 32 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
)
Gewijzigd op 04/12/2010 15:49:17 door Pim Willems
 
PHP hulp

PHP hulp

27/02/2024 21:42:15
 
Matthias nvt

Matthias nvt

04/12/2010 15:51:08
Quote Anchor link
Als ik op jouw website het probeer krijg ik de foutmelding:
Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in /home/***/informatica/register-verwerk.php on line 25

Als je kijkt bij http://nl2.php.net/mysql_db_query staat er het volgende over mysql_db_query: This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.

Als je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result=mysql_db_query('$dbnaam','$sql','$verbinding');

vervangt door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result=mysql_query('$dbnaam','$sql','$verbinding');

Zou het m.i. moeten werken.


Toevoeging: Je invoergegevens worden nog letterlijk in de db gestopt.
Nu is ie niet beveiligd tegen SQL-injectie.
Dit kan je beveiligen dmv mysql_real_escape_string()
Gewijzigd op 04/12/2010 16:02:48 door Matthias nvt
 
Pim Willems

pim Willems

04/12/2010 15:56:26
Quote Anchor link
Bedankt,

Dit had ik ook al gezien en geprobeerd, maar toen kwam ik op het volgende:
Wrong parameter count for mysql_query() in /home/deb34939/domains/illzgaming.eu/public_html/informatica/register-verwerk.php on line 25

Nu dacht ik aan een splitsing van de query. Maar hoe zou je dit moeten doen ? Ik weet dat ik deze 2 moet gebruiken:
mysql_query()
mysql_select_db()

Maar wat moet waar? En hoe combineer ik deze?
 
Matthias nvt

Matthias nvt

04/12/2010 16:06:21
Quote Anchor link
Sorry, ik gaf de verkeerde code ;)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result=mysql_query($sql);
moet het zijn

En let ook op SQL-injectie
 
Noppes Homeland

Noppes Homeland

04/12/2010 16:07:45
Quote Anchor link
1. http://www.php.net/mysql_connect
2. http://www.php.net/mysql_select_db
3. http://www.php.net/mysql_query
4. http://www.php.net/mysql_fetch_assoc

x.http://www.php.net/mysql_error

Voor de rest moet je goed in de gaten houden wat de functies aan waarden terug kunnen geven


En variabelen plaats je niet tussen quotes
 
Pim Willems

pim Willems

04/12/2010 16:18:10
Quote Anchor link
Dit heb ik allemaal toegepast.
De verwerk is nu:
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
<?php
                $username
=$_POST["username"];
                $password=$_POST["password"];
                $email=$_POST["email"];
                
                if ($username=="" or $password=="" or $email="")
                {

                    echo("Je hebt een veld niet ingevuld, je zult het opnieuw moeten proberen.<br>\n");
                    $doorgaan=false;
                }


                $sql="INSERT into users (username, password, email) VALUES ('$username','$password','$email')";
                $result=mysql_query($sql);
                $fout=mysql_errno($verbinding);
                if ($fout != 0)
                    {

                        echo ("Er is een fout opgetreden. De gegevens zijn niet in de database opgeslagen");
                        mysql_close($verbinding);
                    }

                else
                    {
                        echo ("Je registratie is gelukt! Je kunt nu inloggen");
                        mysql_close($verbinding);
                    }

                
            ?>


en de database connect is nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
    // verander deze gegevens om een database te selecteren
    $host="localhost";                // vul hier je host in
    $dbnaam="dbnme";            // vul hier je database naam in
    $gebruiker="dbuser";        // vul hier je database username in
    $wachtwoord="dbpass";                // vul hier je database user wachtwoord in
    
    // verander hieronder niks
    error_reporting(E_ALL);    
    $verbinding=mysql_connect($host,$gebruiker,$wachtwoord);     //laat hem verbinden met de mysql database
    if (!$verbinding) die ("<br />Er kan geen verbinden worden gemaakt de mysql database, script afgebroken.");
    // de regel hierboven geeft een eigen error, wanneer hij geen verbinding met de database kan maken


En nu geeft hij een connectie error. Maar dit hoort helemaal niet zo te zijn, anders had in de database connecter hij al een error moeten geven toch ?
 
Noppes Homeland

Noppes Homeland

04/12/2010 16:24:22
Quote Anchor link
En nu nog afleveren te pas en te onpas de functie die te gebruiken! Pas fatsoenlijke foutafhandleing toe opdat de rest van de code ook nog uitgevoerd kan worden.
 
Yea Rupie

Yea Rupie

04/12/2010 16:30:22
Quote Anchor link
Sinterklaas heeft een nieuwe php-functie meegenomen naar Nederland:
EMPTY()
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 if (empty($username) or empty($password) or empty($email))
?>
 
Jasper DS

Jasper DS

04/12/2010 18:17:29
Quote Anchor link
Yea Rupie op 04/12/2010 16:30:22:
Sinterklaas heeft een nieuwe php-functie meegenomen naar Nederland:
EMPTY()
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 if (empty($username) or empty($password) or empty($email))
?>



is toch gewoon hetzelfde ams $var == ""
 
- SanThe -

- SanThe -

04/12/2010 18:24:33
Quote Anchor link
Ik zie je nergens een database selecteren.

Matthias nvt op 04/12/2010 16:06:21:

En let ook op SQL-injectie
 



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.