你是否要寻找韩庚的网站,请下载FIREWORK,再打开本地址即可进入韩庚网站

Archive for the 'PHP的学习经历' Category

May
04

如果你手机有天气预报的套餐就不用看了,我是针对没有天气预报的兄弟们准备的
首先下载一个SENDSMS的软件sendsms,然后解压到任何目录,然后解压
tar xjvf sendsms.tar.bz2
cd sendsms
make
ln -s 路径/sendsms /sbin/sendsms
上面的路径最好用全路径
然后写一个SHEEL
weather.sh

#!/bin/bash
# This script fetch user specified citys' weather forecast from
# http://weather.com.cn, and send them using a CLI SMS sender "sendsms"
# which you can get from http://share.solrex.org/dcount/click.php?id=5.
#
# You can look for new or bug fix version
# @ http://share.solrex.org/scripts/weatherman.sh.
# Copyright (C) Solrex Yang with GPL license.
#
# Usage: You should add it to crontab by “crontab -e”, and then add a line
# such as:
# 00 20 * * * /usr/bin/weatherman.sh >> ~/bin/log/weatherman.log 2>&1
# which will send weather forecast to your fetion friends at every 8pm.

CITY_LIST=(”北京”)
URL_LIST=(”101010100″)#这里是城市编码,具体你所在的城市请到http://www.weather.com.cn/查询

SMS_USER=(”飞信号码1,飞信号码2,飞信号码3″)
SMS_CITY=(”北京”)

URLBASE=”http://www.weather.com.cn/html/weather/”

get_html()
{
i=0
for city in ${CITY_LIST[*]}; do
url=$URLBASE${URL_LIST[i]}.shtml
#wget -e “http_proxy=http://user:passwd@www.phpunion.com” -O $city.txt $url
wget -nv -O $city.txt $url 2> /dev/null
i=$(($i+1))
done
}

