昨天同学向我问了一个问题,就是如何把自己上传的图片按照一个设定的尺寸显示出来。
昨天同学向我问了一个问题,就是如何把自己上传的图片按照一个设定的尺寸显示出来。
通常我们在做网站开发的时候对于超链接的使用通常是如下的方式:
<a href=http://www.ecoveiws.cn>碧水轩</a>
看看超链接嵌套的一种情形:
点击进入<a href=”http://www.google.com”>谷歌网站和<a href=”http://www.baidu.com“>百度网站</a></a>
在上面的代码中,在一个<a> 和</a>之间又存在了一个<a></a>你说浏览器(IE和Firefox)是怎么执行的呢?
看看网站的程序代码:
<!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=utf-8″ />
<title>超链接嵌套</title>
</head>
<style type=”text/css”>
a:hover
{
text-decoration:none;
color:#FF0000;
}
</style>
<body>
点击进入<a href=”http://www.google.com“>谷歌网站和<a href=”http://www.baidu.com“>百度网站</a></a>
</body>
</html>
其执行的结果为:
IE:点击进入谷歌网站和百度网站 点击进入谷歌网站和百度网站
Firefox:点击进入谷歌网站和百度网站 点击进入谷歌网站和百度网站
从执行的几个来看,我们可以发现IE浏览器与Firefox浏览器在解释<a标签时的相同之处,他们均是通过<a href来判断一个超链接的,而对于是否有</a>并不在意!关键是<a href=””>后面的文字才重要,那是链接的承载体。
如:<a href=http://www.baidu.com>百度<a href=http://www.google.cn>谷歌</a></a>,百度与谷歌均能链接。
但是::<a href=http://www.baidu.com><a href=http://www.google.cn>谷歌</a></a>,却只有谷歌才能链接。
今天早上自己在用同学访问自己的博客的时候却突然发现自己的网站的分类目录(category)与标签(tags)都不见了,我当时的第一反应就是—-难道我的网站被人攻击了?不过想想自己这一段时间的行为,自己好像没有得罪什么人吧!
没有办法,赶快看看自己所写的文章丢失没有,毕竟自己博客中的没一篇文章都是自己辛辛苦苦写出来的啊,一切的一切都是自己的结晶,如果丢失了的话,那么自己的一切努力与工作不是白费了么?
赶快地回到实验室上网登录自己的网站,看看自己的损失如何,不过检查的结果是我的文章都没有丢失,只是目录与标签都不能显示吧了,但是数据库里仍然存在。因此,基于这样的一个事实我就知道我不是被攻击了,而是有其他的一些原因造成了现在自己网站的问题。
上网查找了相关的信息,自己发现和服务器有关,不是受到了攻击,也许是因为服务器商在维护服务器吧!反正不是自己的原因。
不过高兴的是,在我在检查的时候,突然网站又恢复正常了,而自己对网站什么都没有动过,除了看看相关的资料以外。这也充分的说了不是自己的原因,而是服务器的原因。
现在我们来讨论一下百度的搜索关键字编码,在百度的搜索中,我们输入的关键字经过编码以后是接在wd之后的。
如我们在百度的主页输入“碧水轩”进行搜索,其搜索的结果的地址为:
http://www.baidu.com/s?wd=%B1%CC%CB%AE%D0%F9,其中%B1%CC%CB%AE%D0%F9就是“碧水轩”的编码。如你点击此处的“碧水轩“,就会得到百度的搜索结果页面。
那么我们怎么来实现它呢,这要受到你的页面的编码的影响,我们先来讨论两种页面编码的实现方式,utf-8与gb2312,其他的编码方式可借助相同的原理来实现。
1.gb2312页面实现方式如下,直接进行编码
<?php
$key=”碧水轩”;
$key=rawurlencode($key);
echo $key;//输出编码
?>
2.utf-8页面的编码方式
<?php
$key=”碧水轩”;
$key=iconv(“utf-8″,”gb2312″,$key);//utf-8编码转换为gb2312编码
$key=rawurlencode($key);
echo $key;//编码输出
?>
同理其它编码的转换可以参照utf-8的方式,先转换为gb2312编码,然后在使用rawurlencode()进行编码。
如果我们在www.google.cn或者www.google.com上搜索“碧水轩”则相应的网址为:
谷歌中国:http://www.google.cn/search?hl=zh-CN&source=hp&q=%E7%A2%A7%E6%B0%B4%E8%BD%A9&aq=f&oq=
英语谷歌:http://www.google.com/search?hl=en&source=hp&q=%E7%A2%A7%E6%B0%B4%E8%BD%A9&aq=f&oq=&aqi=
通过分析者两个链接我们可以发现,谷歌把我们收拾的关键字放在了q之后,其中的%E7%A2%A7%E6%B0%B4%E8%BD%A9就是我们要搜索的关键字“碧水轩”的编码。
因此,如果我们要把我们文章中的关键字变成Google的搜索链接,我们要做的工作就是在Google搜索地址的q后面添上我们关键字的编码就可以了。当然,你如果为了赚钱的话,你也可以把上面主要的Google代码(不包含q后面的编码部分)换成你的有Google账号的搜索代码。
怎么实现关键字的编码呢?实现的方式如下(使用php):
1.确保你的页面是utf-8格式的,如果不是的话需要在你实现编码转换的时候先变化为utf-8格式的。
2.使用PHP的rawurlencode()函数。
如你的网站页面是utf-8格式的实现代码如下:
<?php
$key=”碧水轩”;
$key_code=rawurlencode($key);
?>
其中$key_code就是我们需要的编码。
但如果你的网站是不该gb2312的呢?实现方式如下:
<?php
$key=”碧水轩”;
$key=iconv(“gb2312″, “UTF-8″,$key);
$key_code=rawurlencode($key);
?>
对于一般的浏览者来说,浏览网站其实质就只有两个目的:消遣和查找资料,通常情况下,如果我们的博文不能够让那些抱着消遣态度来的浏览者感到兴趣的话,那么一般情况下,他们是很难看你的文章的。同样,如果我们的文章提供的信息不符合那些查找资料的浏览者的话,他们也很少会看我们的博文。
其实我一直在寻求一种让浏览者静下心来好好看我写的文章的方法,但是以前都没有找到答案,原因就是我们很难要求浏览者应该怎么做,我们能做到的仅仅是提供尽可能高质量的文章,从而能让我们的浏览者收益。毕竟网络之所以存在的原因,根本上来说是为了让我们获取更多,而不是仅仅作为我们消遣的工具。
今天无意中在这方面有了点想法,那就是让我们所发布的文章中的关键字变成Google的搜索输入。用过链客中国和群视的网站主都知道这两家公司的核心技术就是把你网站上的关键字变成一些广告的链接,如果浏览者对某个关键字有兴趣,点击了这个关键字,那么网站主就有了收入,不过浏览者获取的确是烦人的广告页面。
因此,我们何不改变一下我们的做法呢?不把我们关键字的链接设置成为广告商的页面地址,而是把他们设置成相关搜索引擎的关键词查询地址,如百度、Google的关键字收拾地址:如 ” 博客“ 这个关键字,以Google为例,我们把它的链接地址设置为:http://www.google.cn/search?hl=zh-CN&source=hp&q=%E5%8D%9A%E5%AE%A2&aq=f&oq=,其结果就是在我们的网页源程序中使“博客”变成<a href=”http://www.google.cn/search?hl=zh-CN&source=hp&q=%E5%8D%9A%E5%AE%A2&aq=f&oq=” target=”_blank”>博客</a>,如你点击这个链接 博客 将会在一个新的窗口显示Google搜索的结果。这样如果浏览者对与博客这个词、话题或者问题感兴趣的话,那么他可以直接通过点击就可以进行搜索,从而知道他想或者的其他相关信息。
这样的功能对于有一点web编程的网站主来说都不难,就只是一个字符串查找、匹配问题罢了,但是其意义却非凡,一方面这样可以让用户能尽快的找到相关的信息,如果他对这个链接关键字感兴趣的话,另一方面也可以避免让用户因为误点击而弹出一些令人厌烦的广告,这对于让用户增加对你网站的好感是有帮助的,同时这样的功能我们完全可以在编辑文章以后生成,这样对于那些使用群视广告的网站主来说可是个好消息,因为群视是动态的处理我们的网站,加入群视的代码降低了我们网站访问的速度,最后一点,对于网站主来说也是最重要的,那就是对于Google的搜索来说,网站主是可以获得金钱的,只要你用你的Google搜索代码来实现上面介绍的功能就行。
我想,这样的做法无论对于网站主还是浏览者来说都有益,一个是可以更快的获取自己感兴趣的信息,一个是可以获得收入,两者双赢的局面岂不是很好么!
假设我的的数据库名称为info, 数据库在本地127.0.0.1或者localhost,其中我们网站所要安装的是info数据库和其中的articles表,则我们的自动安装的方法为:
1.假设info.sql中记录articles表,内容为:
create table if not exists articles
(
article_id not null primary auto_increment,
aritlce_name varchar(20)
…….
)
2.实现的原理,使用mysql_query()来执行相关的sql语句
<?php
$con=mysql_connect(“127.0.0.1″,”root”,”123″);//连接数据库
mysql_select_db(“info”,$con);//选择info数据库
mysql_query(“set names gb2312″);//设置编码
$sql=file_get_contents(“info.sql”);//获取相关的sql语句,因为文件中只有一条sql语句,因此不涉及相关语句的分割
$result=mysql_query($sql);
if($result)
echo “安装成功”;
else
echo “安装失败”;
?>
1f742a0a
在我们使用PHP开发web程序的时候常常会使用到向数组中增加数据的功能,如我们在做一个车辆管理系统的时候,我们要分页显示查询出来的车辆信息时我们就会使用到。
按照PHP面向对象编程的思想,一辆车car是一个对象,那么我们如何来把我们查询出来的一批车辆对象保存在数组中,从而实现一次性显示呢?
第一中方法:使用array_push()方法。
如下面的代码:
public void getCars()
{
$cars=array();
$sql=””;//要操作的sql语句
$con=new ConnectDB();
$con->getConnection();//连接数据库
$result=mysql_query($sql);
while($row=mysql_query($result))
{
$car=row["car_name"];
…….
array_push($cars,$car);
}
return $cars;
}
在本代码中,$cars数组中就包含了我们所查询结果的所有车辆的信息,当要显示时,我们执行按照一般的数组显示的方法即可。
第二种方法:使用$cars[]=$car的方法。
在上面的代码中,我们可以把array_push($cars,$car);换成$cars[]=$car;其效果是相同的。
在我们使用PHP进行网站开发的过程中,经常遇到的一个问题是怎么实现JavaScript与PHP的通信。举个例子来说,在我们进行学校管理系统的开发的时候,当我们在一个下拉选择框中选择了一个院系后,我们就想让我们的系一个班级下拉框显示我们选中的院系的班级,如下图所示:
在此处显示的是资环学院的班级,但是如果我们点击院系下拉列表选择文法学院,如下图所示:
则班级下拉列表显示文法学院的班级,如下图所示:
在本例子中,其实现的原理如下:当我们选择班级时,selcet产生一个状态改变事件,因此我们在JavaScript代码中写一个函数来获取select的值,那么获取的值怎么传递给PHP呢?在此处我们使用的是通过地址来传送,比如地址为:test.php?tid=1.其中tid的值就是我们使用JavaScript获得select的值后定位的参数,当PHP要使用该值时,只需要通过$tid=$_GET["tid"]就可以得到。
另一种把JavaScript的变量值传递给PHP的方法是使用cookie,只要我们定义一个cookie来得到JavaScript变量的值,然后在PHP中使用$_COOKIE["tid"]就可以获得该变量的值了,如图下图所示,它也是实现的上面的一个功能。
如果你想获得本例子的源码,请点此此处下载。
当然把PHP的变量传递给JavaScript就比较简单,最简单的方法就是通过在PHP代码中echo出JavaScript的代码即可,在此就不仔细说明了。
参考文章:http://www.phpchina.com/html/28/1628-4762.html
在PHP脚本中变量主要有:内置超级全局变量,一般的变量,常量,全局变量,静态变量等等,我们在使用它们的时候除了要正确地知道它们的语法以外,更重要的是,我们要知道它们在本质上的区别与联系—即它们的作用域的问题。
1.内置超级全局变量可以在脚本的任何地方使用和可见。即是说,如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。
2.常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。
3.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。
4.函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。
5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中。
6.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
超级全局变量的完整列表如下:
1.$GOBALS 所有全局变量数组
2.$_SERVER 服务器环境变量数组
3.$_POST 通过POST方法传递给该脚本的变量数组
4.$_GET 通过GET方法传递给该脚本的变量数组
5.$_COOKIE cookie变量数组
6.$_FILES 与文件上传相关的变量数组
7.$ENV 环境变量数组
8.$_REQUEST 所有用户输入的变量数组包括$_GET $_POST $_COOKIE 所包含的输入内容
9.$_SESSION 会话变量数组
我们要注意的是:变量和常量另一个重要的差异是:常量只可以定义boolean(布尔型),integer(整型),float(浮点型) 和 string(字符串型)数据,但不能定义 resource类型的数据。