username availability check
ik ben ent begonnen met een beetje PHP mySQL voor mijn profielwerkstuk maar loop nu tegen een probleempje aan.
ik krijg de volgende error
Parse error: syntax error, unexpected T_STRING, expecting '(' in /home/a4665314/public_html/registration.php on line 12
dit is de code:
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
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
<?php
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
$con =mysql_connect("$hostname","$username","$password");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("$username", $con);
if EXISTS (SELECT username FROM users WHERE username=$_POST['username'])
{
echo "username already in use";
}
if EXISTS (SELECT email FROM users WHERE email=$_POST['email'])
{
echo "email already in use";
}
else
{
$sql="INSERT INTO users (username, password, email)
VALUES('$_POST[username]','$_POST[password]','$_POST[email]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "registration completed";
}
}
echo "the passwords do not match";
}
else echo "invalid data";
?>
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
$con =mysql_connect("$hostname","$username","$password");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("$username", $con);
if EXISTS (SELECT username FROM users WHERE username=$_POST['username'])
{
echo "username already in use";
}
if EXISTS (SELECT email FROM users WHERE email=$_POST['email'])
{
echo "email already in use";
}
else
{
$sql="INSERT INTO users (username, password, email)
VALUES('$_POST[username]','$_POST[password]','$_POST[email]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "registration completed";
}
}
echo "the passwords do not match";
}
else echo "invalid data";
?>
ik weet niet of het op deze manier kan werken. maar het lijkt mij van wel
alvast bedankt
Gewijzigd op 21/04/2011 20:04:24 door Marijn Struijlaart
wat probeer je hier in vredesnaam te doen:
if EXISTS (
php variabelen dien je niet te quoten!!
En kijk op php.net van hoe het wel moet
http://www.php.net/mysql_query
http://www.php.net/mysql_error
http://www.php.net/mysql_fetch_assoc
Gewijzigd op 21/04/2011 20:17:50 door Noppes Homeland
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
if ($_POST['username'] && $_POST['password'] && $_POST['password2'] && $_POST['email'] )
{
if ($_POST['password' ]== $_POST['password2'])
{
if(($con =mysql_connect($hostname,$username,$password)) === false)
{
echo 'MAAK EEN NETTE FOUTAFHANDELING!';
}
else if ((mysql_select_db($username, $con)) === false)
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
$sql_get_username = "SELECT username
FROM users WHERE username= '".$_POST['username']."'
";
if(($result_get_username = mysql_query($sql_get_username)) === false)
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
else if(mysql_num_rows($result_get_username) == 1)
{
echo 'email already in use';
}
else
{
$sql_get_mail = "INSERT INTO users (username, password, email)
VALUES('".mysql_real_escape_string($_POST['username'])."','".mysql_real_escape_string($_POST['password'])."','".mysql_real_escape_string($_POST['email'])."')
";
if (!mysql_query($sql_get_mail))
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
else
{
echo "registration completed";
}
}
}
else
{
echo 'the passwords do not match';
}
}
else
{
echo 'invalid data';
}
?>
if ($_POST['username'] && $_POST['password'] && $_POST['password2'] && $_POST['email'] )
{
if ($_POST['password' ]== $_POST['password2'])
{
if(($con =mysql_connect($hostname,$username,$password)) === false)
{
echo 'MAAK EEN NETTE FOUTAFHANDELING!';
}
else if ((mysql_select_db($username, $con)) === false)
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
$sql_get_username = "SELECT username
FROM users WHERE username= '".$_POST['username']."'
";
if(($result_get_username = mysql_query($sql_get_username)) === false)
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
else if(mysql_num_rows($result_get_username) == 1)
{
echo 'email already in use';
}
else
{
$sql_get_mail = "INSERT INTO users (username, password, email)
VALUES('".mysql_real_escape_string($_POST['username'])."','".mysql_real_escape_string($_POST['password'])."','".mysql_real_escape_string($_POST['email'])."')
";
if (!mysql_query($sql_get_mail))
{
echo 'er ging iets mis -> MAAK EEN NETTE FOUTAFHANDELING!';
}
else
{
echo "registration completed";
}
}
}
else
{
echo 'the passwords do not match';
}
}
else
{
echo 'invalid data';
}
?>
- Juiste quotes gebruiken
- nette foutafhandelingen
- codeer netjes
- spring mooi in
- let op sql injectie!
(note: script is snel verbeterd, fouten voorbehouden. Het is het idee wat telt)
Gewijzigd op 21/04/2011 20:21:45 door Jasper DS
dit is nu het script. zit nog geen emailadres check bij, wel of het uberhaupt geldig is
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
function isValidEmail($email)
{
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email))
{
return true;
}
else
{
return false;
}
}
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
if (!isValidEmail($_POST['email']))
{
echo "The email: ".$_POST['email']." is invalid";
}
else
{
$con =mysql_connect("$hostname","$username","$password");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("a4665314_cricity", $con);
$sql_get_username = "SELECT username FROM users WHERE username = '".$_POST['username']"' ";
if(($result_get_username = mysql_query($sql_get_username)) === false)
{
echo 'er ging iets mis';
}
if(mysql_num_rows($result_get_username) == 1)
{
echo "username already in use";
}
else
{
$sql_get_username="INSERT INTO users (username, password, email) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['password'])."', '".mysql_real_escape_string($_POST['email'])."')";
if (!mysql_query($sql,$con))
{
die('could not insert data into database: ' . mysql_error());
}
echo "registration completed";
}
}
}
else echo "the passwords do not match";
}
else echo "invalid data";
?>
function isValidEmail($email)
{
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email))
{
return true;
}
else
{
return false;
}
}
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
if (!isValidEmail($_POST['email']))
{
echo "The email: ".$_POST['email']." is invalid";
}
else
{
$con =mysql_connect("$hostname","$username","$password");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("a4665314_cricity", $con);
$sql_get_username = "SELECT username FROM users WHERE username = '".$_POST['username']"' ";
if(($result_get_username = mysql_query($sql_get_username)) === false)
{
echo 'er ging iets mis';
}
if(mysql_num_rows($result_get_username) == 1)
{
echo "username already in use";
}
else
{
$sql_get_username="INSERT INTO users (username, password, email) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['password'])."', '".mysql_real_escape_string($_POST['email'])."')";
if (!mysql_query($sql,$con))
{
die('could not insert data into database: ' . mysql_error());
}
echo "registration completed";
}
}
}
else echo "the passwords do not match";
}
else echo "invalid data";
?>
als ik nu probeer om een bestaande gebruikersnaam in te vullen krijg ik deze error in line 33
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in line 33
Gewijzigd op 22/04/2011 11:32:10 door Marijn Struijlaart
ik heb het tot nu toe allemaal zelf geschreven eigenlijk. alleen die username check en die functie deels voor isvaldemail heb ik overgenomen, maar snap het denk ik wel
Tja, toch zou ik als ik jou was even terug gaan naar het begin.
Of even kijken naar het voorzetje van PHP Jasper.
Bas Kreleger op 22/04/2011 11:50:57:
Of even kijken naar het voorzetje van PHP Jasper.
Nee, eerst leren.
Daar lijkt mij juist een hoop uit te leren.
Nee, want dat klopt ook al niet...
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
function isValidEmail($email)
{
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email))
{
return true;
}
else
{
return false;
}
}
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
$password= md5($_POST['password']);
$username = $_POST['username'];
$email = $_POST['email'];
if (!isValidEmail($_POST['email']))
{
echo "The email: ".$_POST['email']." is invalid <br />";
}
else
{
$con =mysql_connect("","","");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$checkuser = mysql_query("SELECT username FROM users WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM users where email='$email'");
$emailname_exist = mysql_num_rows($checkemail);
if ($username_exist >0)
{
echo "username already in use <br />";
unset($username);
include 'index.htm';
}
if($email_exist > 0)
{
echo "email already in use <br />";
unset($email);
include 'index.htm';
}
else
{
$query = "INSERT INTO users (username, password, email) VALUES('$username', '$password', '$email')";
mysql_query($query) or die(mysql_error());
mysql_close();
echo "registration completed";
}
}
}
else echo "the passwords do not match";
}
else echo "invalid data";
?>
function isValidEmail($email)
{
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email))
{
return true;
}
else
{
return false;
}
}
if ($_POST["username"] && $_POST["password"] && $_POST["password2"] && $_POST["email"] )
{
if ($_POST["password"]==$_POST["password2"])
{
$password= md5($_POST['password']);
$username = $_POST['username'];
$email = $_POST['email'];
if (!isValidEmail($_POST['email']))
{
echo "The email: ".$_POST['email']." is invalid <br />";
}
else
{
$con =mysql_connect("","","");
if (!$con)
{
die('could not connect: ' . mysql_error());
}
mysql_select_db("", $con);
$checkuser = mysql_query("SELECT username FROM users WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM users where email='$email'");
$emailname_exist = mysql_num_rows($checkemail);
if ($username_exist >0)
{
echo "username already in use <br />";
unset($username);
include 'index.htm';
}
if($email_exist > 0)
{
echo "email already in use <br />";
unset($email);
include 'index.htm';
}
else
{
$query = "INSERT INTO users (username, password, email) VALUES('$username', '$password', '$email')";
mysql_query($query) or die(mysql_error());
mysql_close();
echo "registration completed";
}
}
}
else echo "the passwords do not match";
}
else echo "invalid data";
?>
is er nog iets van een andere simpele manier om hoofdletter te negeren?
Nogmaals, gebruik geen die als foutafhandling!
Karl Karl op 22/04/2011 12:16:58:
Nee, want dat klopt ook al niet...
Waarom klopt dit niet?
Ocirina Ocirina op 22/04/2011 23:47:05:
Waarom klopt dit niet?
Karl Karl op 22/04/2011 12:16:58:
Nee, want dat klopt ook al niet...
Waarom klopt dit niet?
Hmm, geen idee.. Ik zal het nog eens checken of Karl moet het ons zeggen.
Ocirina Ocirina op 22/04/2011 23:47:05:
Waarom klopt dit niet?
Karl Karl op 22/04/2011 12:16:58:
Nee, want dat klopt ook al niet...
Waarom klopt dit niet?
Geen nette if() en SQL-Injection lek.
- SanThe - op 23/04/2011 13:32:50:
Geen nette if() en SQL-Injection lek.
Ocirina Ocirina op 22/04/2011 23:47:05:
Waarom klopt dit niet?
Karl Karl op 22/04/2011 12:16:58:
Nee, want dat klopt ook al niet...
Waarom klopt dit niet?
Geen nette if() en SQL-Injection lek.
Ja, er is inderdaad een sql lek.. Verder zou ik de volledige if-else constructie anders doen maar dat is de keuze ven de TS
maar even on-topic. weet iemand waarom die email-check niet werkt maar de username wel?
Obelix en Idefix op 22/04/2011 15:20:17:
Eregi is vervallen; http://nl3.php.net/eregi
Je kopieert onnodig variabelen.
Zorg voor foutafhandeling in je query's
Je kopieert onnodig variabelen.
Zorg voor foutafhandeling in je query's
+
- zorg voor nette foutafhandeling -> geen or die!
- codeer netjes
Gewijzigd op 23/04/2011 15:15:15 door Jasper DS