Ankündigung

Einklappen
Keine Ankündigung bisher.

Session User ID auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session User ID auslesen

    Hallo zusammen

    Ich bin noch neu mit PHP und versuche mich grade an etwas kleinem was einem Ticket System ähneln soll.
    Folgendes Problem, ich mache folgende MySQL Abfrage:
    PHP-Code:
    $_SESSION["id"] = $id;
    $sql "SELECT id, title, date, status FROM tickets WHERE userid = $id";
    $result mysqli_query($conn$sql); 
    Soweit so gut, doch immer, wenn die WHERE condition hinten dran ist, kriege ich keine Einträge mehr in der Tabelle, welche alle Einträge ausliest.
    Ich verstehe nicht ganz, wieso das nicht funktioniert, es muss an der WHERE condition liegen, denn ohne geht es ja (naja, dann einfach halt von allen Usern).

    Um eine Antwort wäre ich sehr dankbar

    Beste Grüsse
    Andri

  • #2
    Erstmal hast du dir eine schöne Sicherheitslücke gebaut, nutzte Prepared Statements wenn du User Eingaben in deiner Query nutzt.
    Zum anderen bekommst du mit deiner WHERE Bedingung ja nur die Einträge, welche auch die entsprechende userid haben.

    https://www.w3schools.com/php/php_my...statements.asp

    Kommentar


    • #3
      Hey

      Das mit der Sicherheitslücke ist mir bewusst und ist auch erstmal nur zum rumpröbeln, 3 Zeilen weiter oben stehen nämlich auch noch die SQL Daten
      Das ist das Ziel, ich will mir ja in dem Falle hier nur meine eigenen Tickets anzeigen lassen, nur kriege ich dann gar keine mehr angezeigt.
      Auch bei einer anderen Abfrage war es mir nicht möglich eine WHERE condition mit der User ID zu machen.

      Kommentar


      • #4
        Zitat von Andri Beitrag anzeigen
        Auch bei einer anderen Abfrage war es mir nicht möglich eine WHERE condition mit der User ID zu machen.
        Dann solltest du mehr Informationen posten, anhand dessen was du gepostet hast lässt sich nicht sagen was (neben der fehlenden Behandlung des Kontextwechsels) falsch ist. btw: was steht nach den Zeilen in $result?

        Kommentar


        • #5
          Dann poste doch mal dein Tabellen Schema, so dass wir die Tabelle nachstellen können. http://sqlfiddle.com/

          Kommentar


          • #6
            PHP-Code:
            <?php
            $servername 
            "xxxx";
            $username "xxxx";
            $password "xxxx";
            $dbname "xxxx";

            $conn mysqli_connect($servername$username$password$dbname);
            if (!
            $conn) {
              die(
            "Die Verbindung ist fehlgeschlagen: " mysqli_connect_error());
            }
            $_SESSION["id"] = $id;
            $sql "SELECT id, title, date, status FROM tickets WHERE userid = " $_SESSION["id"];
            $result mysqli_query($conn$sql);

            if (
            mysqli_num_rows($result) > 0) {
              
            // output data of each row
              
            while($row mysqli_fetch_assoc($result)) {
                  echo 
            "<tr>";
                  echo 
            "<td>" $row["id"] . "</td>";
                  echo 
            "<td>" $row["title"] . "</td>";
                  echo 
            "<td>" $row["date"] . "</td>";
                  echo 
            "<td>" $row["status"] . "</td>";
                  
            ?> <td><a href="#" role="button" class="btn btn-warning">Ticket ansehen</a></td> <?php
              
            }
            } else { 
            ?>
              <div class="alert alert-primary" role="alert">Es existieren zurzeit keine Tickets!</div>
            <?php }

            mysqli_close($conn);
            ?>
            So, das wäre das ganze.
            Um es nochmal kurz zu erklären: Es soll ein Ticketsystem werden, ich versuchte mir mit oben stehendem Code alle Tickets, mit der entsprechenden User ID anzeigen zu lassen, leider ohne Erfolg.

            Edit: Hab das ganze Mal gemacht: http://sqlfiddle.com/#!9/52602d5/1
            Abgesehen vom default value für "date".

            Kommentar


            • #7
              Die ID wird in deinem Skript ja nirgendwo gesetzt. Dreh mal dein Error Reporting hoch, dann solltest du auch Fehler sehen.

              https://php-de.github.io/jumpto/leitfaden/

              Kommentar


              • #8
                Okay, das werde ich sicher noch versuchen, hab das Erstellen aber noch nicht gemacht, war daher nur so gut wie möglich grade gemacht. Habe es bisher immer manuell eingetragen, wollte erst das einmal hinkriegen.

                Kommentar


                • #9
                  http://sqlfiddle.com/?_escaped_fragm...1#!9/52602d5/2

                  Kommentar


                  • #10
                    Ja, wenn ich die ID einfach eintrage geht es, aber das ist ja nicht Sinn der Sache, der soll ja die ID der Session auslesen.

                    Kommentar


                    • #11
                      PHP-Code:
                      $_SESSION["id"] = $id;
                      $sql "SELECT id, title, date, status FROM tickets WHERE userid = " $_SESSION["id"]; 
                      siehe Beitrag #7
                      Wenn du weisst woher du die Variable $id holst kannst du diese auch gleich verwenden. Vorab aber prüfen ob sie wirklich ein integer >0 ist, sonst ist das eine Sicherheitslücke.

                      Kommentar

                      Lädt...
                      X