2017-07-30 2 views
0

eingestellt ist Ich baue ein Nachrichtensystem, um zu lernen, wie es funktioniert, und ich habe bereits so ziemlich alles. Ich kann mich anmelden und einen Beitrag auf einem Board machen, aber jetzt würde ich gerne in der Lage sein, es zu bearbeiten. Das Back-End ist fertig, es empfängt eine POST-Anfrage

Grundsätzlich, was ich tun muss, ist zu überprüfen, ob der aktuell angemeldete Benutzer der Autor eines bestimmten Beitrags aus Javascript ist, um die Bearbeitungsschaltfläche ein- oder auszublenden. Ich weiß, wie man erkennt, wenn der Benutzer von PHP angemeldet ist, so dass es Anfragen blockiert, wenn Sie nicht der Autor sind, aber ich kann die Schaltflächen nicht ausblenden oder anzeigen, da die Posts dynamisch aus einem <template> generiert werden.

Anmeldung Schnipsel:

$_SESSION["userid"] = $userid; 

Edit Kontrolle PHP-Schnipsel (ein bisschen Pseudo-Code):

if ($_POST["action"] == "modifypost" && isset($_POST["postid"]) && isset($_POST["content"])) 
{ 
    $post = get_post($_POST["postid"]); 
    if ($post.userid != $_SESSION["userid"]) 
    { 
    die("you are not allowed"); 
    } 
    //MySQL queries 
} 

Beitrag dynamische Generation (abgekürzt):

function add_post(post) { 
    var t = document.querySelector('#historypost'); 
    t.content.querySelector(".content").innerHTML = post.content; 

    var clone = document.importNode(t.content, true); 
    document.body.appendChild(clone); 
} 

ich ursprünglich gedacht hatte, Festlegen einer Variablen mit der Benutzer-ID aus HTML mit <script> und <?php ?>, aber dann könnte der Benutzer diese Variable manuell von der Konsole aus einstellen und die Schaltflächen anzeigen.

+0

Warum interessiert es dich, wenn ein Benutzer eine Taste zu sich selbst zeigt? Sie müssen die Anfrage auf der Serverseite trotzdem überprüfen. Ist es wichtig, ob die gesamte Anfrage gefälscht ist oder ob sie Ihre js verwendet hat, um sie zu erstellen? IMO müssen Sie sich nur darum sorgen, dass Benutzer andere Benutzer js (XSS) ändern und bestätigen, dass eine Benutzeranfrage beabsichtigt wurde (CSRF). Wenn sie die Konsole verwenden, um Ihre Website nur in ihren Augen zu verändern. Lass sie. – jh1711

+0

Wenn sie ihre Änderungen nicht speichern können, weil Sie es auf "Post" überprüfen, dann ist es egal, ob sie versuchen, das Javascript so zu bearbeiten, dass die Schaltfläche "Bearbeiten" usw. angezeigt wird. –

Antwort

2

ich ursprünglich ja eine Variable mit der Benutzer-ID von HTML der Einstellung mit <script> und <?php ?>

gedacht hatte, ist dies ein richtiger Ansatz. Im Grunde verwenden Sie PHP, um JavaScript mitzuteilen, welche Beiträge tatsächlich zum aktuellen Benutzer gehören.

aber dann würde der Benutzer in der Lage sein, manuell diese Variable von der Konsole auf und zeigt die Tasten

Wahr. Es gibt kein Weg, um Informationen von Benutzereinmischung zu sichern, sobald Sie es an den Browser gesendet haben. Dies liegt daran, dass der Benutzer die Kontrolle darüber hat, was im Browser ausgeführt wird.Anstatt über die Sichtbarkeit der Schaltfläche als Sicherheitsfeature nachzudenken, sollten Sie sie als Annehmlichkeit betrachten, um die Benutzerfreundlichkeit zu erhöhen.

Anwendungssicherheit wird wirklich auf dem Server erzwungen. Stellen Sie nur sicher, dass ein Benutzer die Beiträge eines anderen Benutzers nicht bearbeiten darf und nicht dem, was vom Browser kommt. Überprüfen Sie die Eingaben.

1

Im Idealfall würde ich lieber die Post-Rendering-Logik in der Server-Seite setzen.

Aber wie Ihre Lösung in Javascript konzentriert ist, macht eine Option PHP eine JavaScript-Variable rendern, die angibt, ob der Benutzer der Post-Autor ist.

Beispiel:

In Ihrer PHP-Datei, im HTML-Teil machen Sie dies tun können:

<script>var isAuthor = '<?php echo ($post.userid == $_SESSION["userid"])'; ?></script> 

dieses Tun Sie JavaScript-Skript Variable isAuthor genannt haben, der Wert "1" haben ist der Benutzer der Autor.

-

Aber wie gesagt, das ist wie ein guter Ansatz sieht nicht das Problem zu lösen. Es ist etwas, mit dem PHP besser umgehen kann, ohne Ihre Logik dem Client auszusetzen.

Verwandte Themen