registreer script

Status
Niet open voor verdere reacties.

pkmartijn

Gebruiker
Lid geworden
18 aug 2011
Berichten
163
beste,
ik heb een registreer script gemaakt:
PHP:
<?
include ("gegevens.php");
$errors = '';
if($_SERVER['REQUEST_METHOD'] == "POST"){
	if (empty($_POST['gebruikersnaam'])) {
		echo ("Je hebt het veld gebruikersnaam niet ingevuld.");
	}elseif (empty($_POST['wachtwoord'])){
		echo ("je hebt geen wachtwoord ingevuld.");
	}elseif (empty($_POST['email'])){
		echo ("je heb geen email ingevoerd.");
	}else{
		$bQuery = mysql_query("SELECT * FROM users WHERE gebruikersnaam = '" . mysql_real_escape_string($gebruikersnaam) . "'") or die(mysql_error());
		if(mysql_num_rows($bQuery) > 0){
		$errors = $errors . 'Deze gebruikersnaam bestaat al!<br />';
		}
		if($errors != ''){
		echo '<div id="error">' . $errors . '</div>';
		}else{
			$sql= mysql_query ("INSERT INTO users
							gebruikersnaam, wachtwoord, email
							VALUES ('$gebruikersnaam','$wachtwoord','$email')");
			echo("u word in het systeem geschreven.");
		}
	}
}else{
?>
oeps foutje,  klik <a href="test.html">hier</a> om terug te gaan.
<?
}
?>
maar als ik registreer zegt hij u word in het systeem geschreven maar er komt niks bij in database.
weet iemand wat het is?
 
Ik vermoed dat dat komt omdat je geen gevevens kunt lezen zonder dat je $_POST, $_GET of $_REQUEST gebruikt bij je sql script..
En tevens ben je de ( en de ) vergeten bij gebruikersnaam, wachtwoord, email

$sql= mysql_query ("INSERT INTO users
(gebruikersnaam, wachtwoord, email)
VALUES ('$_POST[gebruikersnaam]','$_POST[wachtwoord]','$_POST')");


althans dat is mijn gedachte..
 
Laatst bewerkt:
TIP:
Gebruik nooit de $_GET of $_POST of $_REQUEST gegevens direkt in een query
Zorg er voor dat je de gegevens eerst schoonmaakt en dat is wat je verwacht!
 
hierbij een insert query op de manier hoe ik hem zelf doe. Daarnaast moet je zoals phobia zegt eigenlijk je gegevens schoonmaken voor je ze naar de database stuurd i.v.m. sql injection.

hierbij de code:

PHP:
$gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
$wachtwoord= mysql_real_escape_string($_POST['wachtwoord']);
$email = mysql_real_escape_string($_POST['email']);

$query= "INSERT INTO users
             (gebruikersnaam, 
              wachtwoord, 
              email
              ) VALUES (
              '$gebruikersnaam',
              '$wachtwoord',
              '$email')";
$result = mysql_query($query);

// echo $query; //toon jou query!

Eventueel als je toch nog je eigen manier van een insert query wilt:

PHP:
sql= mysql_query ("INSERT INTO users(
                            gebruikersnaam, wachtwoord, email)
                            VALUES ('$gebruikersnaam','$wachtwoord','$email')");

je was namelijk de haakjes vergeten bij de kolommen.

Succes ermee!
 
Laatst bewerkt:
Niet alleen sql injection. Maar als je bv een een getal verwacht wat de gebruiker had moeten invoeren, controleer dan eerst dat het ook een getal is.
Je moet er van uit gaan dat je ook bezoekers krijgt die je systeem gaan testen.
Dus zorg ervoor dat voor je gegevens naar je database stuurt, dat het is wat je wat je nodig hebt.
Als je alleen letters verwacht controleer dat het ook alleen letters zijn.
Het is lastig, maar kijk een naar het gebruik van regex.
 
Phobia je hebt daar inderdaad een punt in. ik zal eens kijken naar regex. Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan