Click here to Skip to main content
15,895,256 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I had created a signup form in html, css and javascript for website and a php file for it. I had stored this files in xampp/htdocs/manuscripts_ih folder. I had created database manuscripts_ih in phpMyAdmin using xampp. When I opened signup form and filed the fields it opens the php file i.e. following codes:

What I have tried:

<?php
// Fetching Values From URL
$email2 = $_POST['email1'];
$password2 = $_POST['password1'];
$repeatpassword2 = $_POST['repeatpassword1'];
$connection = mysql_connect("localhost", "root", ""); // Establishing Connection with Server..
$db = mysql_select_db("manuscripts_ih", $connection); // Selecting Database
if (isset($_POST['email1'])) {
$query = mysql_query("insert into signup(email, password, repeatpassword) values ('$email', '$password2','$repeatpassword2')"); //Insert Query
echo "Form Submitted succesfully";
}
mysql_close($connection); // Connection Closed
?>


But data doesn't get added in database. Pl. tell me what will be the problem in inserting data into database.
Posted
Updated 11-Dec-19 2:33am
v2
Comments
Richard MacCutchan 14-Dec-19 5:49am    
"echo "Form Submitted succesfully";"
If I had $1 for every example of code where people post success messages without ever checking whether the previous command actually succeeded ... Is it any wonder hackers have such an easy time?

1 solution

If there was a manual on "how not to do software login", that code could be Exhibit A.

You have serious problems here:
1) Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Always use Parameterized queries instead.

When you concatenate strings, you cause problems because SQL receives commands like:
SQL
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
The quote the user added terminates the string as far as SQL is concerned and you get problems. But it could be worse. If I come along and type this instead: "x';DROP TABLE MyTable;--" Then SQL receives a very different command:
SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Which SQL sees as three separate commands:
SQL
SELECT * FROM MyTable WHERE StreetAddress = 'x';
A perfectly valid SELECT
SQL
DROP TABLE MyTable;
A perfectly valid "delete the table" command
SQL
--'
And everything else is a comment.
So it does: selects any matching rows, deletes the table from the DB, and ignores anything else.

So ALWAYS use parameterized queries! Or be prepared to restore your DB from backup frequently. You do take backups regularly, don't you?

2) SQL Injection on a login page? So I can bypass your login completely, do whatever the heck I want to your DB including changing your - admin login - password to whatever I want? That's taking riskiness to another level.

3) Why on earth store the same password twice? The whole idea of a "repeat password" box is not to store it again, it's to check that the user entered the same exact password twice when he sets up the account. You don't store the second one, you check the first with it.

4) Never store passwords in clear text - it is a major security risk. There is some information on how to do it here: Password Storage: How to do it.[^]

And remember: if this is web based and you have any European Union users then GDPR applies and that means you need to handle passwords as sensitive data and store them in a safe and secure manner. Text is neither of those and the fines can be .... um ... outstanding. In December 2018 a German company received a relatively low fine of €20,000 for just that.


Seriously, you need to go through your whole app with a fine tooth comb, because at the moment it's so full of security (and other) problems that you are looking at serious fines for negligence if anything goes wrong. And it will, it will.
 
Share this answer
 
Comments
Richard Deeming 13-Dec-19 12:20pm    
Hey, it's not like PHP has built-in methods to help you do the right thing when storing passwords, is it? :)

PHP: password_hash[^]
PHP: password_verify[^]
OriginalGriff 13-Dec-19 12:34pm    
I'm pretty sure Google doesn't know about them yet ... ;)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900