I am trying to create a website and I have a user database, in which I have the following functions:
function createUser($nome, $email, $morada, $username, $password) {
global $conn;
$stmt = $conn->prepare("INSERT INTO utilizador (nome, email, morada, permissao, username, password)
VALUES ('".$nome."', '".$email."', '".$morada."', '2', '".$username."', '".$password."')");
$stmt->execute(array($nome, $morada, $contacto, $permissao, $username, $password));
}
function isLoginCorrect($username, $password) {
global $conn;
$stmt = $conn->prepare("SELECT * FROM utilizador WHERE username = '".$username."' AND password = '".$password."'");
$stmt->execute();
return $stmt->fetch() == true;
}
function getPermissao($username){
global $conn;
$stmt = $conn->prepare("SELECT permissao
FROM utilizador
WHERE username = '".$username."'"
);
$stmt->execute(array($username));
return $stmt->fetchColumn(0);
}
I am having troubles with the register:
if (!$_POST['nome'] || !$_POST['email'] || !$_POST['morada'] || !$_POST['username'] || !$_POST['password']) {
$_SESSION['error_messages'][] = 'Deve preencher todos os campos obrigatórios';
//Guardar dados do formulário e redirecionar
$_SESSION['form_values'] = $_POST;
header("Location: $BASE_URL" . 'pages/users/register.php');
exit;
}
// Variáveis post ( & Sanitize )
$nome = strip_tags($_POST['nome']);
$contacto = strip_tags($_POST['email']);
$email = strip_tags($_POST['morada']);
$username = strip_tags($_POST['username']);
$password = $_POST['password'];
//Criar novo utilizador
createUser($nome, $morada, $contacto, $username, $password);
// Erros nos campos
if (strpos($e->getMessage(), 'cliente_username_key') !== false) {
$_SESSION['error_messages'][] = 'Ocorreu um erro ao efetuar o registo';
$_SESSION['field_errors']['username'] = 'O Username introduzido já existe';
}
//Erro genérico
else $_SESSION['error_messages'][] = 'Ocorreu um erro ao efetuar o registo';
//Guardar dados do formulário & redirecionar
$_SESSION['form_values'] = $_POST;
header("Location: $BASE_URL" . 'pages/users/register.php');
exit;
// Registo efetuado com sucesso
$_SESSION['success_messages'][] = 'Registo efetuado com sucesso';
header("Location: $BASE_URL");
My database is correctly connected and I am able to login, but I can't register and I get the following error:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08P01]: <>: 7 ERROR: bind message supplies 6 parameters, but prepared statement "pdo_stmt_00000001" requires 0' in /usr/users2/mieec2012/ee12083/public_html/trabalhosSiem/trabalhoPHP2/database/users.php:7 Stack trace: #0 /usr/users2/mieec2012/ee12083/public_html/trabalhosSiem/trabalhoPHP2/database/users.php(7): PDOStatement->execute(Array) #1 /usr/users2/mieec2012/ee12083/public_html/trabalhosSiem/trabalhoPHP2/actions/users/register.php(27): createUser('cliente', NULL, 'iii@...', 'cliente', 'cliente') #2 {main} thrown in /usr/users2/mieec2012/ee12083/public_html/trabalhosSiem/trabalhoPHP2/database/users.php on line 7