三天学会php(有asp编程基础)

 更新时间:2016年11月25日 16:10  点击:1556

 本文作者:longlongago     博客地址:http://blog.111cn.net/longlongago2000

        寒假期间没事用asp做了一个写博的程序,后来想用php实现,于是就上网找到了php+mysql安装了,我找到的是安装自动配置的(phpStudyAdmin),很方便,安装好就可以用的,不用进行复杂的配置(听说配置很复杂,自己没试过)。

       开始学php,我知道要用实例来学php上手速度最快,想到我以前学asp是先做个简单的登录验证,做起来思想跟asp一样,都是表单的发送和接收,恰恰是这两个简单的动作在以后的编程中用得最多,可以说学会这两个动作你就开始入门了。我编写的代码如下:

登录:test1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><? echo "dskdfj|"."+++++++++++"; ?></title>
</head>

<body>

<form method="post" action="test2.php">
<table width="200" border="1">
  <tr>
    <td width="59">&nbsp;</td>
    <td width="115"><input type="text" name="text1" /></td>
    <td width="8">&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="text" name="text2" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="submit" name="Submit" value="提交" />
    </label>
    <input type="reset"

勉勉强强,揣着这几天学到的心得,我又来鸡歪了

呵呵,为什么跟黑客帝国扯上关系呢,呵呵,这得从ASP.NET的封装讲起

在黑客帝国中所有的人他们全都自认为生活在一个有阳光,有绿色的世界中,实际上却是矩阵所构造的一种虚像与控制,他们不知道自已一直都在营养容器里面过着日子

就好像搞ASP.NET的人,他们跟泡在营养容器里的人一样,被MS构造出来的各种各样的类库包围着,他们从来不会想过这些类库是怎么来的(这些命名空间怎么来的),他们只关心怎么使用这些类库,这些命名空间,底层如何实现这些东西很少有人会去考虑。

他们实例化着MS提供的类库,调用着MS已经实现了的对像方法,但没有人见过这些类库的源码或是没有人知道这些类库及类库的方法是怎么实现的,就好像黑客帝国里面的人从来就没有试着睁开眼睛看到过外面的世界,他们只生活在被虚拟出来的环境中~

这两者何其相似

比如说调用AJAX,在asp.net中这现实AJAX何其简单,如果是之前没接触过别的WEB编程语言的直接来用ASP.net,他可能就不知道原来WEB要实现AJAX要通过JS,要通过XML,要通过xmlhttp,他只会觉得,WEB原本就是可以这样子的,他的思维给MS虚拟构造出来的假象给蒙蔽了。

就好像在黑客帝国里生活在矩阵电脑里的人都能一跳跳个十几米几十米的,他们可能会觉得很正常,但是现实中不是这样子的,现实中那不是正常的。

再举个例子,树状菜单,动态载入的

在PHP(应该说是常规中才对)中我们要实现树状菜单

假设在不知道有XLoadTree的情况下,我们可能要一砖一瓦的搞起,这样,我们了解非常深,知道每一次点击会触发什么事件,隐藏了什么,又显示了什么,又传输了什么,每个事件的触发都是我们自定义的

在后来知道了有XLoadTree类库的情况下,我们非常容易的就可以实现树状菜单,而且通过查看源码我们也可以很容易的了解到JS实现这些功能的过程和原理。

但是在asp.net中,实现这一切多么的简单,直接从控件栏里面拖TreeView过来就行了,你需要了解JS吗?不需要,尽管最终在浏览器端实现这一切的是用JS,但是,你不需要了解JS,你只需要知道treeview这个控件怎么用就行了,也就是说,你不会知道底层是怎么回事,最终的JS是怎么实现的。

夜深了,睡了,不说了~留待下回分解

————————————————————————

备注:我无意评比这两种语言谁优谁劣,那是傻人才干的事,我只是感到迷惑,我只是在把我在学asp.net过程中碰到的新事物与PHP进行比较,,用我被MS影响到的思维与常规的WEB思维进行对比。

