2009-07-07 5 views
0
<?php 

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

// sanitize variables 
$title = mysql_real_escape_string(trim($_POST['title'])); 
$text = mysql_real_escape_string(trim($_POST['text'])); 

if (strlen($title) > 3) { 

mysql_query("INSERT INTO msgs (title, text, date) 
      VALUES('$title', '$text', '".time()."')"); 
header('location: msg.php?id='.mysql_insert_id().''); 
exit; 

} 

else { 

echo '<h2>Errors</h2><p style="color: maroon">> Fields title and text must consist more than 3  characters.</span>'; 

} 


} 

?> 

Ist das sicher zu verwenden? Habe ich etwas vergessen? Nur sicherstellen, bevor ich dies öffentlich mache.Sicher, dieses Skript öffentlich zu machen? Newbie Frage

Antwort

4

Sie überprüfen nicht die Länge von 'Text'.

Was passiert, wenn mysql_real_escape_string FALSE zurückgibt?

Was passiert, wenn der Einsatz versagt? Sollten Sie das nicht überprüfen, bevor Sie eine Einfüge-ID erhalten?

2

Ich würde:

a) Fügen Sie einen Aufruf strip_tags(), wenn HTML nicht zulässig ist;
b) Fügen Sie einen Aufruf von htmlentities() hinzu, wenn HTML erlaubt ist.

1

Eine andere Sache, die Sie hinzufügen könnten, wäre zu überprüfen, dass die empfangenen Daten von Ihrem Formular in Ihrer Domain gesendet werden. Einige clevere Chaps da draußen könnten ihr eigenes Formular erstellen und in Ihrem Skript posten.