PHP Login-System: Verschiedene User auf jeweiliges Skript?

Hey.

Ich hab auf meinem XAMPP Server eine Datenbank mit drei festen Usern. Diesen sind ein Nutzername/ID (z.B. 4644786744) und ein Passwort (z.B. 4vv41ge6w) zugewiesen.
In einer weiteren Datenbank stehen Datensätze mit Lizenzschlüsseln.

Nehmen wir an, es die Nutzer-IDs der User sind folgende:

ID von User-01: 64154186756
ID von User-02: 56416816489
ID von User-03: 47485694587

Angenommen, die Datenbank mit den Schlüsseln ist folgende:

LIZENZSCHLÜSSEL ID

v64v6d04s1vgb68rv 64154186756
b41aswgvb0n041nd4 64154186756
gbv145nj1r410ndss 64154186756
gvsagvb104gv84410 56416816489
w41fdw01scd485sw1 56416816489
gedavge68v1408041 47485694587

User-01 hat 3 Schlüssel. User-02 hat 2 Stück, und User-03 hat einen Lizenzschlüssel.

Meine Frage nun:

Ich möchte jetzt ein Login Formular haben, mit dem sich z.B. User-02 mit seiner ID als Nutzername und seinem Passwort als Passwort anmelden kann und so dann die zu ihm gehörigen Lizenzen einsehen kann.

Zu den drei Nutzern habe ich jeweils eine php-Datei. Führt man die Datei für User-03 aus, werden die dem User-03 zugewiesenen Lizenzen ausgegeben.

Wie schaffe ich es, dass wenn sich ein User anmeldet, dass das Skript dann auch auf "seine Datei" zugreift?

Ein bisschen Code wäre z.B. auch sehr hilfreich :)

Eine etwas längere Frage...
Aber vielen Dank für jede Antwort und Hilfe.

Computer, Technik, SQL, HTML, programmieren, Login, Datenbank, MySQL, PHP, Technologie, xampp
phpMyAdmin: Fehler bei der Konfiguration?

Moin zusammen,

nachdem ich XAMPP auf meinem Rechner neu eingerichtet habe, bekomme ich jetzt Fehlermeldungen bei phpMyAdmin:

Fehler: mysqli::query(): (HY000/1018): Verzeichnis von '.' nicht lesbar (Fehler: 13 "Permission denied")

Logisch, der Fehler ist "offensichtlich", er kann ein Verzeichnis nicht lesen. Lese+Schreib-Rechte geben hab ich schon versucht.

Wenn ich auf den Link "Finden Sie heraus warum" gehe, gibt er mir die Möglichkeit, eine Datenbank anzulegen und die Konfigurationsspeicher-Tabellen einzurichten.

Wenn ich auf "anlegen" klicke, kommt eine weitere Fehlermeldung:

Die config.inc.php spuckt das hier aus:

$cfg['blowfish_secret'] = 'xampp'; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */

/**
 * Servers configuration
 */
$i = 0;

/**
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = true;

/**
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';

/**
 * End of servers configuration
 */

Heute Mittag hat alles noch wunderbar funktioniert. Ich hatte dann versucht, mit compose phpmailer zu installieren. Da bekam ich dann Probleme mit den Rechten bei den Ordnern (innerhalb von lampp) und hab da womöglich irgendwas kaputt gemacht und jetzt alles neu installiert mit dem Ergebnis, dass MySQL Probleme macht.

Weiß jemand Rat? ^^

Bild zum Beitrag
PC, Computer, Linux, Datenbank, MySQL, PHP, phpMyAdmin
C# Kann nicht auf MySql DB (phpMyAdmin) zugreifen?

Ich wollte ein C# Programm schreiben um meine MySql Datenbank zu testen.
Das Programm soll sich mit der DB verbinden und die Datenbank Einträge in eine DataGridView eintragen. Den Code habe ich von hier: https://www.youtube.com/watch?v=SZqIjaizkTM&ab_channel=mhluc%23 (habe ihn aber ein bisschen verändert)
Ich komme jedoch nicht in die Datenbank rein.

Es gibt Probleme bei dem Connection.OpenAsync()

Hier die Exception:

MySql.Data.MySqlClient.MySqlException
 HResult=0x80004005
 Nachricht = Unable to connect to any of the specified MySQL hosts.
 Quelle = MySql.Data
 Stapelüberwachung:
  at MySql.Data.MySqlClient.NativeDriver.Open()
  at MySql.Data.MySqlClient.Driver.Open()
  at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
  at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
  at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
  at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
  at MySql.Data.MySqlClient.MySqlPool.GetConnection()
  at MySql.Data.MySqlClient.MySqlConnection.Open()
  at System.Data.Common.DbConnection.OpenAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
  at VoidRaiderDB_Browser.MainWindow.<MenuStripItemClicked>d__3.MoveNext() in D:\Projects\VoidRaiderDB Browser\VoidRaiderDB Browser\MainWindow.cs:line 31

 Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
  [Externer Code]

