PHP: Login-System funktioniert nicht?

Hey, ich bin als Schüler gerade mit einem Partner dabei, an einem Projekt für den Informatikunterricht zu arbeiten. Aktuell arbeiten wir daran, dass man sich als Benutzer auf der Webseite anmelden kann.

Das Registrieren funktioniert bereits und als Vorlage diente uns dazu dieses Video:

https://www.youtube.com/watch?v=bNwT7pqVzDc

Nun sind in der Datenbank sowohl Benutzername als auch Passwort eingetragen. Als Benutzer soll man sich nun anmelden können und dann auf home.php weitergeleitet werden. Als Vorlage zum Anmelden verwendeten wir dieses Video:

https://www.youtube.com/watch?v=HrLucaAHLm8

Das Problem:

Wenn man versucht, sich auf der Webseite anzumelden, erscheint die Meldung "Passwort stimmt nicht ueberein", obwohl es übereinstimmen sollte. Hier ist der Quelltext:

<?php

 require("connection.php");

 if(isset($_POST["submit"])){

   $Benutzername = $_POST["Benutzername"];

   $Passwort = $_POST["Passwort"];

   $stmt = $con->prepare("SELECT * FROM Angestellten_Benutzer WHERE Benutzername=:Benutzername");

   $stmt->bindParam(":Benutzername", $Benutzername);

   $stmt->execute();

   $userExists = $stmt->fetchAll();

   $passwordHashed = $userExists[0]["Passwort"];

   $checkPassword = password_verify($Passwort, $passwordHashed);

   if($checkPassword === false){

     echo "Passwort stimmt nicht ueberein";

   }

   if($checkPassword === true){

     session_start();

     $_SESSION["Benutzername"] = $userExists[0]["Benutzername"];

     header("Location: home.php");

   }

 }

?>

<html lang="de">

<head>

   <meta charset="UTF-8">

   <meta http-equiv="X-UA-Compatible" content="IE=edge">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Anmelden</title>

   <link rel="stylesheet" href="style.css">

</head>

<body>

   <form action="pp.php" method="POST">

       <h1>Anmelden</h1>

       <div class="inputs_container">

           <input type="text" placeholder="Benutzername" name="Benutzername" autocomplete="off">

           <input type="password" placeholder="Passwort" name="Passwort" autocomplete="off">

       </div>

       <button name="submit">Anmelden</button>

   </form>

</body>

</html>

Ich würde mich sehr über eine Korrektur dieses Codes freuen. Der Validator sowie die KI scheinen keine Lösung für das Problem zu haben und keine Probleme zu erkennen. Danke!

SQL, Webseite, programmieren, Datenbank, PHP
NextJS-Backend/Datenbank?

Ich habe eine Anwendung, wo sich ein Nutzer mit Auth0 registrieren kann.

Es zeigt den Namen und die E-Mail ganz normal an und mit

/api/auth/login
/api/auth/logout

kann man sich anmelden/abmelden.

Nun sollen alle Nutzer XP-Punkte haben (bei 0 starten) und durch Fragen beantworten im Level aufsteigen können. Bzw. ich möchte ganz simpel erst einmal mit einem Buttonklick 25 XP-Punkte dazu verdienen.

Das Ganze kriege ich normalerweise mit PHP und einer normalen SQL-Datenbank, die ich in phpMyAdmin einrichte, hin, aber da ich in NextJS neu bin, wollte ich wissen, wie das da abläuft.

Vercel liefert soweit ich weiß keine Datenbank, wo ich Nutzerdaten hinschicken kann und Auth0 kann auch nicht mehr, als nur ein sicheres Loginsystem bieten.
Also müsste ich die SQL-Datenbank wie immer anlegen und mit dem user-Objekt von Auth0 arbeiten und die "sid" benutzen, um die Punkte dem richtigen User zuzuschreiben?

Ich weiß, dass MongoDB beliebt ist, aber das ist doch auch wieder extern irgendwo und kostet Geld und ist nicht auf einem "Standard" Webhosting inklusive, wie PHP/SQL-Datenbank.

Wie benutzt man MongoDB und ist das sinnvoll?

Für Next brauche ich kein VPS, was praktisch ist. Keine zusätzlichen Kosten und lange Einrichtung. Dafür SSR.

NextJS ist auch selber das Backend soweit ich weiß, also ich kann direkt in der Serverkomponente eine Datenbankabfrage machen und mit Node etwas zu der Datenbank hinzufügen, wie das mit dem Klick +25 XP.

Von Firebase habe ich gehört, dass es beides kann: Sowohl sichere Authentication als auch Datenbank für Nutzerdaten.

Aber ob das bei wenigen Nutzern Geld kostet weiß ich nicht.

Server, App, Linux, SQL, HTML, Webseite, JavaScript, Datenbank, Informatik, MySQL, Programmiersprache, Webentwicklung, MongoDB
php-Zugriff auf mysql funktioniert nicht?

Ich habe folgende Funktion in PHP geschrieben:

function getName($id) {
                global $conn;
                $sql = "SELECT Vorname, Nachname FROM mitglieder WHERE ID = `$id`";
                $result = $conn->query($sql);
                if ($result->num_rows > 0) {
                    $row = $result->fetch_assoc();
                    return $row['Vorname'] . " " . $row['Nachname'];
                } else {
                    return "";
                }
            }

Aber aus irgendeinem Grund kommt immer folgende Fehlermeldung:

Warning: Attempt to read property "num_rows" on bool in C:\xampp\htdocs\***********.php on line 35

Diese Variable $conn funktioniert aber an anderer Stelle im globalen Code außerhalb dieser Funktion einwandfrei wie gewünscht und ich sehe vom Code her keinen nennenswerten Unterschied.

Was ich bereits versucht habe:

  • $conn als Parameter an die Funktion zu übergeben
  • $conn in der Funktion selber zu definieren
  • $conn in der Funktion selber definieren und dass $conn im globalen Code entfernen
  • ChatGPT nach dem Fehler fragen
  • Folgende Fehlerabfrage einzubauen (dabei war $conn auch in der Funktion selber und NUR in der Funktion selber definiert):
if ($conn->connect_error) {
                die("Serverfehler: " . $conn->connect_error);
            }

Das führte aber nur zu folgender Fehlermeldung:

Warning: Attempt to read property "connect_error" on null in C:\xampp\htdocs\*********.php on line 26

Hat alles nichts geholfen. Wisst ihr wo der Fehler liegt?

Computer, Technik, SQL, HTML, Webseite, programmieren, JavaScript, Code, Datenbank, MySQL, PHP, Programmiersprache, Webentwicklung, phpMyAdmin, Programmierfehler
Wie kann ich den Fehler beheben?
const http = require('http');
const fs = require('fs');
const mysql = require("mysql2");

var db  = mysql.createConnection({
    host : "localhost",
    user : "root",
    password : "passwort",
    database : "test-datenbank"
});


db.connect(function (error){
    if (error) throw error;
    console.log("Connected!")
    var sql = "INSERT INTO benutzer (username) VALUES ('Beispiel')";
    db.query(sql, function (error,result){
        if(error) throw error;
        console.log("1 record inserted");
    });
    sql="SELECT * FROM benutzer"
    
    db.query(sql,function(error,result){
        if (error) throw error;
        console.log(result);

    });
});

const server = http.createServer((req,res) => {
    const url = req.url;
    const method = req.method;
    

    if ( url === "/"){
    res.setHeader("key","value");
    res.setHeader("Content-Type","text/html");
    res.write('</html><body>');
    res.write('<h1>Main</h1>');
    res.write('<h1><form action="/register" method="post"> <input type="text" name="Username"><br><button type="submit">Click</button></form></h1>');
    res.write("</body></html>");
    res.end()
    return;
    }

    if (url === "/register"){
         
        const reqBody = []
         req.on('data', (chunk)=>{
            console.log(chunk);
            reqBody.push(chunk);
     });
        
     req.on('end', () => {
        console.log(reqBody);
        const parsed = Buffer.concat(reqBody).toString();
        console.log(parsed);
        const user = parsed.split('=')[1];
        console.log(user)
        
        // funktioniert nicht 
        sql = 'INSERT INTO benutzer (username) VALUES ?, user;
        db.query(sql,function(error,result){
            if (error) throw error;
            console.log(result);
        });



});
        
        
        res.setHeader("key","value");
        res.setHeader("Content-Type","text/html");
        res.write('</html>');
        res.write('<body><h1>Registriert</h1></body>');
        res.write("</html>");
        res.end()
        return;

    }
    
}) 



