I have a question about how to make a string safe to run in a query, generally.
I have a secure_input
function, which drags all the $_POST
and $_GET
through a few PHP functions to make it safe, and it seems that re-formatting works, but I still get an error with singlequotes, even though they are properly escaped with backslash from mysqli_real_escape_string()
.
Here's how it runs:
// function which drives on every post and get
function secureinput($link, $value) {
$value = htmlentities(stripslashes($value));
$value = str_ireplace("script", "blocked", $value);
$value = mysqli_real_escape_string($link, $value);
return $value;
}
// then I got another function which performs all of the mysqli requests and it starts with converting all the post and get data
if(isset($_POST)) {
foreach($_POST as $post) {
$post = secureinput($link, $post);
echo "post converted<pre>" . $post . "</pre><br />";
}
}
if(isset($_GET)) {
foreach($_GET as $get) {
$get = secureinput($link, $get);
echo "get converted<pre>" . $get . "</pre><br />";
}
}
The output looks pretty fit for query, but the query is still broken:
"Some text that doesn\'t work"
How can it still fail?
I have a ckeditor
implemented for some textareas, and it sends an alternative for singlequotes, which works perfectly in a query, ckeditor
replaces them with S#39; (& instead of S).
Is there a function in PHP which can do the same, instead of backslashes? It would also be pretty good to have singlequotes formatted in the same way.