2011-11-15 561 views
0

我對php很陌生,對於這個問題一般的服務器腳本(所以對我來說很容易)
但是不管我設法創建這個,評論系統的前半部分:php + mysql評論系統

<html> 
<body> 
<form name="Comment" action="InsertComment.php" method="POST"> 
Name: <input type="text" name="name" /><br> 
Comment: <br><textarea style="height: 100px; width: 600px;" name="comment"></textarea><br> 
<input id="Special_ID" name="id" value="<?php $unixtime = time(); echo $unixtime; ?>"> 
<!--^Gathers a unique id^--> 
<input type="submit" /> 
</form> 
</body> 
</html> 

一旦提交 - >

<?php 
$con = mysql_connect("Blaa", "Blaa", "Blaa"); 
if(!$con) { 
die('Could not connect ' . mysql_error()); 
} 
sql_select_db("Comments", $con); 
$sql = "INSERT INTO Posts (Name, Comment, ID) 
VALUES('$_POST[name]', '$_POST[comment]', '$_POST[id]')"; 
?> 

這正是我想要的,用戶將在他們的名字,註釋,並生成一個唯一的ID後(時間標記),然後它全部發送到MySQL。
但現在我發現啞巴,我怎麼能張貼此到另一個頁面.. 我認爲是這樣的:

if(ID == [the id of that post]) { 
//$_GET the mysql stuff 
//Post inside a specially made div or something 
} 

沿該線,但我不知道如何將它放入練習:/ 有什麼想法? 哦和不建議回聲類型的帖子,我已經這樣做,它不是我想要的。

**此外,這只是基本的代碼,我不需要建議如何觸摸它只是因爲我的睡眠剝奪,代碼確實工作。

+3

尼斯[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)洞。您的時間ID不起作用 - 不能保證兩個不同的用戶不會同時加載表單並獲得相同的ID。 –

+0

首先使用時間戳刪除隱藏字段,並使用on update =當前時間戳將ID列更改爲時間戳列。然後再添加兩列 - 評論的ID(應該是帶有自動增量的主鍵)和page_id列。接下來將page_id添加爲表單中的隱藏字段,並在mysql插入語句中使用它。 – Vladimir

回答

2

由於@Marc B已經說,您首先需要使用mysql_real_escape_string解決您的SQL injection孔。改變你的INSERT語句

$sql = "INSERT INTO Posts (Name, Comment, ID) 
     VALUES('" . mysql_real_escape_string($_POST['name']) . "', '" . mysql_real_escape_string($_POST['comment']) . "', '" . mysql_real_escape_string($_POST['id']) . "')"; 

要顯示你的評論,CSS style使用IDs and classes您的DIV試試這個

$sql = "SELECT Name, Comment, ID 
     FROM Posts 
     WHERE ID = '" . mysql_real_escape_string($_GET['PostID']) . "'"; 
$query = mysql_query($sql); 

echo "<div id=\"comments_container\">"; 
while ($row = mysql_fetch_assoc($query)) 
{ 
    echo "<div class=\"comment\">"; 
    echo "<div class=\"name\">" . $row['Name'] . "</div>"; 
    echo "<div class=\"comment_body\">" . $row['Comment'] . "</div>"; 
    echo "</div>" 
} 
echo "</div>"; 

然後。

0

使用mysql_fetch_object

插入到MySQL之前,請淨化你的$ _GET數據,這是一個巨大的注入安全漏洞只是一個例子。

$sql = "SELECT * FROM Posts WHERE id={$id}" 
$result = mysql_query($sql); 
$obj = mysql_fetch_object($result) 
if(is_object($obj)) 
{ 
echo "Welcome " . $obj->Name; 
}