PHP Rechteverteilung?

 Hallo zusammen. Ich habe eine Aufgabe, in der es darum geht, eine einfache Webseitenstruktur zu erstellen. Dabei soll es eine einfache Inventarliste sowie eine Benutzerverwaltung geben. Dabei soll es einen Admin geben, der in der Lage ist, in der Inventarliste Sachen hinzuzufügen, sowie in der Benutzerverwaltung Mitarbeiter zu erstellen, Updaten und Löschen. Folgendes Problem: In der Einlogen.php habe ich eine Methode getRights() erstellt. in dieser Methode wird dem eingeloggten User die Rollen gegeben, welche sich in der Tabelle Rechte befinden. Diese werden in Session-Variablen gespeichert. Jedoch speichert die Session-Variable, die für die Rollen zuständig ist die Rollen nicht. So hat selbst der Admin-Account keinen Zugriff auf die Benutzerverwaltung. Die Abfragen selbst funktionieren. Ist selbst getestet worden. 

 Einen schönen Abend noch.

<?php
Session_start();
// Überprüfe, ob der Benutzer angemeldet ist
$server= "localhost";
  $port="3307";
  $user = "root";
  $passwd = "usbw";
  $datenbank = "benutzerdaten";
  $con = mysqli_connect($server,$user,$passwd,$datenbank,$port);
  mysqli_select_db($con,"benutzerdaten");
  
  // Prüfen, ob der User den Adminbereich betreten darf
  if(!isset($_SESSION['Rollen']) OR !in_array('User_administrieren', $_SESSION['Rollen']) == true)
    die("Sie haben keine Berechtigung, diese Seite zu betreten!\n");
 ?>

 

<html>
  <head>
  
   <meta charset="utf-8">
   
   <title>Registrierung</title>
   
   <link rel="Stylesheet" type="text/css" href="Abschlussprojekt.css">
   
  </head>
  
  <body>
  <div class ="headmain2">
     <a class= "Startseite" href="Startseite.php">Benutzerverwaltung</a>
     <a class= "Inventarliste" href="Inventarliste.php">Inventarliste</a>
     <a class= "Benutzerverwaltung" href="Benutzerverwaltung.php">Benutzerverwaltung</a>
 
      </div>
      
</body>
</html>
SQL, Datenbank, PHP, Programmiersprache
SQL Server ist kaputt?

Hallo,

ich habe ein ziemlich fehlerhaftes SQL Statement (transaction-Statement) in SQL Management Studio abgesetzt. Nun funktioniert irgend etwas nicht mehr so das mir Schnittstellen QUues volllaufen. Ein weiterer Faktor ist das mir das SQL-Server Management Studio (läuft auf einem WIndows-Server) viel Arbeitspeicher braucht SQL Server Windows NT - 64Bit verbraucht über 1 GB. Weiß jemmand was man da machen kann oder warum das so romort?

Das abgesetzte Statement

BEGIN TRANSACTION;
IF EXISTS (SELECT A.PATIENTENID, A.FALLID, A.BEFUNDID, A.SOURCE, A.UNTERSUCHUNGSART, A.UNTERSUCHUNGSZEIT, A.BEFUNDTEXT, A.AUFTRAGSNR,B.GEB, B.GESCHLECHT, B.NACHNAME, B.VORNAME, C.MERKMALTEXT,D.AUFTRAGSART,D.AUFTRAGSTATUS,D.FD, E.DOCID, F.ORT, F.FD FROM dbo.BEFUND as A, dbo.PATIENT as B, PATMERKMAL as C, LABOR_AUFTRAG as D, dbo.HCMDOC as E, dbo.BEHANDLUNG as F WHERE BEFUNDID=BEFUNDID )
BEGIN
UPDATE dbo.BEFUND SET 
PATIENTENID=PATIENTENID,
FALLID=FALLID,
SOURCE=SOURCE,
UNTERSUCHUNGSART=UNTERSUCHUNGSART,
UNTERSUCHUNGSZEIT=UNTERSUCHUNGSZEIT,
BEFUNDTEXT=BEFUNDTEXT,
AUFTRAGSNR=AUFTRAGSNR
WHERE BEFUNDID=BEFUNDID;
END
ELSE
BEGIN
INSERT INTO dbo.BEFUND (PATIENTENID,FALLID,BEFUNDID,SOURCE,UNTERSUCHUNGSART,UNTERSUCHUNGSZEIT,BEFUNDTEXT,AUFTRAGSNR) 
VALUES ('122','8753','45775','Source','uart','4665','Befundtext','094z74');
END
IF NOT EXISTS (SELECT 1 FROM dbo.SYSTEM WHERE NAME=SOURCE )
BEGIN
INSERT INTO dbo.SYSTEM (NAME) 
VALUES (SOURCE);
END
SQL, Datenbank, SQL-Server
Werte aus Datenbank anzeigen mit JS?

