$ _POST ['password']中某些字符的问题;

时间:2013-02-07 15:06:54

标签: php

我在密码输入表格中遇到一些字符有问题

" = \"

' = \'

\ = \\

& = empty

+ = empty

所以如果用户输入 n1N'11

在输出中他会得到 n1N\\\'11

1)我做错了什么?在ajax-php密码验证文件中,我只使用$password=$_POST['password'];并得到这样的结果。在使用mysql记录数据的文件中,我使用$password = $mysqli->real_escape_string($_POST['password']);。但是这些问题已经在密码验证中了......

2)如何改变?我可以改变“回到”,但不能改为空或+,因为不知道访客输入了什么。或者根本不允许进入&和+

3)还有一些像上面提到的人物?

我是编程新手。可能这些问题都是愚蠢的。

抱歉,这是ajax代码。但似乎我已经解决了我的问题。传递之前需要使用encodeURIComponent

<script type="text/javascript">
// Pasword validation
//pass data without page refresh
function ValidatePassword(){
// Create our XMLHttpRequest object
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var hr = new XMLHttpRequest();
}
else
{// code for IE6, IE5
var hr = new ActiveXObject("Microsoft.XMLHTTP");
}
// Create some variables we need to send to our PHP file
var url = "_validator.php";
var pass = document.getElementById("password").value;

var vars_pass = "&password="+encodeURIComponent(pass);

hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("CheckPassword").innerHTML = return_data;

}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars_pass); // Actually execute the request
document.getElementById("CheckPassword").innerHTML = "processing...";
}
</script>

1 个答案:

答案 0 :(得分:0)

尝试使用encodeURIComponent()中的javascript传递您传递的值。这样它应该正确保留值。