【发布时间】:2016-07-14 18:51:45
【问题描述】:
<script type="text/javascript">
function signup() {
var url = "process/sign-up-process.php?" + $("#signup-form").serialize();
// alert(url);
$.get(url, function (data, status) {
alert(data);
});
}
</script>
页面:process/sign-up-process.php 代码如下
<?php
require_once('connection.php');
$full_name = filter_input(INPUT_GET, 'full_name', FILTER_SANITIZE_STRING);
$email = $_GET['email'];
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
$user_password = filter_input(INPUT_GET, 'user_password', FILTER_SANITIZE_STRING);
$query = "INSERT INTO registered_users_list (full_name, email, user_password) VALUES ('$full_name', '$email', '$user_password')";
$query1 = mysqli_query($conn, $query);
$count = mysqli_affected_rows($conn);
if($count == 1){
echo "Signed up";
}else{
echo "Sorry";
}
?>
问题出在“process/sign-up-process.php”页面,当我注释掉查询代码和
echo "一些随机文本"
然后是
警报(数据)
有效。但是当我尝试运行 INSERT 查询时它不起作用。我认为错误一定是在 PHP 改进中,即 mysqli 字符串。
【问题讨论】:
-
您容易受到sql injection attacks 的攻击。您只是假设您的查询永远不会失败。您也不会检查您的“表格”是否正确填写,而只是尝试将收到的任何内容填充到数据库中,即使没有收到任何内容或垃圾。
-
其实我在实际代码中使用过“filter_input()”,这里忘了提
-
无关紧要。
'是电子邮件地址中的有效字符,将终止您的查询。并且 sanitized_string 对 sql 注入也没有帮助。您实际上没有数据库安全性。 -
您查看过您的日志吗?
display_erros开启?检查mysql错误?用表单中的值检查了 sql 本身? -
那我还能用什么