Kan iemand mij AUB helpen met het maken van een login in php dit is wat ik al heb.

Een form


<!-- De login form -->
<div class="container mt-5">
	<h3>Login</h3>
	<form method="post" action"login.php" name="login">
	  <div class="form-group">
		<label for="gebruikersnaam">Gebruikersnaam</label>
		<input type="text" name="gebruikersnaam" class="form-control" aria-describedby="emailHelp" placeholder="Voer uw gebruikersnaam in">
	  </div>
	  <div class="form-group">
		<label for="wachtwoord">Password</label>
		<input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
	  </div>
	  <button name="submit" type="submit" value="login" class="btn btn-primary">Submit</button>
	</form>	
</div>	


de sessie waar die naar toe gaat


<?php

    require('config.php')

    session_start();

    $username = trim($_POST['gebruikersnaam']);
    $password = trim($_POST['password']);

    

?>
Hopelijk lukt het nu.

<?php
$query = mysqli_query($mysqli, "SELECT * FROM 'studenten' WHERE naam='$username'
        AND password='$password'");
?>


moet worden:

<?php
$query = mysqli_query($mysqli, "SELECT * FROM studenten WHERE naam='".$username."'
        AND password='".$password."'");
?>

En dan zou ik het wachtwoord ook nog zeker hashen!!!
Plain text is niet meer van deze tijd!
Kreeg deze error, en spuugt ook een array uit, zag de verandering van de query, dacht dat het daar aan lag maar de error blijft staan, iets over mij row variablen.

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in.
dat is de lijn met $rows = mysqli_num_rows($query);


<?php
// Start de sessie
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Vereist config
require('config.php');

// Variablen voor error bericht
$error=''; // Variable voor opslaan van errors
if (isset($_POST['submit'])) {
    if (empty($_POST['username']) || empty($_POST['password']))
    {
        $error = "Username or Password is invalid";
    }
    else
    {
        // Globale variablen
        $username = trim($_POST['username']);
        $password = trim($_POST['password']);
        // MySQl injectie beschermen
        $username = stripslashes($username);
        $password = stripslashes($password);


        // Query selecten
        $query = mysqli_query($mysqli, "SELECT * FROM 'admins' WHERE naam = '".$username."' AND password = '".$password."'");


        $rows = mysqli_num_rows($query);
        if($rows == 1){
            // Redirect user to index.php
            header("Location: index.php");
            exit();
        }
        else
        {
            $error = "credentials not good";
        }
        mysqli_close($mysqli);
    }
}
?>

<?php
// declareren
function escape($string) {
    return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
function dump($array) {
    ?><pre><?php echo escape(print_r($array, true)); ?></pre><?php
}
// aanroepen
dump($_POST);
?>
mysqli_num_rows() verwacht een result te krijgen van een mysqli_query(), echter krijgt deze een boolean door.

Je query zal dus ergens stuk zijn, en een false teruggeven. Zorg voor goede foutafhandeling op je mysqli_query. Echo je query anders eens, en voer de data eens aan phpMyAdmin of welke mysql-client je maar gebruikt.

En dit is dus grote onzin:

<?php
        // MySQl injectie beschermen
        $username = stripslashes($username);
        $password = stripslashes($password);
?>


Lees anders deze en je vorige topic eens terug.
Snap je punt, zie nu 1 2 3 niet de oplossing, ben er al hele dag mee bezig, kijk er morgen weer naar.
Heb wel gechecked op query error met
 mysqli_error($query); 

Maar kreeg alleen : mysqli_error() expects parameter 1 to be mysqli, boolean given in.
Kijk eens naar [php]mysqli_error[/php]
En dan bij de parameters:

link
Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()


Dus $query is sowieso fout.
Als je iets niet weet omdat PHP zegt dat hij wat anders verwacht, sla dan de manual open.

Weet er geen raad meer mee.

- query aangepast
- errors zijn weg
- debug regels laten staan
- database klopt
kan alsnog niet inloggen, dit is mijn query nu.


// Query selecten
            $query = ("SELECT * FROM admins WHERE naam='".$username."' AND password='".$password."'");

            mysqli_connect_error(); 
            mysqli_error($query);

            // Voer de query uit
            $result = mysqli_query($mysqli, $query); 

            // Controleer of de login correct
            $rows = mysqli_num_rows($result);


misschien dat de begin stuk van mijn index pagina niet klopt?

<?php
session_start();
include('config.php'); // De login script

if(isset($_SESSION['username'])){
    header("location: index.php");
}

?>
<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
</head>
<body>
<?php
	
if(!isset($_SESSION['username']) || !isset($_SESSION['password'])){
 header("Location: loginform.php");
}
 
?>
	
<?php
Lees per functie nou maar eens de manual door over hoe je het gebruikt. En ook de reacties die we hiervoor gaven.

Je lijkt steeds in dezelfde gaten te vallen.
Hint:
Ik zie dat je verkeerde aanhalingstekens gebruikt, en verschillend in een query. Niet slim. Dit bijvoorbeeld: '".$password."' En je sluit weer af met dubbele apostrofe.
Check je code eens op dit soort gekke fouten bij http://phpcodechecker.com

Reageren