Hallo,

ich habe folgenden Code für mein Formular:

<form action="/message1" method="post">
  <div class="input">
    <input type="text" placeholder="Chat" id="input" name="input1">
  </div>
  <div class="send">
    <button type="submit" onclick="message();">Send</button>
  </div>
</form>

Nun noch das JS onclick-Event:

function message() {
  input = document.getElementById("input").value;
  count++;

  if (input == "") {
    alert("please type your message!");
  }
  else {
    if (count % 2 == 0) {
      let newDiv = document.createElement("div");
      newDiv.id = "divMessage";
      newDiv.style.display = "flex";
      newDiv.style.justifyContent = "flex-start";
      newDiv.style.margin = "45px";
      newDiv.style.backgroundColor = "#303032";
      newDiv.style.borderRadius = "10px";
      newDiv.style.padding = "10px";
      newDiv.style.marginTop = "80px";
      newDiv.style.color = "white";
      newDiv.style.marginBottom = "80px";
      newDiv.style.width = "120px";
      newDiv.innerHTML = input;

      let chatMessages = document.querySelector(".chat-messages");
      chatMessages.appendChild(newDiv);
    }

Und nun noch das Reinschreiben mit node.js in die MariaDB-Datenbank:

app.post('/message1', async (req, res) => {
  const input = req.body.input1;
  console.log(input);
  const conn = await pool.getConnection();
  await conn.query(`INSERT INTO test.handy (id, name) VALUES (2, '${input}')`);
  conn.release();
});

Nun möchte ich aber, das, was in die Datenbank geschrieben wurde, beim Aktualisieren der Seite immer noch im "newDiv" anzeigen. Wie geht das?

LG

HTML, Webseite, Datenbank, Programmiersprache, Webentwicklung
Wie kann der eingegebene Eintrag nach Bestätigung in die Datenbank gespeichert werden?

Hallo,

mit folgendem Code scheint es nicht zu funktionieren, dass die Eingabe nach Bestätigungsfrage nicht in der Datenbank aktualisiert. Warum? Bin neu in PHP
Danke!

 if ($name_select && $name_select !== $_POST["name"]) {

    // Meldung ausgeben, dass bereits ein Eintrag vorhanden ist

    echo "Es ist bereits ein Eintrag in der Spalte $column_name vorhanden. Möchten Sie den Eintrag wirklich überschreiben?";

    echo "<form action='putzgruppen.php' method='post'>";

    echo "<input type='hidden' name='name' value='" . $_POST["name"] . "'>";

    echo "<input type='hidden' name='column_name' value='" . $column_name . "'>";

    echo "<input type='submit' name='confirm' value='Ja'>";

    echo "<input type='submit' name='cancel' value='Nein'>";

    echo "</form>";

  } else {

    if ($count == 0) {

      // Einfügen des Namens in die Datenbank

      $name = $_POST["name"];

      $sql = "INSERT INTO Putzgruppe ($column_name) VALUES ('$name')";

      if (mysqli_query($conn, $sql)) {

        echo "Daten erfolgreich gespeichert.";

        header("Location: putzgruppen.php"); // Weiterleitung zur Datenbankseite

        exit(); // Beenden des Skripts, um ein weiteres Ausführen zu verhindern

      } else {

        echo "Fehler: " . $sql . "<br>" . mysqli_error($conn);

      }

    } else {

      if(isset($_POST['confirm'])) {

        // Aktualisierung des bestehenden Eintrags

        $name = $_POST["name"];

        $column_name = $_POST["column_name"];

        $sql = "UPDATE Putzgruppe SET $column_name='$name' WHERE $column_name='$name_select'";

        if (mysqli_query($conn, $sql)) {

          echo "Daten erfolgreich aktualisiert.";

          header("Location: putzgruppen.php"); // Weiterleitung zur Datenbankseite

          exit(); // Beenden des Skripts, um ein weiteres Ausführen zu verhindern

        } else {

          echo "Fehler: " . $sql . "<br>" . mysqli_error($conn);

        }

      }

    }

  }

} else {

  echo "Das Eingabefeld ist leer.";

}

Datenbank, MySQL, PHP
Wie vergleiche ich PHP Variablen mit unterschiedlicher Codierung?

Hallo liebe Community.

Ich suche die Lösung für ein Problem bei der Programmierung mit PHP und Variablen.

Ich möchte gerne einen Wert, den ich über mysqli abgerufen habe mit einer Variable aus einem Array vergleichen.

Das Problem dabei ist, dass bei Umlauten und Sonderzeichen das Programm nicht mitmacht. Die beiden verglichenen Werte müssten gleich sein, werden aber nicht als gleich erkannt.

Hier mein Beispiel:

Datenbank:

id --- vorname --- nachname

1 --- Sabrina --- M&uuml;ller

PHP:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  

(Hier ein PHP Abschnitt zur Eintragung in die Datenbank, also demnach auch in UTF8 codiert)

$test = array("Sabrina","M&uuml;ller");

$result = mysqli_query($datenbank,"SELECT vorname, nachname FROM telefonbuch WHERE id='1'");

while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)) {

if($row['nachname']==$test[1])

echo "Erfolg";

else

echo "Kein Erfolg";

}