Innere Ausnahme 1:
AggregateException: One or more errors occurred. (Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.)

Innere Ausnahme 2:
SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.

glaube ich habe beim Connection String verkackt aber habe keine Ahnung was ich falsch gemacht habe..

Das Passwort/User-Name ist richtig da ich mit den auch in die phpMyAdmin Seite reinkomme

Bild zum Beitrag
Computer, Internet, Software, Technik, programmieren, C Sharp, Datenbank, Informatik, MySQL, Technologie, phpMyAdmin
PHP: Datum korrekt in Datenbank speichern?

Hey Leute, ich habe folgendes Problem: Ich möchte über ein Input mit dem Type date ein Datum abspeichern, dieses anschließend wieder auslesen und dann die übrigen Tage (also Tage bis zum Tag x) berechnen. Allerdings kommt folgender Fehler beim auslesen, und auch in der Datenbank steht das Datum nur als 0000-00-00:

Notice: A non well formed numeric value encountered in C:\xampp\htdocs\haushalt\tasks\index.php on line 47

Hier mein Code zum speichern des Inputswert:

 require ("../.res/php/mysql.php");

            $taskname = $_POST["title"];
            $owner = $_POST["taskowner"];
            $points = $_POST["points"];
            $frist = strtotime($_POST["dateToDo"]);
            $frist = date("d.m.Y", $frist);
            $repeat = $_POST["repeat"];
            $changedate = $_POST["change"];

            //GET USERID
            $stmt = $mysql->prepare("SELECT id FROM accounts WHERE username = :user");
            $stmt->bindParam(":user", $owner);
            $stmt->execute();
            $count = $stmt->rowCount();
            if($count == 1){
                $row = $stmt->fetch();
                $stmt = $mysql->prepare("INSERT INTO tasks (title, dateToDo, repeating, userid, changeAfterDays, points) VALUES (:title, :datedo, :repeating, :userid, :changeafter, :points)");
                $stmt->bindParam(":title", $taskname);
                $stmt->bindParam(":datedo", $frist);
                $stmt->bindParam(":repeating", $repeat);
                $stmt->bindParam(":userid", $row["id"]);
                $stmt->bindParam(":changeafter", $changedate);
                $stmt->bindParam(":points", $points);
                $stmt->execute();
                header("Location: ../tasks/");
            }else{
                $error = "Besitzer wurde nicht gefunden!";
            }

Und hier mein Code zum auslesen (Line 47 ist dick gedruckt):

$ddate = $row["dateToDo"] - $date;
Computer, Webseite, programmieren, MySQL, PHP
Like Button implementieren?

Schönen guten Abend allerseits,

Ich arbeite gerade an einer Website.

Auf dieser möchte ich gerne einen Like-Button implementieren und nicht auf irgendein fertiges Produkt zugreifen.

Ich frage mich bloß, wie ich das am geschicktesten anstellen kann.

Meine Herangehensweise:

Ich persönlich habe mir eine MySQL Tabelle namens likes erstellt, mit deren Hilfe ich ein erneutes Liken eines Nutzers (der den Like-Button schon einmal gedrückt hat) verhindern möchte.

Zur Identifizierung des Nutzers würde ich entweder eine Session-ID oder die IP-Adresse des Nutzers in der Tabelle speichern.

Das Problem bei der Session-ID ist, dass das Cookie nach einiger Zeit "verfällt" bzw. bei der nächsten Löschung der Cookies nicht mehr vorhanden ist und erneutes liken wieder möglich ist. Zudem ist das erneute Liken in einem anderen Browser möglich.

Das Problem bei der IP-Adresse ist, dass ich nicht weiß, ob das ganze legal ist und erneutes Liken spätestens bei einer neuen IP-Adresse möglich ist.

Beim Laden der Seite stelle ich dann eine Datenbank-Abfrage mittels PHP an die Tabelle, in dem ich nach der entsprechenden Session-ID bzw. IP-Adresse suche.

Das sieht bei mir dann (mittels PDO) etwa so aus:

$stmt = $database->prepare('SELECT * FROM `likes` WHERE `sessid` = :sessid');
$stmt->execute(['sessid' => session_id()]);
$like = $stmt->fetch();

Im späteren Programmablauf wird dann überprüft, ob $like nicht "leer" ist und dementsprechend der Like-Button ($like ist "leer") oder nur die Likes ($like ist nicht "leer") ausgegeben werden.

Wenn der Like-Button nun schließlich gedrückt wurde soll eine asynchrone Anfrage an ein PHP Skript mittels AJAX gestellt werden. Im PHP Skript selbst werden entsprechende Likes in einer anderen Tabelle um 1 hochgezählt. Das PHP Skript selbst stellt dann noch eine Datenbank-Abfrage, in dem die aktuellen Likes aus der Tabelle geholt werden. Diese werden dann auch vom PHP Skript an den Client weitergegeben und im HTML-Dokument mittels JavaScript aktualisiert.

