├── .gitignore ├── MySQL └── 简介与安装配置.md ├── PHP ├── 代码重用与函数.md ├── 使用MySQL数据库.md ├── 字符串操作与正则表达式.md ├── 安全问题.md ├── 安装与配置.md ├── 快速入门.md ├── 错误和异常处理.md ├── 面向对象.md └── 高级应用.md ├── README.md └── 一些书单.md /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.bak 3 | .*.s[a-w][a-z] 4 | 5 | !.gitignore 6 | -------------------------------------------------------------------------------- /MySQL/简介与安装配置.md: -------------------------------------------------------------------------------- 1 | # MySQL 简介 2 | MySQL 是一个快速的数据库管理系统(RDBMS),使用范围比较广,尤其是 Linux + Apache + MySQL + PHP(LAMP) 组合,非常流行。 3 | 4 | # MySQL 安装配置 5 | 以下将讲述 MySQL Server 及 命令行工具等在作为开发环境本机的安装简要步骤。 6 | 7 | ## 在 Linux 下安装 MySQL 8 | 以 Linuxer 的折腾能力,这个操作应该不是很困难。只要在系统相应的包管理器中安装 MySQL Server 对应的软件包,系统就能自动完成依赖。例如,在 Debian/Ubuntu 下是`sudo apt-get install mysql-server`,而 Fedora/CentOS 下是`sudo yum install mysql-server`,Arch Linux是`sudo pacman -S mysql`,等等。 9 | 10 | ## 在 Windows 下安装 MySQL 11 | 首先,在甲骨文官网上下载 MySQL Server For Windows 的合适版本的安装包,而后按照英文提示安装即可。 12 | 13 | ** 提醒:虽然是开发用的机器,但仍然建议root密码设置得复杂一些,以免被攻破。 ** 14 | 15 | -------------------------------------------------------------------------------- /PHP/代码重用与函数.md: -------------------------------------------------------------------------------- 1 | # 3.代码重用与函数 2 | 3 | ##代码重用 4 | 就……不用重复编写某一段代码了……或者为了使网站的页面们都有相同的结构或者样式…… 5 | ``` 6 | requir() & include() 7 | 他萌有什么区别 8 | ``` 9 | 10 | ###举个栗子 11 | ``` 12 | //template.php 13 | 16 | ``` 17 | 18 | ``` 19 | //show.php 20 | 25 | ``` 26 | 27 | 28 | ##函数 29 | 就是自定义function_name() 30 | 比如求a+b 31 | ``` 32 | function plus($a,$b){ 33 | return $a+$b; 34 | } 35 | ``` 36 | 37 | ###作用域 38 | global什么的…… -------------------------------------------------------------------------------- /PHP/使用MySQL数据库.md: -------------------------------------------------------------------------------- 1 | # 5.使用 MySQL 数据库 2 | 3 | __ 阅读前后最好要了解一些 SQL 语言的知识。 __ 4 | 5 | 而后,提醒一点:PHP 的 mysql 扩展现在已不建议使用,而且即将废弃。应该使用 mysqli 扩展对应的函数或类。 6 | 7 | ## 基本步骤 8 | ### 连接到 MySQL 服务器 9 | 10 | // 一般使用面向对象的写法。mysqli 是 mysqli 扩展的类。 11 | $db = new mysqli('hostname','usename','password','database'); 12 | 13 | 14 | 在连接数据库之后,通常还要进行连接时字符集设置,以避免连接过程中出现乱码: 15 | 16 | $db->set_charset('utf8'); // `utf8` 是 MySQL 中常用的编码类型。 17 | 18 | 19 | 其中,`$db` 是一个包含连接资源(Resource)信息的对象。因为包含资源型的变量,因此对其进行序列化等操作是无效的。 20 | 21 | 另外,连接数据库的过程不是一帆风顺的。相关错误处理,请见底部参考资料中 PHP 官方手册。 22 | 23 | ### 选择接下来操作的数据库 24 | $db->select_db(db_name); 25 | 26 | ### 查询数据库 27 | 28 | $sql = "SELECT * FROM `dbname` WHERE `column`='value001' "; 29 | $result = $db->query($sql); 30 | ` // $result 即得到的查询集,也是一个包含了查询资源的对象。 31 | // 并请注意:在下一步进行之前,最好检查 $result 是不是为假(FALSE)。当查询失败时(通常由于 sql语句出错、或 MySQL 连接丢失引起),query函数返回 FALSE。 32 | 33 | 34 | ### 检测查询结果 35 | 36 | $num_result = $result->num_rows; // 本语句返回查询集的结果个数 37 | 38 | 39 | ### 关闭数据库连接 40 | 41 | $db->close(); 42 | 43 | ## 参考资料 44 | 下面列出的是一些建议读者认真阅读的资料,这些资料对于加强对相关细节的认识和处理,具有很大的好处。 45 | 46 | * [PHP 官方文档 - mysqli](http://php.net/manual/zh/class.mysqli.php) 47 | 48 | -------------------------------------------------------------------------------- /PHP/字符串操作与正则表达式.md: -------------------------------------------------------------------------------- 1 | # 2.字符串操作与正则表达式 2 | 3 | 字符串连接使用".",比如 4 | ``` 5 | $a = "196"; 6 | $b = "s**"; 7 | echo $a . "loves" . $b; 8 | ``` 9 | 就会输出……(请自行实践) 10 | 11 | ## 字符串整理 12 | trim($str) 除去$str开始和结束位置的空格(包括\n \r \t \x0B \0),返回一个字符串 13 | ltrim($str) 除去$str开始位置的…… 14 | rtrim($str) …… 15 | 16 | ## 格式化字符串 17 | nl2br($str) 将$str中的换行符替换为
18 | print() printf() sprintf() echo (需要了解他们的区别) 19 | strtoupper($str) 转换为大写 20 | strtolower($str) 转换为小写 21 | ucfirst($str) 若第一个字符是字母则大写 22 | ucwords($str) 每个单词的第一个字母大写 23 | 24 | addslashes($str) 对"和\前加\ 25 | stripslashed($str) 去除\ 26 | 27 | 具体可以尝试实践 28 | 29 | ## 连接和分割字符串 30 | strtok() 31 | substr() 32 | explode(), implode() 33 | join() 34 | 35 | ## 字符串的比较 36 | 排序strcmp() strcasecmp() strnatcmp() 37 | 长度strlen() 38 | 39 | ## 字符串查找 40 | strstr(), stristr() 41 | strchr(), strtchr() 42 | strpos(), strrpos() 43 | 44 | ## 字符串替换 45 | str_replace() substr_replace() 46 | 47 | ## 正则表达式 48 | 函数有`preg_match`,`preg_match_all`等,函数用法可参考 49 | * (http://ca3.php.net/manual/en/function.preg-match.php) 50 | * (http://ca3.php.net/manual/en/function.preg-match-all.php) 51 | 此外,还可参考前端教程中的 [正则表达式章节](https://github.com/QSCTech/tutorial-frontend/blob/master/RegExp.md) ,尤其是其参考资料中的链接。 52 | 53 | -------------------------------------------------------------------------------- /PHP/安全问题.md: -------------------------------------------------------------------------------- 1 | # 安全问题 2 | 3 | ## 关系型数据库的SQL注入 4 | 5 | 6 | ## 与前端一起造成的前端XSS注入 7 | 8 | 9 | ## 过滤不严,命令任意执行 10 | 11 | 12 | ## 文件任意上传 13 | 14 | 15 | ## 其他问题 16 | 17 | 18 | ### Time-Based Blind SQL Injdection with Heavy Queries 19 | 20 | ### 锁的实现,原子 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /PHP/安装与配置.md: -------------------------------------------------------------------------------- 1 | #PHP安装与配置 2 | 首先下载php压缩包(一般都是绿色的)比如php-5.4.9-Win32-VC6-x86.zip 3 | 4 | 1.将安装包解压到c:\php目录下(此处为了方便说明,也可以放到别处) 5 | 6 | 2.将```php.ini-development```文件名改为```php.ini``` 7 | 8 | 3.找到```;default_charset = "iso-8859-1"```,并在下面一行添加```default_charset = "utf-8"``` 9 | 注意default_charset前面有个分号,分号是注释的标志 10 | 11 | 4.找到```;extension_dir = "./"```,并将其修改为```extension_dir = "c:/php/ext"``` 12 | 13 | 5.找到```;extension=php_bz2.dll```,其下一长串类似的列表,即为可供选择加载的模块,可以根据需要加载,加载方法为去掉前面的;号,推荐加载以下模块: 14 | ``` 15 | extension=php_mysql.dll 16 | extension=php_mysqli.dll 17 | extension=php_xmlrpc.dll 18 | ``` 19 | 20 | 6.找到```memory_limit = ```,修改数值可以限定php脚本最多可占用的内存大小 21 | ``` 22 | memory_limit = 256M 23 | ``` 24 | 25 | 7.修改环境变量,将php安装文件夹位置添加到windows系统路径中,在已有变量值的最后添加```;c:\php;c:\php\ext```。 26 | 27 | -------------------------------------------------------------------------------- /PHP/快速入门.md: -------------------------------------------------------------------------------- 1 | # 1.快速入门 2 | 3 | 首先需要有一定的HTML基础 4 | 5 | ## php的编辑器 6 | 我是在用Zend的……如果有其他的推荐欢迎commit,我也尝试一下~ 7 | 8 | ## php代码 9 | 10 | PHP语言代码是类似这样的 11 | ``` 12 | /*this is a php code*/ 13 | //this is a php code 14 | 19 | ``` 20 | 其中是php的代码标记,表示中间是php代码,类似html标记 21 | 变量都是以$符号开头的,每句话以分号结束 22 | php的注释方式类似c语言,有两种(代码里有) 23 | 刚才的例子是完成了一个a+b(其实是1+2) 24 | 25 | 26 | php代码可以直接插入到html之中,也可以被html引用 27 | 28 | 一般前端传给后端一组数据(或表单),后端进行处理 29 | 30 | 比如```http://jwbinfosys.zju.edu.cn/xsmain_pyjh.php?xh=3130000001&dqszj=2013``` 31 | 32 | 就向后端传输了两个数据```xh=3130000001```和```dqszj=2013``` 33 | 34 | ## 举个栗子(post表单) 35 | ``` 36 | 37 | 38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |
ItemValue
Name
Age
56 |
57 | 58 | 59 | ``` 60 | 这个表单将被post到process.php。 61 | 那在process.php如何获取表单的内容?可以使用 62 | ``` 63 | $name=$_POST['name']; 64 | $age=$_POST['age']; 65 | ``` 66 | 67 | ## 再举个栗子 68 | ``` 69 | //比如是以这样方式请求的http://jwbinfosys.zju.edu.cn/xsmain_pyjh.php?xh=3130000001&dqszj=2013 70 | //那么在xsmain_pyjh.php中应该这样获取内容 71 | $xh=$_GET['xh']; 72 | $dqszj=$_GET['dqszj']; 73 | ``` 74 | 75 | 76 | PHP的基本语法自己学习喽,再知道了前后端的数据传递方式就没啥问题了…… 77 | 78 | ## 作业 79 | 写一个简易计算两数最大公约数的网页calc.html,后端calc.php 80 | -------------------------------------------------------------------------------- /PHP/错误和异常处理.md: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /PHP/面向对象.md: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /PHP/高级应用.md: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 求是潮技术研发中心后端入门 2 | 3 | ## 简介 4 | 5 | 这是供求是潮技术研发中心使用的后端开发入门教程。以 LAMP 为主。 6 | 7 | LAMP 指的是 Linux Apache MySQL PHP(原先是Perl,现在也有Python),作为后端开发者,最重要的就是 PHP 以及 MySQL 了。尽管 PHP 有许多问题,但由于历史原因和占有率原因,我们还是必须对其有一定的掌握。另一方面,由于 PHP 极易上手,也比较适合初学者做网站开发。一个程序员多掌握几门语言(尤其是占有率这么大的语言)是没有什么坏处的。 8 | 9 | 但是也正由于 PHP 的简单易用,很容易写出有问题的代码,尤其是和 PHP自身的一些“坑”相结合时,更可能产生严重的问题。不过一切归根到底都是程序员自身的问题,只要我们有足够的意识,很多问题就能够避免。事实上,有很多大型网站、项目(例如 WordPress 、 维基百科、 Facebook )都是使用 PHP 开发的。 10 | 11 | 此外,这里还会简要介绍一些 nginx 服务器的知识。nginx 也是一个比较常用的网页服务器,并且在某种程度上比 Apache 更易用、拓展性更强。 12 | 13 | 最后,这里有一个小建议:后端程序员不能只会后端,最好要对前端也有一定的了解,如 Ajax 技术等。否则,与前端合作时会非常困难。 14 | 15 | 既名“入门”,本文档只是一份让你对后端知识有个开始的大概了解。本入门的子目录中包括了一些常见问题、经验分享,并且提供了一些有用的链接以供参考,希望能以此帮助你少走一些弯路。 16 | 17 | ## 目录 18 | ### General 19 | 1. [动态网站的架构] 20 | 21 | ### PHP 22 | 1. [Windows下安装与配置](PHP/安装与配置.md) 23 | 1. [快速入门](PHP/快速入门.md) 24 | 1. [字符串操作与正则表达式](PHP/字符串操作与正则表达式.md) 25 | 1. [代码重用与函数](PHP/代码重用与函数.md) 26 | 1. [使用MySQL数据库](PHP/使用MySQL数据库.md) 27 | 28 | ### MySQL 29 | 1. [简介与安装配置](MySQL/简介与安装配置.md) 30 | 31 | ## 链接 32 | 33 | 以下是一些我们认为还可以的教程或参考资料。再次强调, tutorial 不同于 doc , __不能__ 将这些教程作为工具书使用。 34 | 35 | * [W3school](http://www.w3school.com.cn/) 36 | 有名的网站制作教程, W3Schools.com 的中文版(两者没有直接关系),虽有很多不足但作为入门还是可以借鉴的。另外,即使是后端,也请浏览一下 W3school 中的 HTML/CSS 部分,至少要有一个基本的了解。 37 | * [Introduction to the Internet and the World Wide Web](http://www.cs.sfu.ca/CourseCentral/165/common/guide/) 38 | Greg Baker (@Simon Fraser University) 为一门网页制作入门课撰写的教程,以 HTML 为主,也涉及了动态网页(不过并非使用 PHP ),英文,零基础。 39 | 40 | PHP 作者所著的 _Programming PHP_ 也是一本不错的参考书,大部头,详细讲述了一些设计意图、历史原因,让你理解为何 PHP 会是现在这个样子,如果希望对 PHP 有更深入的理解,不妨一看。 41 | 42 | PHP 官方文档(注意,有些服务器上运行的是 PHP 5.3 ,与最新的 5.5 版有一些区别,写代码和部署时需要注意) 43 | 44 | * [PHP Manual](http://www.php.net/manual/en/) 45 | 46 | 在你写了一段时间 PHP ,对 PHP 有了一定的理解,甚至开始抱怨一些特性的时候,不妨看看这篇博客,这是有关 PHP 缺点的最全面的概述,了解它们可以让你更好地避开 PHP 的“坑”,了解 PHP 的局限性,写出更可靠的代码,并正确判断 PHP 的适用场景,在 _有必要_ 的时候选择其他语言: 47 | 48 | * [PHP: a fractal of bad design](http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/) 49 | 50 | ## 作者 51 | 求是潮技术研发中心: 52 | 53 | * Delostik 54 | * Hexcles 55 | * Senorsen 56 | 57 | ## 授权协议 58 | [署名-非商业性使用-相同方式共享 3.0 中国大陆 (CC BY-NC-SA 3.0 CN)](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 59 | 60 | ## Contributing 61 | 有任何意见和建议,请在 Issue 中提醒我们;如果想更改或添加页面,您可以考虑给我们发起一个 Pull Request ,我们将会检查并应用您的 PR 。 62 | 63 | -------------------------------------------------------------------------------- /一些书单.md: -------------------------------------------------------------------------------- 1 | 一些书单 2 | ==== 3 | 4 | 暂且列一些窝清楚的语言吧~ 5 | 6 | 求大家补充~~ 7 | 8 | ### C# 9 | ( 作为窝最初接触的语言 10 | 毫无疑问~ 11 | 12 | - C# via CLR ( 在贵潮图书馆里有哦~ 13 | 14 | 一本足以 15 | 16 | ### Ruby 17 | 18 | - [Ruby Monk](https://rubymonk.com/) ( 有声有色很有趣很靠谱的在线教程 19 | - [Programming Ruby](http://book.douban.com/subject/2032343/) 一个纸质的书籍, 当你窝看的, 虽然感觉不是很厉害但是也够了 20 | 21 | 重要知识点: 22 | - Proc 23 | - yied 24 | - Meta Programming 25 | 26 | ### Python 27 | 28 | - [简明Python教程](http://woodpecker.org.cn/abyteofpython_cn/chinese/) 一个仅限于入门的 不够系统, 明显不够深入的, 很适合入门的教程 29 | - 用Python做科学计算 (请求补充下载链接) 感觉是理科党必备! 30 | 31 | 32 | ### C++ 33 | 34 | 一本足以 35 | 36 | - C++ Primer 37 | 38 | 39 | --------------------------------------------------------------------------------