首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP sql处理特殊字符

PHP sql处理特殊字符
EN

Stack Overflow用户
提问于 2018-04-14 20:14:56
回答 2查看 35关注 0票数 1
代码语言:javascript
复制
$sql = "INSERT INTO golf (datum, odkud, odjezd ) VALUES ('$datum', '$odkud', '$odjezd')";
if(!mysqli_query($connection,$sql)) {
echo '<p class="error">Záznam nebyl vložen</p>';
} else {
header ("location :/golf");
}

你好,我正在写我的论文去学校。我有这个代码,我的主管一直告诉我要“对待特殊字符”。我该怎么做?他只看到了我给你看的代码。

EN

回答 2

Stack Overflow用户

发布于 2018-04-14 20:20:31

User input 在插入前必须为 sanitized,否则您将打开一扇进入服务器的门。

您还需要对输入进行validate。我通常做的是创建一系列正则表达式来单独验证每个字段,或者使用一个可用的php validate filters

请记住,您可以-也应该-执行client side validation,这对于减少服务器负载非常有用,但作为安全措施,它的值为0,因为它很容易被伪造。server side validation是最重要的,因为它是你的最后一道防线。

不要对用户输入掉以轻心,大量的服务器会因为糟糕的或根本不存在的用户输入清理而遭到黑客攻击。

为了直接回答你的问题,mysqli_real_escape_string()转义特殊字符的朋友,即:

代码语言:javascript
复制
$odjezd = mysqli_real_escape_string($connection, $odjezd)

编码的

字符为NUL (ASCII0)、\n、\r、\、‘、“和Control Z。

更新:

我已经使用了mysqli_real_escape_string,但我仍然可以提交"a{b}c'=%“我希望它删除spec.characters并只输入abc...how?

假设$odkud只能包含字母或数字,长度为5个字符,仅用于验证,我们可以使用preg_match()作为验证器,即:

代码语言:javascript
复制
$id  = $_REQUEST['id']; 
if (preg_match('/^[a-z\d]{5}$/i', $odkud)) {
    # Successful match
} else {
    # Match attempt failed
}

Live Regex Example & Explanation

如果您只需要删除特殊字符,请使用上面提到的php过滤器之一或preg_replace,即:

代码语言:javascript
复制
$odkud_filtered = preg_replace('/[^a-z\d]/i', '', $odkud);
# abc

Live Regex Example & Explanation

票数 1
EN

Stack Overflow用户

发布于 2018-04-14 20:45:26

你的主管刚刚让你处理特殊字符。因此,@Pedro的答案就足够了。

代码语言:javascript
复制
$odjezd = mysqli_real_escape_string($connection, $odjezd)     // copied from @Pedro’s answer

但是如果你需要更多的验证,你可以检查日期的格式是否正确?

代码语言:javascript
复制
$test_arr  = explode('/', $POST[‘date’]);
if (count($test_arr) == 3) {
    if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
        // valid date ...
    } else {
        // problem with dates ...
    }
} else {
    // problem with input ...
}

同样,您可以根据需要的方式验证您的数据。

this可能会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49831326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档