2016-06-07 3 views
-1

Also, ich habe ein Formular, das in eine Datenbank eintritt und diese Werte werden dann auf der Seite wiedergegeben. Ich habe versucht herauszufinden, wie der gesamte Code deaktiviert wird, wenn er über das Formular verarbeitet wird.Wie kann ich Menschen davon abhalten, Code in meine Form zu bringen?

Das ist meine Form ist:

<div id="postForm"> 
     <form method="post" action="post.php" id="messageForm" autocomplete="off"> 
      <table border="0" align="center"> 
       <tr><td id="formBlock"><span>Name</span></td> 
       <td><input id="messageName" name="name" type="text" value="Anonymous" maxlength="32" required> 
        <input style="margin-right: -1px; margin-left: -4px;" type="submit" name="Submit" value="Send Message"></td></tr> 
       <tr><td id="formBlock"><span>Title</span></td> 
        <td><input id="messageTitle" name="title" type="text" maxlength="32" width="20"></td></tr><br> 
       <tr><td id="formBlock"><span>Message</span></td> 
        <td><textarea onkeyup="countChar(this)" name="message" rows="6" cols="50" form="messageForm" maxlength="2000" style="font-family: arial;" required></textarea></td></tr> 
      </table> 
     </form> 
      <table align="center" style="width: 290px; border: 0px;"> 
       <td><div id="warningText" style="font-size: 10px; margin-top: -15px;">Please read the FAQ before posting!</div></td> 
       <td><div id="messageText" style="font-size: 10px; margin-top: -15px; text-align: right;"></div></td> 
      </table> 
    </div> 

Und das ist, wie die Einträge hallen werden:

<div id="messages"> 
     <?php 
      $servername = "localhost"; 
      $username = "user"; 
      $password = "pass"; 
      $dbname = "db_posts"; 
      $tablename = "posts"; 

      $conn = new mysqli($servername, $username, $password, $dbname); 
      if ($conn->connect_error) { 
       die("failed to connect: " . $conn->connect_error); 
      } 

      $sql = "SELECT id, rating, name, title, message, date, time FROM posts ORDER BY date DESC, time DESC"; 
      $result = $conn->query($sql); 


      if ($result->num_rows > 0) { 
       while($row = $result->fetch_assoc()) { 
        echo "<br><div id='messageBar'><b><a class='rateup' href='index.php' data-id=' " . $row['id'] . " ' title='vote up'>&#9650;</a> "; 
        echo $row["rating"]; 
        echo " <a class='ratedown' href='index.php' title='vote down'>&#9660;</a> </b>"; 
        echo "Posted by <b>"; 
        echo $row["name"]; 
        echo "</b> on "; 
        echo $row["date"]; 
        echo " at "; 
        echo $row["time"]; 
        if (!empty($row['title'])) { 
         echo " - <b>"; 
         echo $row["title"]; 
         echo "</b>"; 
        } 
        echo "<span style='float: right'>#"; 
        echo $row["id"]; 
        echo "</span>"; 
        echo "</div><div id='messageContent'>"; 
        echo $row["message"]; 
        echo "</div><br><hr>"; 
       } 
      } else { 
       echo "<br>"; 
       echo "<center><i>it's dusty in here</i></center>"; 
       echo "<br>"; 
      } 

      $conn->close(); 
     ?> 
    </div> 

ich bin sicher, dass es ein besserer Weg, ich alle diese Daten echo kann, Wenn jemand irgendwelche Vorschläge hat, kannst du mich gerne wissen lassen.

TL; DR: Wenn jemand <b>text</b> in meine Form eingibt, möchte ich es wie <b>text</b> Echo.

+0

Auch möglich duplizieren von http://stackoverflow.com/a/6323198/5580153 –

+0

Können Sie Ihr Beispiel erklären? Der Eingabecode scheint derselbe wie der Ausgang zu sein. – chris85

+0

Sie füllen das Formular aus und es zeigt die Daten auf der Seite an. Deshalb sehen sie gleich aus. – Treedot

Antwort

-1

Am häufigsten werden Benutzerdaten codiert, wenn sie auf dem Bildschirm gerendert werden. Ich benutze PHP nicht, aber Sie können wahrscheinlich die htmlentities() Funktion verwenden.

Auf diese Weise werden alle Zeichen, die als Befehle im Browser interpretiert werden können, so codiert, dass sie genau wie ursprünglich eingegeben angezeigt werden.

+0

"Ich benutze kein PHP", dann schlage ich demütig vor, PHP-Fragen zu beantworten, ist vielleicht nicht die beste Idee. –

+0

Danke für den Hinweis. Ich beantwortete diese Frage basierend auf meiner Erfahrung mit XSS, die auch markiert wurde, wie Javascript und HTML. Es scheint jedoch, dass meine Antwort sich als weniger nützlich erwiesen hat, nicht weil sie inhaltlich ist, sondern dass ich keine umfassende Kenntnis des Rückstands von PHP-Fragen zu SO habe. –

Verwandte Themen