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

			<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

<?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

<?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

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 ,
)
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
$result=mysql_db_query('$dbnaam','$sql','$verbinding');

vervangt door:
$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()
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?
Sorry, ik gaf de verkeerde code ;)

$result=mysql_query($sql);
moet het zijn

En let ook op SQL-injectie
Dit heb ik allemaal toegepast.
De verwerk is nu:

<?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:

	// 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 ?
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.
Sinterklaas heeft een nieuwe php-functie meegenomen naar Nederland:
EMPTY()
<?php
if (empty($username) or empty($password) or empty($email))
?>
Yea Rupie op 04/12/2010 16:30:22

Sinterklaas heeft een nieuwe php-functie meegenomen naar Nederland:
EMPTY()
<?php
if (empty($username) or empty($password) or empty($email))
?>



is toch gewoon hetzelfde ams $var == ""
Ik zie je nergens een database selecteren.

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


En let ook op SQL-injectie



Reageren