“自慰”的说一句,我这算不算博取众长?

哈哈哈,开玩笑了,这句话只不过是逗大家一笑罢了

突然接到Packt publishing的邮件,内容是关于”Object-Orientated Programming with PHP5“的书评。
以前从来没有做过书评,对于评论的样式内容结构的不合理,在此对读者表示歉意。

内容
简要概述,这本书的章节是:
面向对象(OOP)与程序设计(PS:应该是面向过程吧)(什么是OOP?,为什么要OOP?, 两者的区别等等)
开始 OOP (对象(封装),继承,多态等等)
高级OOP (使用 PHP 函数,异常,迭代等等)
设计模式Design Patterns (Strategy, Singleton, Adapter, Observer, Decorator etc)(这里就不译了)
反射和单元测试(phpUnit)
Standard PHP Library (著名的SPL)
OOP数据库 (MySQLi, PDO, 数据持久层Abstraction layers - PEAR::MDB2, ADODB and Active Record)
OOP和XML (SimpleXML, xpath, Dom)
MVC / Frameworks
针对初/中水平开发人员


支持
适当的介绍了 SPL (Standard PHP Library)
介绍了 PDO, PEAR::MDB2, AdoDB and MySQLi
介绍了主要的面向对象设计模式
介绍了MVC和frameworks(框架)

反对
只有250页
不够深入
很多语法错误,希望在出版的时候能够改正这些错误。
有很多拼写错误 (e.g. s/Mehod()/Method())
有些例子很差(请见下文)
十页的篇幅去讲PHPUnit API,在最后讲使用框架开发一个项目,我觉得应该利用一部分篇幅将一个主要的框架,例如zend或者codeignitor。话虽如此,我觉得这本书还是不错的,尤其是能学到别人怎么解决问题,这对于初中级开发人员会有很大的帮助。


代码实例
为了使这本书更有意思,第四章讲了很多主要的设计模式。其中一个decorator模式,部分代码如下:
 
$post = new Post();
$comment = new Comment();
$post->filter();
$comment->filter();
if($BBCodeEnabled==false && $EmoticonEnabled==false) {
    $PostContent = $post->getContent();
    $CommentContent = $comment->getContent();
}
elseif($BBCodeEnabled==true && $EmoticonEnabled==false) {
    $bb = new BBCodeParser($post);
    $PostContent = $bb->getContent();
    $bb = new BBCodeParser($comment);
    $CommentContent = $bb->getContent();
}
elseif($BBCodeEnabled==false && $EmoticonEnabled==true){
    $em = new EmoticonParser($post);
    // etc.
}

作者:老王

目前PHP社区里最成功的框架要数CakePHP,Symfony,ZendFramework了,有选择总是好事,不过选择多了也有烦恼,正所谓“有两块手表的人永远不知道准确的时间”。今天无聊,戏说一下我眼中PHP框架的味道。希望初学者选择框架时能有所参考。

CakePHP是一个完整的FullStack类型的框架。使用CakePHP架构程序的时候,感觉就好像是三军仪仗队齐步走,军人们胳膊和腿要什么节奏,什么位置等等,这些都必须按照规矩来,绝对不能开小差。

Symfony是一个介于FullStack类型和Glue类型之间的框架。使用Symfony架构程序的时候,感觉就好像是奥运会开幕式里运动员入场,虽然胳膊,腿的节奏,位置等也会有一些泛泛的要求,但大都不会强制如何如何,甚至你还可以对着观众招招手,对着摄像机做做鬼脸什么的。

ZendFramework是一个纯粹的Glue类型的框架,使用ZendFramework架构程序的时候,感觉和挤公交差不多,如果是在欧洲挤公交,大家基本上还都会遵守秩序上车,如果是在中国挤公交,你的胳膊,腿都得铆足了劲才行,那绝对是一场战争。

