registreren lukt niet.
Ik ben momenteel bezig met een project, en ik maak alles dus handmatig!
Nu ja, zal ik eens vertellen waar ik vast zit:
ik heb een register form gemaakt en een database 'users'
Als ik geregistreerd ben zegt het: Welkom bij (website) login!
Als ik naar mijn database ga bij 'users' sta ik er niet tussen!
Ik zal eerst mijn index tonen:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php include ( "./inc/header.inc.php" ); ?>
<?php
$reg = @$_POST['reg'];
//declaring variables to prevent errors
$fn = ""; //First Name
$ln = ""; //Last Name
$un = ""; //Username
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Password
$pswd2 = ""; // Password 2
$d = ""; // Sign up Date
$u_check = ""; // Check if username exists
//registration form
$fn = strip_tags(@$_POST['fname']);
$ln = strip_tags(@$_POST['lname']);
$un = strip_tags(@$_POST['username']);
$em = strip_tags(@$_POST['email']);
$em2 = strip_tags(@$_POST['email2']);
$pswd = strip_tags(@$_POST['password']);
$pswd2 = strip_tags(@$_POST['password2']);
$d = date("Y-m-d"); // Year - Month - Day
if ($reg) {
if ($em==$em2) {
// Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
//Check whether Email already exists in the database
$e_check = mysql_query("SELECT email FROM users WHERE email='$em'");
//Count the number of rows returned
$email_check = mysql_num_rows($e_check);
if ($check == 0) {
if ($email_check == 0) {
//check all of the fields have been filed in
if ($fn&&$ln&&$un&&$em&&$em2&&$pswd&&$pswd2) {
// check that passwords match
if ($pswd==$pswd2) {
// check the maximum length of username/first name/last name does not exceed 25 characters
if (strlen($un)>25||strlen($fn)>25||strlen($ln)>25) {
echo "The maximum limit for username/first name/last name is 25 characters!";
}
else
{
// check the maximum length of password does not exceed 25 characters and is not less than 5 characters
if (strlen($pswd)>30||strlen($pswd)<5) {
echo "Your password must be between 5 and 30 characters long!";
}
else
{
//encrypt password and password 2 using md5 before sending to database
$pswd = md5($pswd);
$pswd2 = md5($pswd2);
$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pswd','$d','0','Write something about yourself.','','','no')");
die("<h2>Welcome to findFriends</h2>Login to your account to get started ...");
}
}
}
else {
echo "Your passwords don't match!";
}
}
else
{
echo "Please fill in all of the fields";
}
}
else
{
echo "Sorry, but it looks like someone has already used that email!";
}
}
else
{
echo "Username already taken ...";
}
}
else {
echo "Your E-mails don't match!";
}
}
?>
<div style="width: 800px; margin: 0px auto 0px auto;">
<table>
<tr>
<td width="60%" valign="top">
<h2>Join FindFriends today!</h2>
</td>
<td width="40%" valign="top">
<h2>Sign Up Below!</h2>
<form action="#" method="POST">
<input type="text" name="fname" size="25" placeholder="First Name" /><br /><br />
<input type="text" name="lname" size="25" placeholder="Last Name" /><br /><br />
<input type="text" name="username" size="25" placeholder="Username" /><br /><br />
<input type="text" name="email" size="25" placeholder="email adress" /><br /><br />
<input type="text" name="email2" size="25" placeholder="email adress (again)" /><br /><br />
<input type="text" name="password" size="25" placeholder="password" /><br /><br />
<input type="text" name="password2" size="25" placeholder="password (again)" /><br /><br />
<input type="submit" name="reg" value="Sign Up!">
</form>
</td>
</tr>
</table>
<?php include ( "./inc/footer.inc.php" ); ?>
<?php
$reg = @$_POST['reg'];
//declaring variables to prevent errors
$fn = ""; //First Name
$ln = ""; //Last Name
$un = ""; //Username
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Password
$pswd2 = ""; // Password 2
$d = ""; // Sign up Date
$u_check = ""; // Check if username exists
//registration form
$fn = strip_tags(@$_POST['fname']);
$ln = strip_tags(@$_POST['lname']);
$un = strip_tags(@$_POST['username']);
$em = strip_tags(@$_POST['email']);
$em2 = strip_tags(@$_POST['email2']);
$pswd = strip_tags(@$_POST['password']);
$pswd2 = strip_tags(@$_POST['password2']);
$d = date("Y-m-d"); // Year - Month - Day
if ($reg) {
if ($em==$em2) {
// Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
//Check whether Email already exists in the database
$e_check = mysql_query("SELECT email FROM users WHERE email='$em'");
//Count the number of rows returned
$email_check = mysql_num_rows($e_check);
if ($check == 0) {
if ($email_check == 0) {
//check all of the fields have been filed in
if ($fn&&$ln&&$un&&$em&&$em2&&$pswd&&$pswd2) {
// check that passwords match
if ($pswd==$pswd2) {
// check the maximum length of username/first name/last name does not exceed 25 characters
if (strlen($un)>25||strlen($fn)>25||strlen($ln)>25) {
echo "The maximum limit for username/first name/last name is 25 characters!";
}
else
{
// check the maximum length of password does not exceed 25 characters and is not less than 5 characters
if (strlen($pswd)>30||strlen($pswd)<5) {
echo "Your password must be between 5 and 30 characters long!";
}
else
{
//encrypt password and password 2 using md5 before sending to database
$pswd = md5($pswd);
$pswd2 = md5($pswd2);
$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pswd','$d','0','Write something about yourself.','','','no')");
die("<h2>Welcome to findFriends</h2>Login to your account to get started ...");
}
}
}
else {
echo "Your passwords don't match!";
}
}
else
{
echo "Please fill in all of the fields";
}
}
else
{
echo "Sorry, but it looks like someone has already used that email!";
}
}
else
{
echo "Username already taken ...";
}
}
else {
echo "Your E-mails don't match!";
}
}
?>
<div style="width: 800px; margin: 0px auto 0px auto;">
<table>
<tr>
<td width="60%" valign="top">
<h2>Join FindFriends today!</h2>
</td>
<td width="40%" valign="top">
<h2>Sign Up Below!</h2>
<form action="#" method="POST">
<input type="text" name="fname" size="25" placeholder="First Name" /><br /><br />
<input type="text" name="lname" size="25" placeholder="Last Name" /><br /><br />
<input type="text" name="username" size="25" placeholder="Username" /><br /><br />
<input type="text" name="email" size="25" placeholder="email adress" /><br /><br />
<input type="text" name="email2" size="25" placeholder="email adress (again)" /><br /><br />
<input type="text" name="password" size="25" placeholder="password" /><br /><br />
<input type="text" name="password2" size="25" placeholder="password (again)" /><br /><br />
<input type="submit" name="reg" value="Sign Up!">
</form>
</td>
</tr>
</table>
<?php include ( "./inc/footer.inc.php" ); ?>
En nu mijn database 'users':
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
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
-- phpMyAdmin SQL Dump
-- version 3.4.5
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 02, 2012 at 04:54 PM
-- Server version: 5.5.16
-- PHP Version: 5.3.8
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `Veranderd`
--
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(32) NOT NULL,
`sign_up_date` date NOT NULL,
`activated` enum('0','1') NOT NULL,
`bio` text NOT NULL,
`profile_pic` text NOT NULL,
`friend_array` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
-- version 3.4.5
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 02, 2012 at 04:54 PM
-- Server version: 5.5.16
-- PHP Version: 5.3.8
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `Veranderd`
--
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(32) NOT NULL,
`sign_up_date` date NOT NULL,
`activated` enum('0','1') NOT NULL,
`bio` text NOT NULL,
`profile_pic` text NOT NULL,
`friend_array` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
Ik weet totaal niet wat er aan mis is, hopelijk kunnen jullie wat helpen :)
alvast bedankt!
Gewijzigd op 26/01/2016 20:22:50 door Teminite hulp
Ook worden de mysql functies uitgefaseerd, als je toch bezig bent kun je beter overstappen op mysqli of PDO.
Of begin gewoon meteen helemaal overnieuw, je mist overal escaping, misbruikt strip_tags, en hebt nogal rare voorwaarden, zoals "het wachtwoord mag maximaal 30 tekens lang zijn"/
* Er wordt niet gekeken of je het formulier verstuurd hebt. Hierdoor zal je mogelijk, als je error_reporting op E_ALL staat en display_errors op on, notice-foutmeldingen verschijnen
Dit kan je oplossen met:
Code (php)
* Je onderdrukt foutmeldingen met een @. Niet aan te raden.
* Je gebruikt de oude mysql-functies die geschrapt zullen worden, gebruik liever MySQLi of PDO.
* Er mist goede foutafhandeling.
* De code is niet netjes ingesprongen met TAB
* Passworden zijn opgeslagen in md5() wat zeer zwakke encryptie is. Gebruik liever password_hash en password_verify
* Geef nooit aan dat of je username of je password fout is, maar meld liever gewoon uit veiligheidsoverwegingen dat het inloggen mislukt is.
* Sla bij voorkeur de foutmeldingen in een array op, zodat je niet steeds opnieuw moet beginnen als je iets vergeet in te vullen. Maar laat dan al je invoerfouten zien.
Maar waar het nu fout op gaat, is de foutafhandeling.
Gewijzigd op 26/01/2016 21:29:43 door - Ariën -
- Ariën - op 26/01/2016 20:52:36:
Ik zie dat er aan dit script een hoop mankeert, en dat er voor een heel groot gedeelte wel aan veranderd kan worden.
* Er wordt niet gekeken of je het formulier verstuurd hebt. Hierdoor zal je mogelijk, als je error_reporting op E_ALL staat en display_errors op on, notice-foutmeldingen verschijnen
Dit kan je oplossen met:
* Je onderdrukt foutmeldingen met een @. Niet aan te raden.
* Je gebruikt de oude mysql-functies die geschrapt zullen worden, gebruik liever MySQLi of PDO.
* Er mist goede foutafhandeling.
* De code is niet netjes ingesprongen met TAB
* Passworden zijn opgeslagen in md5() wat zeer zwakke encryptie is. Gebruik liever password_hash en password_verify
* Geef nooit aan dat of je username of je password fout is, maar meld liever gewoon uit veiligheidsoverwegingen dat het inloggen mislukt is.
* Sla bij voorkeur de foutmeldingen in een array op, zodat je niet steeds opnieuw moet beginnen als je iets vergeet in te vullen. Maar laat dan al je invoerfouten zien.
Maar waar het nu fout op gaat, is de foutafhandeling.
* Er wordt niet gekeken of je het formulier verstuurd hebt. Hierdoor zal je mogelijk, als je error_reporting op E_ALL staat en display_errors op on, notice-foutmeldingen verschijnen
Dit kan je oplossen met:
Code (php)
* Je onderdrukt foutmeldingen met een @. Niet aan te raden.
* Je gebruikt de oude mysql-functies die geschrapt zullen worden, gebruik liever MySQLi of PDO.
* Er mist goede foutafhandeling.
* De code is niet netjes ingesprongen met TAB
* Passworden zijn opgeslagen in md5() wat zeer zwakke encryptie is. Gebruik liever password_hash en password_verify
* Geef nooit aan dat of je username of je password fout is, maar meld liever gewoon uit veiligheidsoverwegingen dat het inloggen mislukt is.
* Sla bij voorkeur de foutmeldingen in een array op, zodat je niet steeds opnieuw moet beginnen als je iets vergeet in te vullen. Maar laat dan al je invoerfouten zien.
Maar waar het nu fout op gaat, is de foutafhandeling.
Nog veel werk aan zo te zien :p
Nou ja, bedankt voor het reageren! Hier heb ik heel veel aan en weet nu ook dit op te lossen :)
Alvast bedankt!