Hallo,

Ik ben weer net met PHP begonnen. Ik wil een site maken om in te loggen maar krijg de volgende foutmelding:


Warning: mysql_connect(): Access denied for user 'root'@'localhost' (using password: NO) in C:\USB WebServer\root\login.php on line 8
Connection error

<?php

$host = "localhost" ;
$user = "root";
$password ="";
$db = "user";

$data = mysql_connect($host, $user, $password, $db);

if($data==false)
{
    die ("Connection error");
}

?>



<!DOCTYPE html>
<html>
   <head> 
       <title>Inloggen</title>
   </head>

   <body>
            <center>
                <br>
                <h1>Inloggen</h1>
                <br>
                <div style= "background-color: grey; width: 1000px">
                    <br>
                    <br>
                    <form action =# method="POST">
                        <div>
                                <label>Wachtwoord</label>
                                <input type="text" name="username" required>
                        </div>
                        <br>
                        <br>
                        
                        <div>
                                <label>Password</label>
                                <input type="password" name="password" required>
                        </div>
                        <br>
                        <br>

                        <div>
                                <input type="submit" value="Login">
                        </div>
                    </form>
                    <br>
                </div>
            </center>



Wat doe ik fout?
Je mysqli_query() lijkt ergens op stuk te lopen. Maar je vraagt dus niet aan mysqli WAT er mis is.

Dus gebruik eens mysqli_error($data).
Hoi Arien,

Het blijft voor mij een raadseltje. Weet jij het antwoord?

Groetjes
Ed
Kijk eens of je hier meer verder komt.

if( $result = mysqli_query($data,$sql) )
{
	$row = mysqli_fetch_array($result);
	if( $row["usertype"]=="user" )
    {
        echo "user";
    }

    elseif($row["usertype"]=="admin")
    {
        echo "admin";
    }
    else
    {
        echo "username or password incorrect";
    }
}
Als we dit even uitbouwen met een controle of de query gelukt is/;


if( $result = mysqli_query($data,$sql) )
{
    $row = mysqli_fetch_array($result);
    if( $row["usertype"]=="user" )
    {
        echo "user";
    }

    elseif($row["usertype"]=="admin")
    {
        echo "admin";
    }
    else
    {
        echo "username or password incorrect";
    }
} else {
echo "De query is niet gelukt: ".mysqli_error($data);
}


Kort gezegd kijk je hier of de query uitgevoerd kan worden, en in dat geval toon je de data. En als dat niet lukt (else), dan toon je een nette foutmelding vanuit MySQL.
Als ik de foto juist zie gebruik je database 'login' en tabel 'user'
user is een gereserveerd woord dacht ik maar los daarvan je gebruikt wel de juiste database maar je tabel is niet de juiste. Je hebt geen tabel login. Je tabel is user! lijn 20.
Met mysqli_error zou je dit dus kunnen zien.

Zorg altijd voor foutafhandeling in queries.
Ed Jeurissen op 04/11/2021 21:55:18

<?php
$username = $_POST["username"];
$password = $_POST["password"];

$sql = "SELECT  * FROM login WHERE username= ' ".$username. "' AND  password= ' ".$password. " '";
?>


... OR 1=1
wel apart dat de query controleert of de username begint met een spatie, gevolgd door de opgegeven naam
En of het password in de database een spatie voor en achteraan heeft.


WHERE username=' ed' AND password=' abc ';
En daarnaast is het wel zo netjes om dit uiteindelijk veilig te hashen met password_hash().

Reageren