我正在寫簡單的AJAX函數來向服務器發送註釋並將它們保存在使用php的mySQL數據庫中。用哈希標記保存文本(Javascript - PHP - MySQL)
下面的代碼似乎工作得很好,我的目的,基本的,但他的工作,直到我試圖把一個哈希符號(#)在評論。 插入到文本「崩潰」我的功能,而不保存在數據庫中的書面文字,並基本上返回一個空的div。
這是AJAX調用:
function sendComment(n){
var xmlhttp = createAjax();
var text = document.getElementById("f"+n).value;
if (!validation(text))
return false;
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200){
appendComment(n, xmlhttp.responseText);
}
}
...
url = "comments.php?news="+n+"&text="+text;
xmlhttp.open("GET", url, true);
xmlhttp.send();
...
}
凡createAjax簡單地創建用於每一個瀏覽器作爲標準XMLHTTP對象,驗證是用於檢查等<很多符號的函數,>,=,(,), |用正則表達式。
這是PHP的一部分:
function insertComment($text, $news){
$conn = dbConnect();
$user = $_SESSION["user"];
$text = nl2br(htmlentities($text));
$date = date("Y-m-d H:i:s");
$sql = "INSERT INTO comments(user, news, date, text) VALUES ('".$user."','".$news."','".$date."', '".$text."')";
mysql_query($sql) or die ("Errore in inserimento: ".sql_error());
echo writeSingleComment($user, $date, $text);
mysql_close(conn);
}
它只是連接,節省了評論,並返回與之呼應的HTML代碼,使JavaScript函數可以打印。
這顯然適用於任何文本,但我不能讓它與哈希一起工作,我錯過了什麼? Sidenotes,我可以簡單地將符號添加到驗證常規expr中,但我的觀點是「打印」它,而不僅僅是排除它。提前致謝! Sidenote 2,javascript將註釋附加到一個靜態元素。
「我是否錯過了什麼」 - 將數據與散列並將其放入HTTP請求中的代碼。 – Quentin
**危險**:您正在使用[一個**過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http:// php。淨/手動/ EN/mysqlinfo.api.choosing.php)。你可能也容易受到[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會更容易[防衛](http://stackoverflow.com/questions/) 60174/best-way-to-prevent-sql -injection-in-php)自己從。 – Quentin
我簡單地寫了/ *打開發送等。* /讓它更快,讓我編輯完整的代碼 –