Problem mit script
Hallo Gemeinschaft,
möchte mich nun mit sessions beschäftigen und verstehen wie das funktioniert
habe mir dazu ein script raus gesucht - leider finde ich den fehler nicht - es ist nicht in der lage den neu angelegten datensatz in dioe mysql tab zu schreiben - es kommt auch keine meldung
möchte mich nun mit sessions beschäftigen und verstehen wie das funktioniert
habe mir dazu ein script raus gesucht - leider finde ich den fehler nicht - es ist nicht in der lage den neu angelegten datensatz in dioe mysql tab zu schreiben - es kommt auch keine meldung
<?php
session_start();
$servername="mysere.de";
$username = "U23214";
$password ="423423423";
$pdo = new PDO("mysql:host=$servername;dbname=DB...", $username,$password);
if(isset($_GET['login'])) {
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
//Überprüfung des Passworts
if ($user !== false && password_verify($passwort, $user['passwort'])) {
$_SESSION['userid'] = $user['id'];
die('Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>');
} else {
$errorMessage = "E-Mail oder Passwort war ungültig<br>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<?php
if(isset($errorMessage)) {
echo $errorMessage;
}
?>
<form action="?login=1" method="post">
E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Dein Passwort:<br>
<input type="password" size="40" maxlength="250" name="passwort"><br>
<input type="submit" value="Abschicken">
</form>
</body>
</html>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 447096
Url: https://administrator.de/contentid/447096
Ausgedruckt am: 04.11.2024 um 18:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Jens.
Das Script ist nicht dazu gedacht etwas in die DB zu schrieben.
Es beinhaltet lediglich ein SELECT-Statement das dazu genutzt wird um DatensätzE welche der E-Mailadresse entsprechen, auszulesen. (Und dann wird wird das Passwort lediglich mit dem ersten Datensatz abgeglichen.)
Der Fehler liegt also bei dir ;)
In die DB schreibt man mit INSERT MySQL-Reference - INSERT-Statement
~Arano
[..] es ist nicht in der lage den neu angelegten datensatz in dioe mysql tab zu schreiben [..]
Und das ist KEIN Fehler !Das Script ist nicht dazu gedacht etwas in die DB zu schrieben.
Es beinhaltet lediglich ein SELECT-Statement das dazu genutzt wird um DatensätzE welche der E-Mailadresse entsprechen, auszulesen. (Und dann wird wird das Passwort lediglich mit dem ersten Datensatz abgeglichen.)
Der Fehler liegt also bei dir ;)
In die DB schreibt man mit INSERT MySQL-Reference - INSERT-Statement
~Arano
Hallo Jens,
@Arano hat dazu schon etwas geschrieben. Beschäftige dich mal damit, und achte auch auf die Sicherheit (SQL Injections).
Du solltest dir lieber erstmal einen PHP und MySQL/MariaDB Grundkurs zulegen, bevor du dich an sowas traust. Wenn bei Authentifizierungssystemen was knallt, ist das nie gut!
möchte mich nun mit sessions beschäftigen und verstehen wie das funktioniert
Oha, schauen wir mal...habe mir dazu ein script raus gesucht - leider finde ich den fehler nicht - es ist nicht in der lage den neu angelegten datensatz in dioe mysql tab zu schreiben - es kommt auch keine meldung
Aber Jens, es wird doch auch garnix geschrieben, weil dein Script dazu keine Funktion enthält!@Arano hat dazu schon etwas geschrieben. Beschäftige dich mal damit, und achte auch auf die Sicherheit (SQL Injections).
Du solltest dir lieber erstmal einen PHP und MySQL/MariaDB Grundkurs zulegen, bevor du dich an sowas traust. Wenn bei Authentifizierungssystemen was knallt, ist das nie gut!
möchte mich nun mit sessions beschäftigen und verstehen wie das funktioniert
Oha, warst du zufällig auf der Cannabis-Messe in Dortmund?
Aua das tut weh...
Außerdem für Anfänger empfehlenswert
im Kopf des Skripts zeigt dir schnelle Flüchtigkeitsfehler.
==> https://www.php-kurs.com/
Außerdem für Anfänger empfehlenswert
error_reporting(E_ALL);
ini_set('display_errors', 'On');
==> https://www.php-kurs.com/
Hallo,
schau mal nach dem action-Attribut des Formulars (ist leer bei Deinem Code). Wenn Du $_GET auf den Inhalt 'register' prüfst, solltest Du das auch via URL im action-Attribut übergeben. Also so ähnlich:
Ansonsten ist da noch ein wenig Optimierungspotenzial in Deinem Skript. Aber fuchs Dich erstmal in die Basics rein und schalte die Fehlerausgabe ein (Trial - Error hat den größten Lerneffekt).
Gruß - TD
schau mal nach dem action-Attribut des Formulars (ist leer bei Deinem Code). Wenn Du $_GET auf den Inhalt 'register' prüfst, solltest Du das auch via URL im action-Attribut übergeben. Also so ähnlich:
if($showFormular) {
echo '<form action="' . $_SERVER['PHP_SELF'] . '?register=true" method="post">';
?>
.
.
.
Ansonsten ist da noch ein wenig Optimierungspotenzial in Deinem Skript. Aber fuchs Dich erstmal in die Basics rein und schalte die Fehlerausgabe ein (Trial - Error hat den größten Lerneffekt).
Gruß - TD
Das heißt, dass Du über das action-Attribut eine beliebige URL, in diesem Fall Dein PHP-Skript (über die Variable $_SERVER['PHP_SELF']), definierst, welche nach Submit aufgerufen wird.In der URL gibst Du auch die GET-Parameter mit:
Da Du das Formular nach erfolgter Registrierung sicher nicht nochmal anzeigen willst, solltest Du das Skript am Ende vom if(isset($_GET['register']))-Teil beenden:
Gruß - TD
http://URL?Parameter1=Wert&Parameter2=Wert...
Da Du das Formular nach erfolgter Registrierung sicher nicht nochmal anzeigen willst, solltest Du das Skript am Ende vom if(isset($_GET['register']))-Teil beenden:
<?
//Verarbeitung der GET-Parameter
if(isset($_GET['register'])) {
.
.
.
die;
}
//Formularanzeige
if($showFormular)
.
.
.
Gruß - TD