server.listen(1337);

Der Fehler lautet wie folgt:

code: 'ER_PARSE_ERROR',

 errno: 1064,

 sqlState: '42000',

 sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1",

 sql: 'INSERT INTO benutzer (username) VALUES',

 fatal: true

SQL, Webentwicklung, node.js
Wie greife ich auf eine MySQL Datenbank zu?

Hallo :)

ich habe an ein neues Projekt gemacht, und bin jetzt absolut planlos.
Das ist alles ziemliches Neuland für mich, darum kann ich auch kaum googeln, weil ich die Basics nicht verstehe.
Ich habe im graphischen Interface von phpMyAdmin eine DB erstellt, inklusive Tabellen und alles - passt.

Dann habe ich einen Javascript code auf der Website, weil php ja bei jeder kommunikation zum Server die Seite neu laden muss.

Nun finde ich aber nur PHP Möglichkeiten, mit der Datenbank zu kommunizieren.

Ich habe auch von Ajax und Flask gelesen, aber habe kein plan wo ich die her bekomme, wie ich die auf dem Server installiere, oder wie ich die benutze. Oder muss man die überhaupt installieren?

Ich werde jedenfalls nicht ganz klug daraus, wie diese API's die Datenbank finden, weil in den Tutorials und Codes eigentlich nie eine url, ip, id oder auch nur der Datenbankname fällt (außer bei den PHP Sachen).

Kann mir vielleicht jemand einen Einsteiger - Crashkurs geben, damit ich zumindest einigermaßen verstehe, wie das alles funktioniert, und die Tutorials nicht komplett Bahnhof für mich sind?

Es geht um eine Anwendung zum Lernen. Man erstellt eine Lektion, diese wird in einer Tabelle gespeichert. Dann gibt man zu der Lektion Fragen und Antworten ein, diese werden in einer anderen Tabelle gespeichert. Dann soll man die Fragen in einem Textfeld beantworten, und dann mit der richtigen Antwort aus der Datenbank vergleichen können.

Danke.

SQL, HTML, IT, Webseite, programmieren, JavaScript, AJAX, Datenbank, Informatik, MySQL, PHP, Webentwicklung, API, phpMyAdmin
Welche Programmiersprache als Quereinsteiger für das Berufsleben?

Hallo,

Die Frage hier geht explizit an Programmierer, die idealerweise schon ein Job haben.

ich wollte fragen welche Programmiersprache gut als Quereinsteiger geeignet ist um in das Berufsleben durchzustarten.

Ich beherrsche mittlerweile etwas von Phyton und SQL.

Es gibt ja YouTuber oder Webseiten die dir versprechen in einigen Monaten in deren Kurs schon eine Arbeitsstelle zu finden, natürlich gegen Bezahlung.

Aber ich will es eigenständig schaffen, deshalb meine Frage:

Welche Programmiersprache ist gut geeignet um in kurzer Zeit ein Job auszuüben. Natürlich wird man in diesem kurzem Zeitraum nicht das ganze Know How wissen aber man sollte sich im Job weiterentwickeln. Natürlich weiß ich das ich dann nicht viel Geld bekommen werde.

Und mit welcher Programmiersprache sollte man im welchem Beruf einsteigen (z.B bei SQL kann man Daten Analyst werden.) Also was könnt ihr empfehlen.

Und kennt Ihr auch gute bücher oder YT kanäle?

Und was hattet Ihr schon für Erfahrungen im ersten Job, was war die erste Programmiersprache mit der Ihr euch beworben habt und wie war der Anfang als ihr gelernt hattet und der erste Tag als Programmierer im Job? Habt ihr Tipps an mich?