以上言论,皆为笑谈。大家也不必追问到底哪个好?哪个坏?应该听佛祖的,不要执著,^_^

 



PHP文件的源码都是明文,这对于某些商业用途来说,并不适合。
  因此考虑使用加密的手段保护源码。

  实在不耐烦等待zend出编译器,而且编译和加密本质上不是一回事儿。自己动手、开始修改。

一、基本原理

  考虑截获PHP读取源文件的接口。一开始,我考虑从Apache和PHP 之间的接口处 处理,参见apache的src/modules/php4/mod_php4.c (这个是PHP用static方式编译进apache,make install 后的文件),在send_php()函数中截获文件指针,采用临时文件的方式,解密后替换文件指针。这种方法经过测试实践,证明是可行的。但是,必须使用两次文件操作,效率低下,而且对于DSO方式不可采用。 双缘敬老院
  由此,重新考虑截获PHP读取文件并装载至缓存的过程,经过费力的寻找,发现在Zend引擎中zend-scanner.c是做此处理的。开始对此文件修改。照明工程

二、实现方法示意

  采用libmcrypt作为加 密模块,现在采用的是DES方法ECB模式加密,

下面是文件加密的源代码:

/* ecb.c-------------------cut here-----------*/
/* encrypt for php source code version 0.99 beta
we are using libmcrypt to encrypt codes, please
install it first.
compile command line:
gcc -O6 -lmcrypt -lm -o encryptphp ecb.c
please set LD_LIBRARY_PATH before use.
GNU copyleft, designed by wangsu , miweicong */

#define MCRYPT_BACKWARDS_COMPATIBLE 1
#define PHP_CACHESIZE 8192
#include < mcrypt.h >
#include < stdio.h >
#include < stdlib.h >
#include < math.h >
#include < sys/types.h >
#include < sys/stat.h >
#include < fcntl.h >


main(int argc, char** argv)
{

int td, i,j,inputfilesize,filelength;
char filename[255];
char password[12];
FILE* ifp;
int readfd;
char *key;
void *block_buffer;
void *file_buffer;
int keysize;
int decode=0;
int realbufsize=0;
struct stat *filestat;


if(argc == 3) {
strcpy(password,argv[1]);
strcpy(filename,argv[2]);
} else if(argc == 4 && !strcmp(argv[1],"-d")){
strcpy(password,argv[2]);
strcpy(filename,argv[3]);
decode=1;
printf("Entering decode mode ... n");
} else {
printf("Usage: encryptphp [-d] password filenamen");
exit(1);
}


keysize=mcrypt_get_key_size(DES);
key=calloc(1, mcrypt_get_key_size(DES));

gen_key_sha1( key, NULL, 0, keysize, password, strlen(password));
td=init_mcrypt_ecb(DES, key, keysize);

if((readfd=open(filename,O_RDONLY,S_IRUSR|S_IWUSR|S_IRGRP))==-1){
printf("FATAL:

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • 浅谈node.js中async异步编程

    1.什么是异步编程? 异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。示例: for (var i = 1; i <= 3; i++) {setTimeout(functi...2015-10-23
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • C#编程总结(六)详解异步编程

    本篇文章主要介绍了C#异步编程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。...2020-06-25
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 理解javascript异步编程

    这篇文章主要为大家介绍了javascript异步编程,从浅入深的学习javascript异步编程,对javascript异步编程感兴趣的小伙伴们可以参考一下...2016-01-29
  • PHP安装threads多线程扩展基础教程

    一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
  • 读Javascript高性能编程重点笔记

    这篇文章主要介绍了读Javascript高性能编程重点笔记,需要的朋友可以参考下...2016-12-31
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • 编程新手必须掌握的:session与cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
  • 基于RequireJS和JQuery的模块化编程——常见问题全面解析

    下面小编就为大家带来一篇基于RequireJS和JQuery的模块化编程——常见问题全面解析。小编觉得挺不错的,现在分享给大家,也给大家做个参考...2016-04-17
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11