parse_html()
{
for city in ${CITY_LIST[*]}; do
grep -q ‘”tableTop”‘ $city.txt
ISOLD=$?
if [ $ISOLD -eq 0 ]; then
grep -q ” 08:00发布)” $city.txt
# Select useful part.
IS18=$?
sed -i -e ‘1,/”tableTop”/d;/weatherYubao2/,$d;1,/风力/d;’ $city.txt
else
grep -q ” 08:00发布)” $city.txt
# Select useful part.
IS18=$?
if [ $IS18 -ne 0 ]; then
sed -i -e ‘1,/”dd_0″/d;/ddd_0/,$d;1,/风力/d;’ $city.txt
else
sed -i -e ‘1,/ch_text/d;/未来/,$d;1,/风力/d;’ $city.txt
fi
fi
# Add seperate chars
sed -i -e ’s$

  • $
  • \n

  • $g’ $city.txt
    # Remove HTML tags and empty lines.
    sed -i -e ’s/<[^>]*>//g;/ sed -i -e ’s/ //g;s/°C//g;s/^\s*//g;/^$/d’ $city.txt
    # Cut verbose words.
    sed -i -e ’s/无持续风向/轻/g;s/℃/度/g;s/星期/周/g;s/\r//g;’ $city.txt
    #continue
    # Format file content to SMS.
    LINES=(`cat $city.txt`)
    COUNT=0
    if [ ${ISOLD} -eq 0 ]; then
    if [ ${IS18} -ne 0 ]; then
    MES=”${city}(18:00发布)\n”
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’.\n’
    else
    MES=”${city}(8:00发布)\n”
    fi
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’;’
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’.\n’
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’;’
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’.\n’
    else
    if [ ${IS18} -ne 0 ]; then
    MES=”${city}(18:00发布)\n”
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]},
    MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}’.\n’
    else
    MES=”${city}(8:00发布)\n”
    fi
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT))]}${LINES[$((COUNT+2))]},
    MES=$MES${LINES[$((COUNT+4))]},
    MES=$MES${LINES[$((COUNT+6))]}${LINES[$((COUNT+8))]}’;’
    MES=$MES${LINES[$((COUNT+1))]}${LINES[$((COUNT+3))]},
    MES=$MES${LINES[$((COUNT+5))]},
    MES=$MES${LINES[$((COUNT+7))]}${LINES[$((COUNT+9))]}’.\n’
    COUNT=$((COUNT+10))
    MES=$MES${LINES[$((COUNT++))]}:
    MES=$MES${LINES[$((COUNT))]}${LINES[$((COUNT+2))]},
    MES=$MES${LINES[$((COUNT+4))]},
    MES=$MES${LINES[$((COUNT+6))]}${LINES[$((COUNT+8))]}’;’
    MES=$MES${LINES[$((COUNT+1))]}${LINES[$((COUNT+3))]},
    MES=$MES${LINES[$((COUNT+5))]},
    MES=$MES${LINES[$((COUNT+7))]}${LINES[$((COUNT+9))]}’.\n’
    fi
    echo -ne $MES > $city.txt
    done
    }send_forcast()
    {
    i=0
    for user in ${SMS_USER[*]}; do
    sendsms -vlf 你的手机号-p 你的密码 -t ${SMS_USER[$i]} < ${SMS_CITY[$i]}.txt
    sleep 1
    i=$(($i+1))
    done
    }clear_html()
    {
    for city in ${CITY_LIST[*]}; do
    rm -f $city.txt
    done
    }get_html
    parse_html
    send_forcast
    clear_html
    然后通过CRONTAB做个计划任务

    crontab -e
    00 18 * * * /bin/bash /root/weather.sh

    我把weather.sh放在ROOT目录了,顺便留个下载地址weatherman.sh 根据你放置自己设置
    好了,每天18点等着自己的飞信给你发天气预报吧

    本教程来源互联网,个人总结了一下,如需转载,请保留原信息:http://www.phpunion.com

    对了
    最后说明一下,飞信号码必须为你的好友,

  • Nov
    30

    如果是GBK的话可以直接通过order by 就可以进行拼音排序了

    但如果是UTF8的话

    需要处理一下字段

    select * from 表名 order by CONVERT(字段名 USING GBK)

    这样可以临时解决,不过某些生僻字可能无法识别

    如果可以的话建议建立首字母表或者拼音表

    这样效率可以提高不少

    Mar
    16

    最近正在研究一个新的东东

    PYTHON

    据说GOOGLE用他做开发

    嘿嘿

    而且GOOGLE好像还提供空间

    得好好看看

    Oct
    22

    Zend Framework 基础知识

    在开始编码前,首先设置基本的 Web 站点。在本节中,您将了解如何正确地设置 Zend Framework Web 站点,包括目录结构和准备默认的文件。然后您将查看基本的 Web 站点并查看如何使用 Zend_Controller 和 Zend_View 组件整合各个部分。

    启动新的 Web 站点

    Zend Framework 类似于 PHP 的其他框架。它为构建安全的可伸缩的站点提供许多工具,并且为与各个数据库和 Web 服务交互提供了大量库。您可以挑选需要使用的组件,而不必使用所有绑定在一起的组件。对于使用框架而不是重新编写应用程序主要部分来处理遗留站点的人员,这十分有帮助。

    在启动新的 Web 站点时,Zend_Controller 组件专门用于帮助我们使用模型-视图-控制器(Model-View-Controller,MVC)设计模式给站点布局。MVC 是一个不断成长的 Web 开发标准,专门用于帮助您保持代码的良好结构和易于维护性。要了解 MVC 设计模式的更多信息,请查阅 参考资料 中列出的文章。

    本教程中的应用程序代码已经被单独放到程序自己的目录中,并包含控制器、模型和视图等子目录,如清单 1 所示。对于本教程,建议使用相同结构。
    清单 1. Zend Framework 站点的文件系统布局

    application/ controllers/ IndexController.php models/ views/ scripts/ index/ index.phtml helpers/ filters/ layouts/ html/ .htaccess index.php library/ Zend/ MySite/

    下载示例代码(请参阅 下载)将创建清单 1 所示的结构。我们将在 library 文件夹中添加样例应用程序可能使用的所有可重用代码(例如来自第三方的代码)。如果遵循了 系统要求,将很容易获得 Zend Framework ZIP 文件。将框架 ZIP 文件中的 library/Zend 文件夹导出到清单 1 的 Zend 目录中。

    您将需要使用 Web 站点的文档根目录作为清单 1 中的 HTML 目录。这将防止从外界直接访问 PHP 代码,并且是一项优秀的安全实践。

    如果使用的是 Apache Web 服务器,请编辑清单 1 中所示的 .htaccess 文件以添加清单 2 的内容。
    清单 2. .htaccess 文件

    RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

    如果要使用其他 Web 服务器,请参考 Zend_Controller_Router 文档(请参阅 参考资料)以获得其他 Web 服务器的重写规则示例。

    编辑 index.php 并添加清单 3 中的内容。该文件是引导文件,该文件将处理所有传入请求并把这些请求定向到相应的控制器和操作。
    清单 3. index.php 引导文件

    您还需要设置一个默认控制器或者 IndexController。在未指定任何控制器时,例如向站点的根目录(即,http://localhost)发出请求时,则使用默认控制器。要处理这种情况,您将编辑 application/controllers/IndexController.php 文件,如下所示:
    清单 4. IndexController

    这将创建默认控制器和操作。将使用 indexAction() 指定控制器的默认操作。

    回页首

    ViewRender

    Zend_Controller 组件的一个优秀特性是通过 ViewRenderer helper 集成了 Zend_View 组件。Zend_View 组件负责呈现 Web 站点的显示,而 ViewRenderer helper 将把这两个组件绑定在一起。要获得 Zend Framework 的各个组件的详细信息,请查阅 Zend Framework 的官方手册(请参阅 参考资料)。

    默认情况下,每个控制器都将创建 Zend_View 组件的实例。在调用操作方法中的代码后,控制器将在与控制器同名的目录下的 application/views/scripts 文件夹中查找视图文件以及与操作同名的视图模板。每次调用操作时,都将自动在随后调用视图模板,除非我们以其他方式指定。

    对于默认控制器,它将查找 application/views/scripts/index/index.phtml,以便我们把清单 5 中的内容添加到该文件中。
    清单 5. index.phtml

    Hello world!

    当您在浏览器中查看 index.phtml 页面时,您应当会看到图 1 所示内容。
    图 1. Web 站点的主页面

    另一个必须添加的特殊控制器是错误控制器。只要框架内出现错误就会调用它,例如调用不存在的控制器或者操作。错误控制器的定义(如清单 6 所示)与普通控制器定义略有不同并且保存在 application/controller/ErrorController.php 中。
    清单 6. ErrorController

    然后您可以在 application/views/scripts/error/error.phtml 文件中创建视图模板,当出现错误时,将显示该文件。

    回页首

    使用 Zend_Controller

    现在我们已经设置了基本的站点,现在可以在该基础上开始构建。对于本教程,我们将构建用于演示如何能够高效使用 Zend Framework 的基本组件的简单 Web 站点。Zend_Controller 专门使用简短的搜索引擎优化(Search Engine Optimization,SEO)友好的 URL。这将消除 “难看的” URL,例如那些带有很多 GET 参数的 URL。它还允许您给 URL 提供上下文并且使 URL 更具可读性。考虑用于按编号查找部件的以下 URL:http://localhost/partslookup.php?partid=123456。

    现在,让我们用 SEO 友好的 URL 处理此 URL。我们将拥有一个名为 parts 的控制器,它处理所有与部件相关的查找,并且将调用查找操作,该操作将按 partid 处理部件查找任务。下面显示了这个 URL:http://localhost/parts/lookup/partid/123456。

    因此,对于使用 Zend_Controller 的 Zend Frameworks Web 站点,您可以使用以下格式的 URL:http://localhost/controller/action/param/value/。

    这将指定使用哪个控制器以及在该控制器中调用哪个操作。如果脚本有指向该控制器的任何参数,则在操作之后包含这些参数,并使用参数名 — 斜杠 — 值的格式。由于重写规则添加到了 .htaccess 文件(参见清单 2)中,因此将把所有请求传递到引导文件中,该引导文件将解析该 URL 以确定要调用哪个控制器和操作,并把参数放到控制器对象中以便您可以在那里引用这些参数。

    回页首

    您的第一个控制器

    对于站点的第一部分,您将添加名为 record 的新控制器。它将使用五个操作实现记录的创建/读取/更新/删除(Create/Read/Update/Delete,CRUD)接口,使用该接口可以针对典型数据集处理各个操作。操作将包括 list(默认情况下它将返回记录列表)、edit(将以编辑模式返回一条记录)、create(将是一张用于输入新记录的表单)、save(保存记录)和 delete(删除记录)。首先,让我们开始在 application/controllers/RecordController.php 中创建 record 控制器的定义。
    清单 7. RecordController

    _redirect(’/record/list’); }

    因此在这里,我们已经添加了控制器的默认 indexAction(),它将把用户重定向到 listAction。我们这样做是因为希望 record 控制器的默认视图是记录列表。

    现在让我们看一看 listAction。
    清单 8. RecordController::listAction()

    public function listAction() { $this->view->records = array( array(”id” => 0, “name” => “record 1″, “data” => “data 1″), array(”id” => 1, “name” => “record 2″, “data” => “data 2″), array(”id” => 2, “name” => “record 3″, “data” => “data 3″), ); }

    对于此操作,我们将为即将呈现的视图返回记录列表。在第 2 部分中,我们将看到如何从 Google Base 中检索这些记录,但是现在,我们将在联合数组的数据库中指定一个静态记录列表,类似于指定如何从数据库返回记录列表。

    我们还将添加清单 9 中所示的 editAction,它使用记录编号作为参数并显示用于更新记录的编辑表单。在这里,我们将再次指定用于 listAction() 的同一个静态记录清单,但是还使用以数组形式返回条目的给定参数。
    清单 9. RecordController::editAction()

    public function editAction() { $records = array( array(”id” => 0, “name” => “record 1″, “data” => “data 1″), array(”id” => 1, “name” => “record 2″, “data” => “data 2″), array(”id” => 2, “name” => “record 3″, “data” => “data 3″), ); $id = $this->_getParam(’print’,'0′); $this->view->id = $id; $this->view->record = $records[$id]; }

    我们已经介绍过如何使用 _getParam() 方法检索传递给表单的参数。您还会注意到方法的第二个参数。如果 URL 中未指定第二个参数的默认值,那么可以进行设置。

    createAction 类似于清单 10 中的 editAction,不同之处是返回表单没有填充任何数据。但是,我们可以重用视图,因为显示逻辑是相同的。
    清单 10. RecordController::createAction()

    public function createAction() { $this->view->id = ‘-1′; $this->view->record = array(”name”=>”,”data=>”); $this->render(’edit’); }

    我们还将为清单 11 中的另外两个操作 delete 和 save 添加桩。在这两种情况下,将分别执行 delete 或 save 代码,然后返回到 list 视图。在第 2 部分中,我们将添加与 Google Base 的集成,但是现在,我们将让它把消息输出到浏览器中,就好像它执行了我们要求的保存或删除一样。
    清单 11. RecordController::saveAction() 和 RecordController::deleteAction()

    public function saveAction() { /* here we will save the record */ $this->_redirect(’/record/list/’); } public function deleteAction() { /* here we will delete the record */ $this->_redirect(’/record/list/’); } }

    回页首

    添加视图

    现在让我们添加视图模板。这些模板将位于 application/views/scripts/record/ 目录中,并且有两个文件:list.phtml 和 edit.phtml。这两个文件是类似于上面创建的 index.phtml 文件的标准 HTML 文件。在清单 12 中,您将看到第一个文件 list.phtml,并且它将拥有一个记录列表以及进行编辑或删除的选项。
    清单 12. list.phtml

    Home | Record

    List of records

    图 2. 记录列表视图

    您将注意到使用了视图 helper escape() 方法。这将转义显示的变量输出以帮助避免可能发生的安全问题,例如跨站点脚本攻击。我们稍后将查看更多其他视图 helper。

    清单 13 中的编辑视图是标准的 HTML 表单,该表单将提交到 record 控制器的 save 操作。
    清单 13. edit.phtml

    Home | Record

    如果一切就绪,您的表单应当类似图 3。
    图 3. Record Edit 视图

    我们已经创建了数据的基本 CRUD 接口。现在让我们查看如何使用 Zend Framework 的一些高级功能来帮助优化我们的站点设计。

    Oct
    22

    开始之前

    本系列适用于想要利用 Zend Framework 的多项功能并集成各种 Google 应用程序的 PHP 开发人员。必须具备 PHP 编程知识才能继续学习本教程。

    关于本系列

    在本系列中,我们将利用新的 Zend Framework V1.5 功能构建一个应用程序,Zend Framework V1.5 使用了一些功能强大的 Google 应用程序:

    在第 1 部分中,了解如何创建使用 Zend Framework 的 Web 站点。特别介绍带有高级 Web 站点布局的许多新功能。
    在第 2 部分中,扩展基本站点和添加功能。了解 Zend_Form 组件的多个功能,包括新 Ajax 功能。另外还将了解带有 Zend_Gdata 组件的 Google Base 并将其集成到站点中。
    在第 3 部分中,把各个 Google 应用程序集成到站点中,包括日历、文档和电子表格、Picasa Web 相册和 YouTube。

    回页首

    关于本教程

    Zend Framework V1.5 引入了大量处理 Web 页面布局的功能。在本教程中,您将了解如何创建使用 Zend Framework 的 Web 站点。您将了解如何利用附加的控件 V1.5 处理布局(例如两步骤处理),从而创建具有不同需求的各个站点组成,同时仍然利用这些功能提供的可维护性。这些主题包括:

    Zend Framework 基础知识
    使用布局
    自定义布局处理
    DRY 代码
    向站点添加新的功能和需求

    回页首

    先决条件

    读者需要具备一定的 Web 应用程序开发经验,但不是必要条件。

    系统要求

    您需要以下工具:

    Web 服务器
    可以使用任意操作系统和任意 Web 服务器。您可以自由使用 Apache V2.X 或者 IBM 的 HTTP Server。从 Apache 或者 IBM 下载。
    PHP
    本教程要求使用 PHP V5.1.4 或更高版本。
    Zend Framework
    可以从 Zend Technologies 下载 V1.5。

    Sep
    28

    吓我一跳
    还以为又有了呢
    偶都已经有个可爱的女儿了
    今天就过来找我们
    哈哈

    Sep
    06

    有的时候错误的教程害死人啊,昨天改我的UBUNTU的时候,想改成命令行启动,就看了下面的教程
    还不错,命令行启动了,可是回不了图形界面了,这不瞎了,后来找啊找啊,终于发现
    原来是…………最后说明

    如果想 Ubuntu 在每次啟動到 command prompt ,可以輸入以下指令:

    $echo “false” | sudo tee /etc/X11/default-display-manager

    當下次開機時,就會以指令模式啟動,如果想變回啟動 x window,可以輸入:

    $echo “/usr/bin/gdm” | sudo tee /etc/X11/default-display-manager

    P.S. 如果不是用 gdm 作為,以上指令需要根據你的環境作出更改,例如 kdm 或 xdm。

    其实回到图形的命令应该是$echo “/usr/sbin/gdm” | sudo tee /etc/X11/default-display-manager
    晕死,少了一个S
    在文本界面启动到图形命令是 startx

    Jul
    20

    方案一:

    使用我们提供的二级域名:xxx.mazihan.com

    一个MYSQL数据库,一个不限制大小的PHP空间,支持PHP4和PHP5,空间支持HEACCESS,可以REWRITE

    2:您自己有独立的域名

    需要您在您的网站的首页明显位置加上我们的链接

    如果您有兴趣请在这里留下您的信息

    我们会通过邮件联系您

    开通一般在24小时以内

    空间不支持大流量系统,如下载和聊天

    可以支持论坛和BLOG

    不能放违反规定的东西,如影片或者MP3

    空间暂时使用时间为半年

    半年后根据使用情况具体决定是否延长

    一个月不使用空间者我们有权删除

    Jul
    19

    理论上来说MD5是不可逆的

    但是如果是已知的当然可以查出来

    像这个网站就提供MD5查询

    http://www.cmd5.com/

    不过估计太难的也查不出来

    Jul
    19

    其实很简单了,就这么几步 

    1,了解B/S结构(包括什么是Html,php,mysql,Apache,js)
    2,了解PHP基本写法了和常用函数功能,不用记,只要知道有这样一个函数就行了。
    3,学习SQL词句:SELECT ,INSERT,UPDATE,DELETE就这么几句
    4,动手做几个程序比如:
    用户注册
    用户登录
    记住密码
    用户在线列表
    留本
    简单新闻系统
    静态文章系统

    OK,你已经成为PHP程序员了