data gaat de database niet in
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
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
<?
include("nav.php");
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('$user','$pass','$email','$name','$subname','$country')";
echo "<center><br /><br /><br />";
// Connect to mysql
mysql_connect(localhost,root,security3);
@mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}
else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>
include("nav.php");
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('$user','$pass','$email','$name','$subname','$country')";
echo "<center><br /><br /><br />";
// Connect to mysql
mysql_connect(localhost,root,security3);
@mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}
else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>
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
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
<?
include("nav.php");
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('".$user."','".$pass."','".$email."','".$name."','".$subname."','".$country."')";
echo "<center><br /><br /><br />";
// Connect to mysql
mysql_connect(localhost,root,security3);
@mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}
else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>
include("nav.php");
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('".$user."','".$pass."','".$email."','".$name."','".$subname."','".$country."')";
echo "<center><br /><br /><br />";
// Connect to mysql
mysql_connect(localhost,root,security3);
@mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}
else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>
(niet getest)
$user = mysql_real_escape_string($_POST['user']);
gebruik echt mysql_real_escape_string. anders kan je onveilige user invoeren in de database laten vloeien.
verder gebruik ook overal include_once en require_once (met _once) erachter. en moeten die passwords niet worden opgeslagen met een hash eromheen.
en md5 is achterhaald gebruik dan minimaal md5.
waar ik zelf fan van ben is
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
?>
$user = $_POST['user'];
$pass = $_POST['pass'];
$pass2 = $_POST['pass2'];
$email = $_POST['email'];
$name = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
?>
Waarom? Omdat je geen flauw idee hebt of de variabelen wel bestaan en of ze wel veilig zijn. Weggooien die zooi, heb je niets aan. Tenzij je meer bugs in je systeem wilt hebben...
De INSERT-query lijkt iets op SQL, maar is het niet. Zie de eerste de beste database-handleiding, daar staat toch echt iets anders in. Danzij een paar vieze vuile gore backticks ` die iemand jou heeft aangeleerd, gaat het nu goed fout. Vergeet die sukkel die dat op zijn geweten heeft en ga nooit meer backticks ` of quotes ' rondom tabel- en kolomnamen zetten, dat kan niet, mag niet en werkt niet.
En verder haal je variabelen buiten de quotes, quotes staan om een string en een variabele is geen string.
Uiteraard ga je de input beveiligen, met mysql_real_escape_string(), en controleren of de query wel is gelukt. Zie de beginnerstutorials die hier op phphulp staan, zul je een hoop plezier aan beleven.
Ps. Wat is het idee achter de wachtwoordcontrole?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action="register.php" method="post">
Username:<br />
<input type="text" name="user"><br />
Password: <br />
<input type="text" name="pass"><br />
Password Verification:<br />
<input type="text" name="pass2"><br />
E-mail:<br />
<input type="text" name="email"><br />
Name:<br />
<input type="text" name="name"><br />
Last Name:<br />
<input type="text" name="subname"><br />
Country:<br />
<input type="text" name="country"><br />
<input type="submit" value="Register!">
Username:<br />
<input type="text" name="user"><br />
Password: <br />
<input type="text" name="pass"><br />
Password Verification:<br />
<input type="text" name="pass2"><br />
E-mail:<br />
<input type="text" name="email"><br />
Name:<br />
<input type="text" name="name"><br />
Last Name:<br />
<input type="text" name="subname"><br />
Country:<br />
<input type="text" name="country"><br />
<input type="submit" value="Register!">
Gewijzigd op 01/01/1970 01:00:00 door Sandy Cohen
Copiëer niet nutteloos $vars.
Let op sql-injection.
$vars buiten quotes houden.
Zet dit bovenin je script.
Gewijzigd op 01/01/1970 01:00:00 door dennis
Sandy Cohen schreef op 23.12.2008 19:06:
Goed, ik geloof je op je woord...ze bestaan wel, defined in index.php waar mensen de gegevens invullen
Waar staat het script? Zal ik de boel wel even hacken en dan zal ook direct blijken dat jouw zogenaamde variabelen niet bestaan.
Jij denkt dat ze bestaan, maar dat controleer je nergens en dus mag je aannemen dat ze niet bestaan. Zeker niet wanneer een grappenmaker de boel hackt!
Een goed script begint bij goede controles en goede foutafhandeling. Alles wat fout kan gaan, zal ook fout gaan. Die garantie heb je.
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen
Sandy Cohen schreef op 23.12.2008 19:21:
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen
Je gaat ook eerst een tijdje autorijden en dan neem je later nog wel eens les als je daar zin in hebt. Handig, doch levensgevaarlijk.
Sandy Cohen schreef op 23.12.2008 19:21:
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen
Dat wordt dan een legendarisch moment in de geschiedenis, je bent dan de eerste die dat voorelkaar krijgt.
Ik durf te wedden dat je dit niet gaat lukken, je gaat ergens een lek dat je zelf hebt gemaakt, over het hoofd zien. Dat is niets bijzonders, het is de normaalste zaak van de wereld, ga dan ook niet dromen dat jij deze fout niet maakt. Dat zou nog de allergrootste fout zijn die je kunt maken.
Kortom, begin bij de controles en foutafhandeling, dat is de basis.
Vanwaar de haat, ik wil alleen dit script te werken krijgen
Beetje domme opmerking, zoek het dan ook maar lekker zelf uit.
Prettige kerstdagen!
Heel leuk dat je php goed van buiten kent, heb ik ook respect voor. Maar vanaf post 1 zit je mijn code al afkraken, we kunnen niet allemaal meteen goed zien vanaf week 1. Ik vraag alleen of iemand weet wat er fout is aan de des betreffende code.
Ik denk dat Frank je wel duidelijk gemaakt heeft wat er mis is met je code. Je geeft echter niet de indruk dat je ook maar iets met zijn commentaar doet. Daar kan Frank niet zo goed tegen en wenst je daarom fijne feestdagen toe.
Ik doe wel iets met die informatie, heb ook handige dingen geleerd zoals het gebruik van mysql_real_escape_string() tegen injecties. Wil alleen een fix hebben voor mijn code en vraag daar hulp bij
Heb je de error reporting al bovenaan je script gezet (zie tip santhe)? Dit zou je op zijn minst een duidelijke fout moeten geven...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\xampp\htdocs\register.php on line 27
Notice: Use of undefined constant root - assumed 'root' in C:\xampp\htdocs\register.php on line 27
Notice: Use of undefined constant security3 - assumed 'security3' in C:\xampp\htdocs\register.php on line 27
?>
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\xampp\htdocs\register.php on line 27
Notice: Use of undefined constant root - assumed 'root' in C:\xampp\htdocs\register.php on line 27
Notice: Use of undefined constant security3 - assumed 'security3' in C:\xampp\htdocs\register.php on line 27
?>
Iets mis met de verbinding zelf?
Gewijzigd op 01/01/1970 01:00:00 door Sandy Cohen
Gooi het even op een codedump, de ubbparser kan niet met je code verweg zo te zien
Notice: Use of undefined constant root - assumed 'root' in C:\xampp\htdocs\register.php on line 27
Notice: Use of undefined constant security3 - assumed 'security3' in C:\xampp\htdocs\register.php on line 27
De foutmelding die je krijgt geeft aan dat je database gegevens niet gedefinieerd zijn...
Is het niet zo dat het eigenlijk dit moet zijn?
Als dit zo is, dan graag even rekening houden met het volgende:
1. Werk niet met de root user in je database
2. Post je wachtwoorden niet op fora, al helemaal niet je root wachtwoord
3. Het is in veel gevallen handiger om je database gegevens in een config bestandje te zetten, en dan via variabelen een verbinding te maken... Zoals bijvoorbeeld:
Overigens een ERG goed argument om foutafhandeling tijdens het bouwen aan te zetten, en al je acties via foutafhandeling af te vangen! Je had dan meteen gezien wat er aan de hand was...
Dus, bij het connecten doe je bijvoorbeeld:
Code (php)
1
2
3
2
3
<?php
$connection = mysql_connect($db_host, $db_user, $db_password) or die ("Could not connect to database server");
?>
$connection = mysql_connect($db_host, $db_user, $db_password) or die ("Could not connect to database server");
?>
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt