php post保存到数据库,php-从$_GET / $_ POST获取信息并将其保存到数据库的做法?

从获取/发布中获取信息并将信息保存到数据库时,当今的最佳实践是什么?数据仍然像过去那样逃脱了吗?还是有其他实践?另外,HTMLPurifier可以放在哪里?我目前正在使用它来过滤富文本.

解决方法:

从不将数据从GET保存到数据库.

即使您进行了充分的验证和转义,也永远不要保存GET中的数据. GET不应更改服务器上的信息.

在更改服务器(数据库或服务器文件)上的任何内容之前,请检查请求是否为POST或PUT或DELETE(如果适用)

POST应该更改服务器的状态.因此,在更新表或更改服务器上的任何文件之前,请检查请求方法是否为post.

处理之前验证输入

如果期望整数,请验证输入确实是整数.

在数据库查询中使用或添加到输出之前转义输入

出于查询目的,请转义输入内容,以防万一您将输入内容直接打印到输出中,然后去除斜线并进行清理.

拥有用户会话权限时,将易腐令牌用于POST

如果您有用户登录,请使用访问令牌,并在每次访问或每5分钟左右更新一次令牌.

没有用户会话时使用访问令牌

正如Ankur建议的那样,当您没有登录会话时,请使用访问令牌.但这是不可靠的.

标签:php,mysql,security,sql-injection

来源: https://codeday.me/bug/20191013/1906121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那么接下来需要编写一个处理登录请求的 PHP 脚本。你可以在 index.php 页面的 form 标签中指定 action 属性为这个 PHP 脚本的 URL,比如: ``` <form method="post" action="login.php"> <input type="text" name="user" placeholder="会员号"> <input type="password" name="pwd" placeholder="密码"> <button type="submit">登录</button> </form> ``` 然后在 login.php 中可以按照如下的逻辑来编写代码: 1. 首先连接数据库,可以使用 mysqli 或者 PDO 等扩展库来实现。 2. 判断是否收到了来自表单的 post 请求,可以使用 isset() 函数来判断。 3. 如果有 post 请求,则获取表单中的 user 和 pwd 参数,并对其进行基本的过滤和校验,比如去除空格、防止 SQL 注入等。 4. 构造一个查询语句,查询会员表中是否存在对应的会员号和密码。可以使用 mysqli 或者 PDO 的预处理语句来防止 SQL 注入。 5. 如果查询结果不为空,则说明登录成功,可以将用户信息写入 Session 中,并跳转到欢迎页面。可以使用 header() 函数来实现跳转。 下面是一个简单的示例代码: ```php <?php session_start(); // 连接数据库 $host = 'localhost'; $user = 'root'; $pwd = 'password'; $dbname = 'test'; $conn = new mysqli($host, $user, $pwd, $dbname); if ($conn->connect_error) { die('数据库连接失败:' . $conn->connect_error); } // 判断是否收到了 post 请求 if (isset($_POST['user']) && isset($_POST['pwd'])) { $user = trim($_POST['user']); $pwd = trim($_POST['pwd']); // 进行基本的过滤和校验 if ($user === '' || $pwd === '') { echo '会员号和密码不能为空'; } else { // 构造查询语句 $sql = 'SELECT * FROM member WHERE user=? AND pwd=?'; $stmt = $conn->prepare($sql); $stmt->bind_param('ss', $user, $pwd); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { // 登录成功,写入 Session $_SESSION['uid'] = $user; header('Location: welcome.php'); exit(); } else { echo '会员号或密码错误'; } } } // 关闭数据库连接 $conn->close(); ?> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值