Die ganze Sache kommt mir nur nicht sonderlich elegant vor. Darunter auch die bei jedem Seitenaufruf überprüfende Abfrage, ob von diesem Nutzer bereits geliked wurde.

Zudem frage ich mich immer noch, ob ich mit der IP-Adresse oder einer Session-ID arbeiten soll - hat ja beides Vor- und Nachteile.

Was haltet ihr von meinem Ansatz? Habt ihr selbst Vorschläge wie oder was man besser machen könnte?

Danke im Voraus!

LG

Webseite, programmieren, AJAX, Informatik, MySQL, implementierung, like-button
MySQL kann keine Verbindung zur Datenbank aufbauen?

Guten Tag,

ich bitte euch vorab den ganzen Text durchzulesen, da ich schon seit Tagen daran sitze das ganze zu beheben, sprich die Lösung zu finden und es mir nicht gelingt, danke!

Ich habe seit einiger Zeit einen VServer auf Debain 9 laufen, auf dem habe ich auch das beliebte "CloudNET" installiert und problemlos eingerichtet.

Ich habe mir auch ein Plugin heruntergeladen, welches MySQL benötigt, damit es funktioniert. Daher habe ich mir auch MySQL unter der Anleitung des folgenden Videos heruntergelden (https://www.youtube.com/watch?v=XP2Kvux4Zug&t=535s) Habe alles genau so gemacht, wie es im Video gezeigt wurde.

Jetzt aber das komische: Ein Kollege von mir hat das ganze ebenfalls ausprobiert, sprich sich das Plugin geholt, einen VServer mit Debain 10 am laufen gehabt und, jedoch kein CloudNet und es ging, er hatte das gleiche Video wie ich zur Installation benutzt.

An CloudNET liegt es übrigens nicht, ich habe es auf einem Server, unabhängig von den anderen mit einem anderen Port versucht und es ging trotzdem nicht. Ebenfalls hat es anscheinend auch nichts mit dem Betriebssystem zu tun, da im Video gezeigt wird, dass es für Debain 9 sowie Debain 10 funktioniert.

Immer wieder die selbe Fehlermeldung: Error: Could not connect to database (com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.)

Liegt es eventuell an dem Hoster, wir beide benutzen einen Unterschiedlichen ich nutze (https://www.opusx.io/). Er nutzt (https://mc-host24.de/)? Kann mir da irgendjemand weiterhelfen, ich wäre wirklich dankbar!

Computer, programmieren, Datenbank, MySQL, PHP, Root Server, vServer, phpMyAdmin, CloudNet
MySQL / PHP | Wie Nachricht mit userid senden?

Hallo zusammen,

ich habe eine PHP-Datei, welche eine Nutzereingabe (Nachricht) an eine Datenbank überträgt. Nun würde ich noch gerne nebst der Nachricht auch noch die userid an die Datenbank mitsenden.

Folgend die einzelnen Codes:

Login.php:

<?php
  session_start();

  $pdo = new PDO('mysql:host=localhost;dbname=db', 'root', ');

  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="message.php">Nachrichten</a>');
    }
    else {
      $errorMessage = "E-Mail oder Passwort war ungültig. Bitte versuchen Sie es nochmals. <br>";
    }
  }
?>
<html>
  <body>
    some content ...

sendmessage.php:

<?php
  session_start();

  if (!isset($_SESSION['userid'])) {
    die('Bitte zuerst <a href="login.php">einloggen</a>');
  }

  // Abfrage der Nutzer ID vom Login $userid = $_SESSION['userid'];
?>
<form action="ed-to-do-list.php" method="POST">
  <br><br>
  <input type="text" id="input" name="message" class="Input-text"
  <button class="btn" type="submit" name="abschicken">Senden</button>
  <?php
    if (isset($_POST['abschicken'])) {
      require("inc/db_connect.php");

      $message = $_POST['message'];
      $userid = $_POST['$userid'];

      // Abfrage der Nutzer ID vom Login (funktioniert im ersten PHP-Code)
      $userid = $_SESSION['userid'];
      $sql = "INSERT INTO ``table` (`Number`, `Message`, `created_at`, `userid`) VALUES (NULL, :message, CURRENT_TIMESTAMP, :userid)";
      $stmt = $dbh->prepare($sql);
      $stmt->bindValue(':message', $message);
      $stmt->bindValue('$userid', $userid);
      $stmt->execute();

      echo "Vielen Dank für Ihre Nachricht.";
    }
  ?>

Ohne die komplette userid-Geschichte funktioniert alles perfekt. Sobald ich jedoch die userid auch noch mit dazu schicken/speichern möchte, funktioniert gar nichts mehr.

Könntet ihr mir da eventuell weiter helfen?

Ich habe schon viel gegoogelt und viele Tutorials angesehen, aber überall wird die Sache mit der userid anders gehandhabt.

Ich danke euch bereits jetzt schon vielmals für eure Antworten und eventuelle Rückfragen. Ihr würdet mir sehr helfen.

Computer, MySQL, PHP

Meistgelesene Fragen zum Thema MySQL