假期任务挺多,但是一项也没有完成......
现在发现学习一门新语言我总有急于求成的想法,可能是掌握了一两门语言后学习其他的语言比较快也就不愿意拘泥于细节了吧!
假期想在acm闲暇时候搞一搞php也顺便了解下mysql,所以就开始了学习
7.26
开始拿起图书馆借的书看,我了解到php确实是c,c++,java的延伸,神马语法都很像,并且让我最舒服的就是
php的变量定义特别爽,可以直接定义并且初始化,没有数据类型。爽的同时也有弊端,前期掌握不好规范,代码就会特别乱很难读懂
然后掌握了一些关于php的基本脚本函数,还有表示规则 用dw编写的,比如,php脚本必须要以此种形式
<?php ?>或者<? ?>
还有php里面的一些类,对象之类的我就一概而过了,毕竟知道自己就是假期学一阵子了解下,最后还是要忘掉所以就没学了
这样第一天算是个了解吧,就这样结束了
7.27
开始看数据库链接了,最起码我认为这个是重点了吧。。。因为学了那么多东西我感到遗憾的就是没有接触过数据库编程
书中介绍了三种,第一种是和txt,就是php中的文件操作,比较简单,实现起来容易,但是操作起来不方便,特别是增删查找
第二是利用odbc数据源,access数据库来,这个我之前搞vb时候里了解过还是很好理解
第三个就是这本书的重点了,mysql了,我感觉这个不能看所以还是实践重要
7.28
蛋疼看内嵌汇编了,没有搞这个...
7.29
下午出去在车上把cookies和session会话这一块看的稍微明白了,知道http的无连接服务是如何保留用户账户登录状态传向服务器的
session_start(),之后把各个用户变量注册起来保留,每次都可记录session的值
7.30
用了一下午加一晚上终于整出来一个简易的留言板式聊天网站,本来用odbc做数据库,可是问题多多啊
刚开始提示找不到数据源,网上搜了一番知道问题是数据源必须是系统数据源,改了后这个问题没了可是新问题来了
Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Microsoft Access 驱动程序]常见错误 没有足够的信息将该 DSN 与 SQLConnect 连接。请使用 SQLDriverConnect。, SQL state S1000 in SQLConnect inC:\root\www\login\conn.php on line 8
无限崩溃中,无奈就换用txt做数据库吧,费了好大劲儿总算成功了,下一步开始进攻mysql吧
7.31
之前用的是一个安装包apache+php的,虽然版本都比较老但是不用配制,现在这个包不支持mysql
我就又重新都下载了个最新的安装上去了,但是吧....过程太麻烦了,神马配制来配制去总算好了,遇到一些小问题
期中网站根目录默认是htdoc,如果想更改的话要把httpcf文件中的documentroot值改了,并且有个目录权限要改成allow
第二个问题就是纵使我更改了所有关于mysql的配制,仍然不能使用,后来搜索一番发现需要添加个环境变量到path并且电脑要重启
重启后完美解决了,到此apache+php+mysql配制结束,一下午快过去了,争取今晚之前搞出来个强化版的留言板吧
倒腾一下午突然发信odbc可以用了,暂且把mysql放一边,把留言板改成odbc的吧,好了改的差不多了遇到不少问题
首先在线用户是个头疼的事,看了下相关文档,说的不错用一个表的键值来记录最后活动时间,每次调用页面就更新一次,如果
这个时间与当前时间相比差所给时间时候就认为它已经退出了,就删除掉这个用户,实现起来其实也不麻烦,懒得高了
下午整完这个,明天学着用mysql整个贴吧简易版的出来吧
ps:php自带的时间函数时区是错误的,晚了八个小时,到php。ini里改改吧,加上date_default_timezone_set('Asia/Chongqing'); 这句也ok
装完新的php后,程序出错浏览器也不显示了只说http500,原来是为了安全设置默认给关了,打开php.ini
display_errors = Off
error_reporting = E_ALL
Off改成On即可
今天就到这里,收工
8.1
本来今天准备告一段落,没想到我又想搞一下文件上传,做贴吧太难了算了吧~说开始就开始,我没有用pear的上传包,用的是自带的基本的
基本上弄得差不多了,就差点小问题,现在总结下。
使用auto_increment,自动增加
例如:createtable mytable (id intprimarykey auto_increment,name varchar(20));
insertinto mytable (name) values (‘aaa’);
insertinto mytable (name) values (‘bbb’);
结果:
id name
1 aaa
2 bbb
文件下载:
1 <?php
2 header("Content-Type: application/force-download");
3 header("Content-Disposition: attachment; filename=ins.jpg");
4 readfile("imgs/test_Zoom.jpg");
5 ?>
6
7 //第一行代码是强制下载;
8 //
9 第二行代码是给下载的内容指定一个名字;
10
11 //第三行代码是把下载的内容读进文件中。
下载例子
1 <?php
2 $file='monkey.gif';
3
4 if (file_exists($file)) {
5 header('Content-Description: File Transfer');
6 header('Content-Type: application/octet-stream');
7 header('Content-Disposition: attachment; filename='.basename($file));
8 header('Content-Transfer-Encoding: binary');
9 header('Expires: 0');
10 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
11 header('Pragma: public');
12 header('Content-Length: '.filesize($file));
13 ob_clean();
14 flush();
15 readfile($file);
16 exit;
17 }
18 ?>
终结篇:倒腾一下午为了什么?就是一个小小的文件上传和下载啊啊啊啊。。。
不过还好成功了,添加了一些下载删除的信息,发现现在写代码还是
变量命名规范,面向对象,排版,以后向着这三点努力吧
具体就不提了,都是些之前知识的技巧掌握,邮件我想等开学去学,防止假期学了一段时间后又放置一边不管了
自此,假期的php就结束了,开始备战....