0

Many thanks to everyone. The html is fine, i believe the javascript is a problem still, and php looks ok, but I need a few more pointers. I have edited my code as follows...

html:

<input name="uname" type="text" placeholder="please enter a user name" required><br />
            <input name="upassword" type="text" placeholder="please enter a password or passphrase" required><br />
            <input id="register" name="register" type="submit" class="btn btn-primary btn-lg outline" onclick="register();"/>

function register() {

javascript

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "register.php",
  data: { name: "uname", password: "password"},
  success: function (result) {
       alert("success");
  }
});
}

And my biggest problem, php

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

define('USER', 'root');
define('PASS', 'Schwinny2156!');

try {
$conn = new PDO("mysql:host=localhost;dbname=users;", USER, PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('INSERT INTO `users` (name, password VALUES      (:name,:password)');
$stmt->bindParam(':name', $_POST['uname']);
$stmt->bindParam(':password', $_POST['upassword']);

$stmt->execute()
}
catch(PDOException $e)
{
echo $stmt . "<br>" . $e->getMessage();
}
$stmt = null;
Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
  • First this has nothing to do with bootstrap and second you do not bind your params if I see this correct. See this link for examples: http://php.net/manual/de/mysqli.quickstart.prepared-statements.php – JRsz Jul 06 '16 at 06:24
  • missing closing brace from `define('name', $_POST['uname'];` – Professor Abronsius Jul 06 '16 at 06:27
  • 3
    password_hash and password_verify, do it the [Right Way](http://stackoverflow.com/a/32556010) – Drew Jul 06 '16 at 06:28
  • Please don't mutilate your post by removing information that invalidates existing answers. I have rolled back your last edit. – Mark Rotteveel Jul 06 '16 at 08:41

2 Answers2

1

I fixed up whatever looked wrong, not sure if I missed something.

Edit: forgot to mention, lookup password_hash and implement that. Storing password in plaintext is a no go.

Edit 2: Added the password hash function to get your started. Use password_verify to verify passwords on login.

<form onsubmit="return register(this);">
    <input name="uname" type="text" placeholder="please enter a user name"   required><br />
    <input name="upassword" type="text" placeholder="please enter a password or passphrase" required><br />
    <input id="register" name="register" type="submit" class="btn btn-primary btn-lg outline"/>
</form>

js

function register(form) {
    $.post("register.php", $(form).serialize());
    return false;
}

php

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

define('USER', 'root');
define('PASS', 'password');

try {
    $conn = new PDO("mysql:host=localhost;dbname=users;", USER, PASS);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    define('uname', $_POST['uname']);
    $passwordHash = password_hash($_POST['upassword'], PASSWORD_DEFAULT);
    define('upassword', $passwordHash);

    $sql = 'INSERT INTO `users` (name , password) VALUES (?, ?)';
    $conn->prepare($sql)->execute([uname, upassword]);
}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
Prashank
  • 796
  • 6
  • 12
  • This is really excellent, thank you. I am about to check everything out now, and will mark as answered soonish :). – user6554670 Jul 06 '16 at 08:16
0

Your Using GET method to Send Data From jQuery $.get("register.php");AND your accessing data from POST from PHP. Use $.post("register.php"); in jQuery or use $_GET in PHP

Nithee
  • 300
  • 1
  • 12