Hello, i’m making a Login system using php but it doesn’t fully work yet.
The main errors are that it does not insert anything when I press send, and that i get the warning:
Warning : mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in /storage/ssd5/627/5386627/public_html/register.php on line 77
I’m hoping u guys can tell me what is wrong.
My code for the register page:
<!DOCTYPE html>
<?php
$link = mysqli_connect("localhost","id5386627_informatica","XXXxxx","id5386627_infomaticas");
if($link === false){
die("ERROR: Kon niet verbinden. " . mysqli_connect_error());
}
$username = $password = $confirm_password = "";
$username_err = $password_err = $confirm_password_err = "";
$param_username = $username ;
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["username"]))){
$username_err = "Voer uw gebruikersnaam in.";
} else{
$sql = "SELECT Naam FROM Users WHERE Naam = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param( $stmt, "s", $param_username);
$param_username = trim($_POST["username"]);
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
$username_err = "Deze gebruikersnaam is al in gebruik.";
} else{
$username = trim($_POST["username"]);
}
} else{
echo "Er ging iets mis, probeer het later nog een keer.";
}
}
mysqli_stmt_close($stmt);
}
if(empty(trim($_POST["password"]))){
$password_err = "Voer uw wachtwoord in.";
} elseif(strlen(trim($_POST["password"])) < 6){
$password_err = "Het wachtwoord heeft op zijn minst 6 karakters nodig.";
} else{
$password = trim($_POST["password"]);
}
if(empty(trim($_POST["confirm_password"]))){
$confirm_password_err = "Voer nogmaals uw wachtwoord in.";
} else{
$confirm_password = trim($_POST["confirm_password"]);
if(empty($password_err) && ($password != $confirm_password)){
$confirm_password_err = "Het wachtwoord kwam niet overeen.";
}
}
if(empty($username_err) && empty($password_err) && empty($confirm_password_err)){
$param_username = $username;
$param_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO Users (Naam, wachtwoord) VALUES ($param_username, $param_password)";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, 'ss' , $param_username, $param_password);
if(mysqli_stmt_execute($stmt)){
header("location: login.php");
exit;
} else{
echo "Er is iets mis gegaan, probeer het later opnieuw.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Account aanmaken</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
</head>
<body>
<center>
<style type="text/css">
body {
font: 14px sans-serif;
}
.wrapper {
width: 350px;
padding: 20px;
}
</style>
<div class="wrapper">
<h2>Account aanmaken</h2>
<p>Vul de onderstaande dingen in om een account aan te maken!</p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
<div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
<label>Naam:</label>
<input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
<span class="help-block"><?php echo $username_err; ?></span>
</div>
<div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
<label>Wachtwoord:</label>
<input type="password" name="password" class="form-control" value="<?php echo $password; ?>">
<span class="help-block"><?php echo $password_err; ?></span>
</div>
<div class="form-group <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
<label>Wachtwoord herhalen:</label>
<input type="password" name="confirm_password" class="form-control" value="<?php echo $confirm_password; ?>">
<span class="help-block"><?php echo $confirm_password_err; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Verzenden">
<input type="reset" class="btn btn-default" value="Leeg maken">
</div>
<p>Heb je al een account? <a href="login.php">log hier in</a>.</p>
</form>
</div>
</center>
</body>
</html>
And my code for the login page:
<!DOCTYPE html>
<?php
session_start();
$link = mysqli_connect("localhost","id5386627_informatica","XXXxxx","id5386627_infomaticas");
if($link === false){
die("ERROR: Kon niet verbinden. " . mysqli_connect_error());
}
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
header("location: welkom.php");
exit;
}
require_once "index.php";
$username = $password = "";
$username_err = $password_err = "";
$param_username = $username ;
$param_password = password_hash($password, PASSWORD_DEFAULT);
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["username"]))){
$username_err = "Voer hier uw gebruikersnaam in.";
} else{
$username = trim($_POST["username"]);
}
if(empty(trim($_POST["password"]))){
$password_err = "Voer uw wachtwoord in.";
} else{
$password = trim($_POST["password"]);
}
if(empty($username_err) && empty($password_err)){
$sql = "SELECT Naam, wachtwoord FROM Users WHERE Naam = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, 's', $param_username);
$param_username = $username;
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
mysqli_stmt_bind_result($stmt, $username, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($password, $param_password)){
session_start();
$_SESSION["loggedin"] = true;
$_SESSION["password"] = $password;
$_SESSION["username"] = $username;
header("location: welkom.php");
exit;
} else{
$password_err = "Het wachtwoord bestaat niet.";
}
}
} else{
$username_err = "Geen account gevonden met deze gebruikersnaam.";
}
} else{
echo "Er is iets misgegaan, probeer het later opnieuw.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Inloggen</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
<style type="text/css">
body {
font: 14px sans-serif;
}
.wrapper {
width: 350px;
padding: 20px;
}
</style>
</head>
<body>
<center>
<div class="wrapper">
<h2>Login</h2>
<p>Voer uw gegevens in om door te gaan.</p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
<div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
<label>Gebruikersnaam</label>
<input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
<span class="help-block"><?php echo $username_err; ?></span>
</div>
<div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
<label>Wachtwoord</label>
<input type="password" name="password" class="form-control">
<span class="help-block"><?php echo $password_err; ?></span>
</div>
<div class="form-group">
<input id="button" type="submit" class="btn btn-primary" value="Verzenden">
<input id="button" type="reset" class="btn btn-default" value="Leeg maken">
</div>
<p>Heb je nog geen account? <a href="register.php">Meld je hier aan</a>.</p>
</form>
</div>
</center>
</body>
</html>
Thanks!