Ergebnis:

Wenn ich die Seite so aufrufe, kommt "Kein Erfolg".

Die Datenbank umfasst mehr Einträge, also alles andere ist richtig programmiert. Alles hat "Erfolg", nur die Einträge mit ä,ö,ü,ß,@, etc. haben keinen Erfolg.

Auch if($row['nachname']=='Müller') → Kein Erfolg

Auch if($row['nachname']=='M&uuml;ller') → Kein Erfolg

Auch wenn ich beide Werte vorher in Variablen packe → Kein Erfolg

Ein Test mit:

echo mb_detect_encoding($str)

Ergibt bei:

$row['nachname'] → UTF-8

$test[1] → ASCII

Wieso kann ich diese beiden Variablen nicht miteinander vergleichen und was kann ich tun, um dieses Problem mit den Umlauten zu lösen?

Vielen Dank für jede Hilfe.

Liebe Grüße =)

HTML, Webseite, Datenbank, MySQL, PHP
C# REST: Wieso bekomme ich die Fehlermeldung "There is already an open DataReader associated with this Connection which must be closed first."?

Hallo,

ich benutze C# in einer Web-API-Anwendung (Minimal WebApi Projekt, REST).

Dazu benötige ich Zugriffe vom REST-Server auf eine Datenbank (MSSQL-Server).

Mein Frage ist, warum ich beim Versuch, eine Tabelle abzufragen, folgenden Fehler erhalte:

System.InvalidOperationException: 
There is already an open DataReader associated with this Connection which must be closed first.

Ich weiß nicht, was diesen Fehler verursacht.

Code, wo das passiert:

Program.cs:

//REST Endpoint
//
app.MapGet("/Inquiry/test/{InquiyId}", async (CCTPDbContext db, HttpRequest request) =>
{
  int InquiyId = Int32.Parse(request.RouteValues["InquiyId"].ToString());
  Inquiry? inquiryZ = await (from i in db.Inquiry
    where i.Id == InquiyId
    select new Inquiry
    {
      Id = i.Id,
      LocationId = i.LocationId,
      Description = i.Description,
      DateFrom = i.DateFrom,
      DateTo = i.DateTo,
      // hier Fehler Fehler: DataReader already open
      LocationLautLocationId = new Location().GetLocationById(db, i.LocationId),
      ....

Location.cs:

Hier habe ich verschiedene Varianten getestet. Alle liefern den selben Fehler " DataReader already open".

public Location? GetLocationById (CCTPDbContext db, int locationId)
{
  Location? loc = null;
  // Location? loc = db.Location.FirstOrDefault(l => l.Id == locationId);
  // using (CCTPDbContext dbcontext = db)
  // using (db)
  //{
  // Location? loc = dbcontext.Location.FirstOrDefault(l => l.Id == locationId);
  // loc = dbcontext.Location.FirstOrDefault(l => l.Id == locationId);
  // loc = db.Location.FirstOrDefault(l => l.Id == locationId);
  // var x = db.Location.Where (l => l.Id == locationId).ToList();
  // var records = dbcontext.Location.Where(r => r.SomeProperty == "some value").ToList();
  // return loc;
  // }

  loc = (from l in db.Location
    where l.Id == locationId
    select new Location
    {
      Id = l.Id, //FK
      Name = l.Name,
      Description = l.Description
    })
    .FirstOrDefault<Location>();
    
  return loc;
}
SQL, C Sharp, Datenbank, Visual Studio
mehrdemensionales Array aus Datenbank auslesen mit php?

Hallo ich programmiere mit einem kleinem Team eine Onboarding Website für Mitarbeiter. Allerdings haben wir ein Problem beim auslesen unserer Datenbank. wir haben uns mit dem fronted Team abgesprochen dass wir die Daten per Array übergeben. Nun haben wir uns die daten per Array ausgeben lassen, per foreach schleife ausgeben lassen und zurück in mehrdemsionales Array gepackt. Allerdings können wir dieses nur per var_dump ausgeben und nicht mithilfe einer foreach Schleife normal per echo.

Wie können wir das umbauen?

Hier der aktuelle Code:

<?php 


    function getdata() {
    $pdo = new PDO('mysql:host=localhost; dbname=t-systems', 'root', '', [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);
    $stmt = $pdo->prepare('SELECT * FROM `user`');
    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($results as $result) {
        $Ort = $result['Ort Name'];
        $ID_User = $result['ID'];
        $Vorname = $result['Vorname'];
        $Nachname = $result['Nachname'];
        $Telefonnummer = $result['Telefonnummer'];
        $mail = $result['Email'];
        $PLZ = $result['Plz'];
        $Straße = $result['Strasse'];
        $Hausnummer = $result['Hausnummer'];

        $userdata[] = [$Ort, $ID_User, $Vorname, $Nachname, $Telefonnummer, $mail, $PLZ, $Straße, $Hausnummer];
    }
       var_dump($userdata);

    }

Danke fürs weiterhelfen

Array, Datenbank, MySQL, PHP
wieso PHP Parse error: syntax error, unexpected token ";" in /home/emmanuel/Downloads/hp.php on line 11?
<link rel="stylesheet" href="style.css">
<?php
$db = unserialize(file_get_contents('data.php'));
if($db == false){
        $db = array();
}
if($_POST['mail'] == ''){
        if($_POST['name'] == ''){
                if($_POST['pass'] == ''){a
                        if(!array_key_exists($_POST['mail'], $db){
                                $db[$_POST['mail']] = [$_POST['name'], []];
                                file_put_contents('data.php', serialize($db));
                        } 
                }
        }
}
?>
<form action="" method="post">
    <center>
        <label for="firma_name" >name:</label><br>
        <input type="text" class="input" name="name" autocomplete="off"><br>
        <label for="produkte">email:</label><br>
        <input type="text"  class="input" name="mail" autocomplete="off"><br>
        <label for="adresse">pass:</label><br>
        <input type="text"  class="input" name="pass" autocomplete="off"><br>
        <input type="submit" class="anmelde_button" value="anmelden">
    </center>
</form>

wieso PHP Parse error: syntax error, unexpected token ";" in /home/emmanuel/Downloads/hp.php on line 11?

HTML, Webseite, CSS, JavaScript, HTML5, Datenbank, JQuery, MySQL, PHP, Programmiersprache, Webdesign, Webentwicklung, phpMyAdmin

Meistgelesene Fragen zum Thema Datenbank