要求:使用PDO开发论坛,论坛要有登录注册退出登陆,修改资料,发帖子,帖子分类,回帖,加好友,送礼物,私信,30秒内间隔发帖等功能。sql考虑防注入,使用绝对路径等。
开发中遇到的问题
1.如何实现sql防注入
2.会话的使用
3.PHP令牌的使用
4.面向对象和面向过程的区别
5.引用传递和值传递的区别以及应用
6.资源文件的设置成相对路径
解决方式
一.相对mysqli, PDO支持12种数据库驱动和命名参数绑定是其最大优点
sql防注入
1.pdo prepare防注入原理
PHP是将SQL模板和变量是分两次发送给MySQL的,由MySQL完成变量的转义处理,既然变量和SQL模板是分两次发送的,那么就不存在SQL注入的问题了
可理解为将传入变量中的特殊字符转译成普通字符处理
select * from u_user_info where u_name = '999' and u_password ='222' or '1' ='1'; 运行改语句会sql注入,当使用预处理后
二.会话的理解
cookie和session会话
cookie存在客户端,session存在服务器,session更安全,session文件存放在MAMP/tmp/php.
三.php表单令牌验证可以有效的防止表单重复提交
token经过加密后传到客户端,用户每次发出请求时,传一个token和服务器端的验证是否一致,不一致则提示用户非法登录。
token和session的使用
CSRF:攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
四.面向对象和面向过程
面向过程的重用性更高。小项目可用面向对象的方式,
五.引用传递和值传递
按值传递:函数内对值的任何改变在函数外部都会被忽略。
引用传递:函数内对值的任何改变在函数外部也能反映出这些修改。
应用场景:按值传递时,php必须复制值,而按引用传递则不需要复制值,故引用传递一般用于大字符串或对象。
六.php获取当前文件的绝对路径
dirname(__file__)
__FILE__ PHP魔术常量,返回当前执行PHP脚本的完整路径和文件名
几个 PHP 的“魔术常量”
名称 说明
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称
需要掌握
7.每天一个linux
8.http协议返回码代表含义
9.考虑将面向过程开发改为面向对象开发
10.mvc模式单入口index文件
11.如何实现php的低耦合和可扩展性
13如何将PHP项目部署到服务器
14.redis和memcached的优缺点
八.信息提示2.服务器成功地接受了客户端请求。3重定向4.客服端错误5。服务器错误
php获取当前文件的绝对路径
十.mvc单入口 所有的用户请求都会通过index单入口进入,域名,路由器设置,将用户请求转发到不同的控制器,初始化类时,自动引入相关文件。
http协议返回码代表
参考资料
session和cookie
谷歌浏览器调试技巧
Csrf攻击方式
单入口
Http协议处理状态和返回值
论坛博客参考
Bbs表情功能
页面是否登陆验证
Php中用PDO查询Mysql来避免SQL注入风险的方法
sql注入