php - 使用 PHP post 函数时遇到奇怪的问题

标签 php mysql post sanitize

所以,我有一些非常基本的代码,但我无法正常工作。我正在使用 ezSQL 类( http://justinvincent.com/ezsql ),但工作正常。一切工作正常,除了当我尝试使用清理功能(get_post)时。当我调用函数 get_post 时,我正在使用另外两个函数 sanitizeString 和 sanitizeMySQL。如果我只是 $_POST 将数据直接发送到 SQL 表,它就可以正常工作。只有当我执行 post 函数时它才会崩溃。这是发布位:

if (isset($_POST['username']) &&
isset($_POST['password']))
{
    $username = get_post('username');
    $password = get_post('password');
    $db->query("INSERT INTO users VALUES ('$username', '$password')");
}

就像我说的,我正在使用一个类(这就是 $db->query 的内容),但它工作得很好。如果我将代码更改为:

if (isset($_POST['username']) &&
isset($_POST['password']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    $db->query("INSERT INTO users VALUES ('$username', '$password')");
}

效果很好。以下是我用于清理的三个函数:

 // Sanitize Functions
function sanitizeString($var)
{
 if (get_magic_quotes_gpc()) $var = stripslashes($var);
 $var = htmlentities($var);
 $var = strip_tags($var);
 return $var;
}    

function sanitizeMySQL($var)
{
 $var = mysql_real_escape_string($var);
 $var = sanitizeString($var);
 return $var;
}    

function get_post($var) 
{
return sanitizeMySQL($_POST['$var']);
}

我什至尝试过更改 get_post 函数以包含 mysql_real_escape_string 返回,但即使这样也不起作用。另外,我想我应该澄清当我尝试使用 get_post 函数时实际发生的情况。它似乎在表中创建了一个新行,但单元格完全为空。希望你们能指出我做错了什么!我是一位经验丰富的前端开发人员,但我正在学习服务器端的知识。谢谢:)

ninjaEdit:我发现了这个问题Are these two functions overkill for sanitization?这绝对有助于使我的清理功能变得更好,但它并不能真正帮助我理解为什么我的清理功能一开始就不起作用。

最佳答案

为什么要在 $var 周围加上 ' ?

在函数 get_post 中,你应该return sanitizeMySQL($_POST[$var]);

您应该使用准备好的语句,以便它为您转义字符

关于php - 使用 PHP post 函数时遇到奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16539419/

相关文章:

node.js - Node.js post 请求中的套接字挂起错误

php - 如果当前表单中没有表单字段,如何在我的 POST 中包含表单字段?

php - 在 CakePHP 的 Router 文件中获取 Controller 名称和 SQL 查询?

php - 如果还有 css

powershell中MySQL超时

sql - 数据库行为 HAVING-SUM vs WHERE/DISTINCT vs GROUP BY

php - 在 PHP 中从数据库中删除 TinyMCE 格式

php - Paypal 与 DIY 购物车的整合

php - 为什么 PHP mysqli 准备语句工作但插入所有 NULL 值?

ruby - 需要帮助使用 Ruby net/http 将 xml 属性列表作为 HTTP 正文发送