그래서 꽤 기본적인 코드를 가지고있어 제대로 작동하지 않습니다. ezSQL 클래스 (http://justinvincent.com/ezsql)를 사용하고 있지만 잘 작동합니다. sanitize 함수 (get_post)를 사용하려고 할 때를 제외하고는 모든 것이 잘 작동합니다. 나는 get_post 함수를 호출 할 때 sanitizeString과 sanitizeMySQL이라는 두 개의 다른 함수를 사용하고있다. 만약 내가 $ _POST SQL 테이블에 데이터를 바로, 그것은 잘 작동합니다. 그것이 깨지는 포스트 기능을 통해서 갈 때만입니다. 여기에 게시 비트는 다음과 같습니다PHP 게시 기능을 사용하는 데 이상한 문제가 발생했습니다.
if (isset($_POST['username']) &&
isset($_POST['password']))
{
$username = get_post('username');
$password = get_post('password');
$db->query("INSERT INTO users VALUES ('$username', '$password')");
}
내가 말했듯이, 나는 클래스 (즉, $ DB-> 쿼리 물건에 대해 무엇이다) 사용하고 있지만, 완벽하게 작동하고. 나는이에 코드를 변경하는 경우 :
if (isset($_POST['username']) &&
isset($_POST['password']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$db->query("INSERT INTO users VALUES ('$username', '$password')");
}
그것을 잘 작동합니다. 여기에 내가 살균을 위해 사용하고 세 가지 기능은 다음과 같습니다 심지어 단지는 mysql_real_escape_string 수익을 포함하도록 get_post 기능을 변경 시도했습니다, 심지어 작동하지 않는
// 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 함수를 사용하려고 할 때 실제로 어떤 일이 발생하는지 분명히해야합니다. 테이블에 새로운 행을 만드는 것처럼 보이지만 완전히 비어있는 셀이 있습니다. 너희들 내가 잘못하고있는 것에 대해 약간의 빛을 비추 길 바랍니다! 나는 꽤 숙련 된 프론트 엔드 개발자이지만 서버 측 물건으로 로프를 배울 것입니다. 고마워요 :)
ninjaEdit :이 질문은 Are these two functions overkill for sanitization?입니다.이 기능은 제 거 기능을 향상 시키는데 분명 도움이되지만, 실제로 제 위치에서 작동하지 않는 이유와 관련이 없습니다.
sanitizeMySQL이 경우 (get_magic_quotes_gpc()) $ var에 = 위해서 stripslashes ($ var에)'해야한다;'__then__'$ var에 =는 mysql_real_escape_string ($ var에)'만. mysql 인코딩 된 문자열로 엉망이되므로 더 이상 올바르게 이스케이프 처리되지 않았습니다. – Waygood
pdo와 prepared statements를 사용하도록 고려 했습니까? 이 엔진을 사용하면 param PDO를 바인드 할 때 이스케이프 처리에 신경 쓸 필요가 없습니다. – Robert
PDO를 사용하고 진술서를 준비했습니다. 제안 해 주셔서 감사합니다! 그래도 확실하지 않은 경우에만 바인딩 매개 변수를 사용하여 이상을 살균해야합니다 – user2380943