Tôi đang cố gắng sử dụng javascript, không có khung (nguyên mẫu, jQuery, v.v.), để chèn dữ liệu được chuyển từ biểu mẫu html sang cơ sở dữ liệu mysql. Tôi đã quản lý để có được điều này làm việc nhưng, có được một vấn đề với một số ký tự đặc biệt thường được sử dụng trong ngôn ngữ của tôi (æøå). utf-8 hỗ trợ các ký tự này và mọi thứ hoạt động tốt khi tôi bỏ qua javascript. Tuy nhiên khi tôi cố gắng để vượt qua nội dung của các hình thức html thông qua chức năng bài javascript và thực hiện các truy vấn với kịch bản php làm việc của tôi, mỗi æøå được chuyển đổi thành æøà ¥.javascript có buộc bộ ký tự cụ thể không?
Để phân tích cú pháp, javascript có bằng cách nào đó buộc một bộ ký tự cụ thể khi không có mã nào khác được xác định trong mã không? Tôi đã cố gắng xác định charset trong tiêu đề của bài đăng javascript và tệp php cũng như biểu mẫu html.
Tôi tin rằng nó phải là một cái gì đó sai hoặc mất tích trong tập tin javascript của tôi, formpost.js:
function sendText(visbool){
var http =new GetXmlHttpObject();
var url = "sendtext.php";
var ovrskrift = document.form1.overskrift.value;
var cont = document.form1.content.value;
var params = "overskrift=" + ovrskrift + "&tekst=" + cont + "&visbool=" + visbool;
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
// gjør noe smart her
}
}
http.send(params);
}
function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
sendtext.php:
<?php
//variabler for spørring
$date= date('Y-m-d');
$overskrift= $_POST["overskrift"];
$ostr='36';
$tekst= $_POST["content"];
//$tekst="test tekst";
$istr='32';
$bilde="";
$style="onlyinfo.css";
//$vis=$_POST['visbool'];
$vis=0;
require ('../config.php'); // henter informasjon om database tilkoblingen fra config.php
if (!$con){die('Could not connect: ' . mysql_error());} // lager feilmelding hvis tilkoblingen mislyktes
// spørring for databasen, konstrueres etter variablene som er angitt ovenfor
$sql="INSERT INTO tbl_info(dato,overskrift_tekst,overskrift_str,infotekst_tekst,infotekst_str,bilde,style,vismeg) VALUES('" . $date . "','" . $overskrift . "','" . $ostr . "','" . $tekst . "','" . $istr . "','" . $bilde . "','" . $style . "','" . $vis . "')";
$result = mysql_query($sql); // kjører spørring og lagrer resultat i $result
mysql_close($con); // lukker database tilkoblingen
?>
createslide.php: (dành .php mở rộng cho triển khai mã trong tương lai)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<title>inforMe: Legg til side</title>
<link type="text/css" rel="stylesheet" href="./css/style.css" id="adminss">
<script src="./js/formpost.js"></script>
<script type="text/javascript" src="./tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
mode : "textareas"
});
</script>
</head>
<body>
<div class="imgupload">
<input type="button" value="Last opp bilde"> <img src="" />
</div>
<div class="form">
<form name="form1" method="post" action="sendtext.php">
<label for="overskrift">Overskrift:</label>
<input type="text" size="70" id="overskift" name="overskrift"><br />
<label for="content">Tekst:</label>
<textarea id="content" name="content" cols="50" rows="15">This is some content that will be editable with TinyMCE.</textarea>
<input type="button" value="save draft" onclick="sendText(0)"/>
<input type="button" value="save and publish" onclick="sendText(1)"/>
<input type="submit" value="regular submit button"/>
</form>
</div>
</body>
</html>
NB! Tôi không thực sự biết nơi để đặt thông tin này vì vậy .. tốt .. Tôi quyết định đi với nó ở đây: Trước hết cảm ơn cho tất cả các đề xuất tốt dưới đây. Tôi tin rằng câu hỏi đã được trả lời. Đối với vấn đề của tôi, nó chỉ được giải quyết một phần. Có vẻ như bộ ký tự utf-8 bị mất ở đâu đó dọc theo dòng ở đây, nếu tôi tạo cơ sở dữ liệu mysql mới với bộ ký tự Latin-1 và thay đổi tùy chọn bộ ký tự trong tệp của tôi thành iso-8859-1, nó hoạt động chính xác . Vì cài đặt thử nghiệm của tôi dựa trên tất cả phần mềm norwegian (trình duyệt, máy chủ db, v.v.), tôi cho rằng bất kỳ nơi nào không được chỉ định, nó sẽ trả lại iso-8859-1
NBB! Và bây giờ tất cả đều tốt. mọi thứ hoạt động tốt khi tôi thêm:
tiêu đề ('Content-Type: text/plain; charset = utf-8');
ở đầu tệp sendtext.php của tôi.
Câu hỏi này đã được đăng một thời gian dài trước đây, nhưng tôi phải nói điều này: Vui lòng cho tôi biết đó không phải là mã xử lý SQL thực của bạn, vì nó khiến bạn mở rộng cho các cuộc tấn công SQL injection ... – Epcylon