Register Script error
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)
1
2
3
4
5
6
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>
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)
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
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>
<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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
?>
// 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)
1
2
3
4
5
6
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 ,
)
`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
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
vervangt door:
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
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?
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
1. 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
De verwerk is nu:
Code (php)
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
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);
}
?>
$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)
1
2
3
4
5
6
7
8
9
10
11
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
$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 ?
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 op 04/12/2010 16:30:22:
is toch gewoon hetzelfde ams $var == ""
Matthias nvt op 04/12/2010 16:06:21:
En let ook op SQL-injectie
En let ook op SQL-injectie