Zum Schluss noch: Bitte keine Unnötigen Kommentare abgegeben. Ich weiß es ist Zeitaufwendig, aber ich möchte denn Willen durchsetzen. Ich bin auch kein Scriptkiddi, ich will's wirklich erlernen. Ich antworte auch gerne auf eure Kommentare.

PC, Beruf, Lernen, Google, Job, Amazon, SQL, HTML, IT, Webseite, Java, JavaScript, C Sharp, Entwickler, Entwicklung, Programmiersprache, Python, Quereinsteiger, Laptop
Verschachtelte sql abfrage bzw. sortierung?

So, ich habe ein Problem.

Gerne möchte ich daten als liste aus einer datenbank laden. diese daten sollen seiten anzeigen als tabelle, diese seiten haben aber teilweise untergeordnete seiten die in der datenbank unter 'parent' die 'id' des elternelementes und diese wiederum können auch untergeordnete seiten haben.

wie gestalte ich die datenbankabfrage wenn ich die seiten anzeigen will in einer tabelle in der erst die "Höchste" nach dem 'sort' wert absteigend und zwischen diesem sort und dem nächsten "höchsten" datensatz dazwischen die unterseiten erscheinen?

hier ein bild der Tabelle:

anhin ein codeschnipsel der tabelle die ich schon habe:

<?php if (!empty($pages)): ?>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Link</th>
                <th>Titel</th>
                <th>Navigationselement</th>
                <th>Aktionen</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach($pages AS $page): ?>
                <tr>
                    <td><?php echo e($page->id); ?></td>
                    <td><?php echo e($page->slug); ?></td>
                    <td><?php echo e($page->title); ?></td>
                    <td><?php echo e($page->nav); ?></td> 
                    <td>
                        <form method="POST" action="./?route=admin/page/delete">
                            <input type="hidden" name="csrf_token" value="<?php echo csrf_token(); ?>" />
                            <input type="hidden" name="id" value="<?php echo e($page->id); ?>" />
                            <input type="submit" value="Löschen" class="button-as-link" />
                        </form>
                        <a href="./?route=admin/page/edit&id=<?php echo e($page->id); ?>">Editieren</a>
                    </td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
<?php else: ?>
    <p>Es wurden noch keine Seiten angelegt.</p>
<?php endif; ?>
Bild zum Beitrag
SQL, Datenbank, MySQL, PHP
Nodejs mariadb Column count doesn't match value count at row 1?

meine datenbank hat 4 spalten aber ich setze nur 3 ein weil die letzte eine auto_increment spalte ist,

ich nutze nodejs mit mariadb und habe folgende fehlermeldung beim daten einsetzen:

/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/misc/errors.js:64
  return new SqlError(msg, sql, fatal, info, sqlState, errno, additionalStack, addHeader);
         ^

SqlError: (conn=2420, no: 1136, SQLState: 21S01) Column count doesn't match value count at row 1
sql: INSERT INTO thread value (no, head, ts) - parameters:['1171187570193989762','rrrrrrrrrrrrrrrr',1699303276347]
    at module.exports.createError (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/misc/errors.js:64:10)
    at PacketNodeEncoded.readError (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet.js:582:19)
    at Query.readResponsePacket (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/cmd/parser.js:58:28)
    at PacketInputStream.receivePacketBasic (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet-input-stream.js:85:9)
    at PacketInputStream.onData (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet-input-stream.js:135:20)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:376:12)
    at readableAddChunk (node:internal/streams/readable:349:9)
    at Readable.push (node:internal/streams/readable:286:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  sqlMessage: "Column count doesn't match value count at row 1",
  sql: "INSERT INTO thread value (no, head, ts) - parameters:['1171187570193989762','rrrrrrrrrrrrrrrr',1699303276347]",
  fatal: false,
  errno: 1136,
  sqlState: '21S01',
  code: 'ER_WRONG_VALUE_COUNT_ON_ROW'
}


SQL, programmieren, JavaScript, Datenbank, MySQL, node.js, Discord, Discord Bot

Meistgelesene Fragen zum Thema SQL