ilch Forum » Allgemein » HTML, PHP, SQL,... » PHP Ausgabe Falsch

Geschlossen
  1. #1
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beitrge
    3.380
    Beitragswertungen
    206 Beitragspunkte
    Hallo,
    folgendes probiere ich, die variable nid entspricht einem anderem user ( Manipuliert im html ), somit gehört die uid nicht zu dem eintrag der Notification theoretisch sollte dann wenn ich das ganze absende ein Error ausgegeben werden. Der Eintrag wird nicht verändert aber es wird mir immer angezeigt "Erfolgreich als gelesen markiert.", kann mir einer sagen was der Fehler ist?
    if (isset($_POST['nid'])){
        $nid = $_POST['nid'];
        $uid = $_SESSION["global_uid"];
        if ($con->connect_error) {
            die("Connection failed: " . $con->connect_error);
        }
        $sql = "UPDATE notifications SET status='1' WHERE nid=$nid AND uid=$uid";
        if ($con->query($sql) === TRUE) {
            echo "
                <div class='alert alert-success alert-dismissible fade show mb-0' role='alert'>
                  <strong>Erfolgreich als gelesen markiert.</strong>
                  <button type='button' class='close' data-dismiss='alert' aria-label='Close'>
                    <span aria-hidden='true'>&times;</span>
                  </button>
                </div>";
        } else {
            echo "<div class='container'><p class='bg-danger' style='padding:20px;'>";
            echo "ERROR: " . $con->error;
            echo "</p></div>";
        }
    }
    while(!asleep()) sheep++;
    www.movely.biz
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beitrge
    1.083
    Beitragswertungen
    121 Beitragspunkte
    Du machst an keiner Stelle einen Vergleich ob die uid = nid ist. Somit ist die Abfrage immer TRUE

    if ($con->query($sql) === TRUE) {
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beitrge
    3.380
    Beitragswertungen
    206 Beitragspunkte
    Uid ist ja auch nicht nid
    Nid=notification id
    Und=User id
    Die if Abfrage ist ja dazu da um zu gucken ob die QuerY korrekt ist, aber dadurch das die Daten nicht passen dürfte das ja nicht true sein, da ich alles manipuliert habe. Die notification id gehört nicht zu dem User der dahinter steckt, dann dürfte die Quere ja fehlerhaft sein, also der Eintrag ändert sich ja auch nicht aber die Ausgabe ist falsch.
    while(!asleep()) sheep++;
    www.movely.biz
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beitrge
    1.083
    Beitragswertungen
    121 Beitragspunkte
    In der Zeile
    $sql = "UPDATE notifications SET status='1' WHERE nid=$nid AND uid=$uid";


    Hier will er das Update ausführen... auch wenn er hier nicht updaten kann, bzw. was in die Tabelle eintragen kann, weil die ID`S nicht zu einander passen, wird er dir hier immer ein TRUE zurück geben.

    Deswegen läuft der code hier auch weiter

    if ($con->query($sql) === TRUE) {
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beitrge
    3.380
    Beitragswertungen
    206 Beitragspunkte
    Ok ich verstehe werd ich anpassen
    while(!asleep()) sheep++;
    www.movely.biz
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Nex4T Moderator
    Registriert seit
    28.02.2007
    Beitrge
    3.380
    Beitragswertungen
    206 Beitragspunkte
    Klappt ganz easy^^ manchmal siehst du den wald vor lauter bäumen nicht, danke Corian zwinker
    while(!asleep()) sheep++;
    www.movely.biz
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    corian Entwickler
    Registriert seit
    16.06.2011
    Beitrge
    1.083
    Beitragswertungen
    121 Beitragspunkte
    Kein Problem, gerne wieder Bier
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurck zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten