如何辨别真假访问者在地理上使用PHP

张贴于PHP的由ShortLikeAFox关于2008年9月13号

如果你有一个网站,并想告诉您的用户都来自地理PHP和PEAR使这成为可能。 翻开客户的IP到物理位置的第一件事,你要需要做的是确保您有Net_Geo梨模块。 如果你没有Net_Geo梨模块,你将不得不使用梨包管理器收购。

如果你不认为你有机会获得梨,因为您的托管包, 检查这个解释如何安装PEAR的帐户上不允许进入默认。 这是书面与GoDaddy共享帐户的想法,而应工作最托管软件包不来的梨成立。

在您Net_Geo包安装,只需要几行代码,以获取地理数据:

“ ?的PHP

); require_once“网/ Geo.php ” ) ;
]; $的IP = $ _SERVER [ ' REMOTE_ADDR ' ] ;
/ / $的IP = “ 64.246.30.37 ” ;
$ firstNetGeo = Net_Geo ( ) ;
$地理数据= $ firstNetGeo , “ getRecord (知识产权) ;

? “

($ip); ?> <br/> IP地址是: “ ? PHP的 回声 (知识产权) ; ? ” <br/>
($geoData[ 'LAT' ]); ?> <br/>纬度: “ ? PHP的 回声 ( $地理数据[ '土地增值税' ] ) ; ? ” <br/>
($geoData[ 'LONG' ]); ?>经度: “ ? PHP的 回声 ( $地理数据[ '龙' ] ) ; ? ”
<br/>
($geoData[ 'COUNTRY' ]); ?> <br/>国家: “ ? PHP的 回声 ( $地理数据[ '国家' ] ) ; ? ” <br/>
($geoData[ 'STATE' ]); ?> <br/>国家: “ ? PHP的 回声 ( $地理数据[ '国' ] ) ; ? ” <br/>
($geoData[ 'CITY' ]); ?> <br/>城市: “ ? PHP的 回声 ( $地理数据[ '市' ] ) ; ? ” <br/>

在代码工作:

IP地址是: 66.249.85.132

纬度: -25.00

经度: 135.00

国家: 1.00

国家:

城市:

如何将运行PHP代码在你的WordPress的帖子

张贴在WordPress的PHP的由ShortLikeAFox对2008年8月17号

所以,你希望能够在您的使用PHP WordPress的博客文章和网页。 这是没有问题的。 只是用“ ?的PHP ... ... .. ? ”将成为WordPress的愤怒,除非你安装一个插件第一。 有几个插件有这种说法提供这种能力,但一,我发现的最好的作品是Exec的- PHP的 。要开始使用PHP代码,请执行下列步骤:

  1. 下载Exec的- PHP的
  2. 安装它,就像您任何插件(以上链接和自述文件将引导您通过本)
  3. 如果您正在使用它,你必须关闭WYSIWYG编辑器。 要做到这一点,去用户- “您的个人资料和取消使用可视化编辑器写作时复选框
  4. 开始写PHP代码喜欢你通常会: “ ?的PHP ... 。代码这里? ”

这就是这么简单!

如何创建和使用动态名字的变量用PHP

张贴 PHP的ShortLikeAFox对2008年8月17号

因此,要使用动态变量名在您的代码。 没问题。 比方说,您有100个变量的命名dog0 , dog1 , dog2 , ... 。 , dog98 , dog99 。 您为什么要使用100个变量而不是像这样的数组是超越我,但不要紧,这个例子。 要设置这些变量在快速循环您可以使用下列:

0 ; $i < 100 ; $i ++ ){ ( $为I = 0 ; $字母i 100 ; $一+ + ) (

; $ variableName = “狗$我” ;
$ $ variableName = $一; / /设置$ dog1 1 , $ dog2 2 , $狗34至34 ,等... 。

现在让我们说你想进入所有这些变量。 您可以使用下列:

0 ; $i < 100 ; $i ++ ){ ( $为I = 0 ; $字母i 100 ; $一+ + ) (

; $ variableName = “狗$我” ;
回声( “ <br/> ” ) ;
回声( “ $ variableName : ” ) ;
回声( $ $ variableName ) ;

这回路打印:

dog0 : 0
dog1 : 1
dog2 : 2
dog3 : 3
dog4 : 4
dog5 : 5
dog6 : 6
dog7 : 7
dog8 : 8

等...所有的道路
dog99 : 99

如何集成书号访问您的网页上用PHP

张贴 PHP的ShortLikeAFox对2008年8月12号

的ISBN或国际标准图书编号是有用的标识符,可以用来找到有关个别书籍。 如果你想将国际标准书号查找在您的Web应用程序的PHP更可行。

第一步: ISBNdb.com是创造了一个API ,允许用户从网络访问他们的数据库中的ISBN记录。 这是他们自己描述的API :

ISBNdb.com的远程访问应用编程接口( API )的目的是让其他网站和独立应用程序使用的大量的数据收集收集ISBNdb.com自2003年以来。 截止本文件的编写,在2005年7月,该数据包括近一百八十〇点〇 〇 〇万书籍;几乎三万点零亿图书馆记录;接近100万科目;数以十万计的作者和出版者记录解析出库数据;超过10000000记录的实际和历史价格。

使用此API ,您必须先注册。登记字面秒钟即可完成。 在这之后,您需要建立的一个关键。 键可让您直接进入国际标准书号数据库从您自己的代码。 该网站使ISBNdb.com设立键容易。

第二步:现在您可以开始写代码与数据库中。 请求一个ISBN查找看起来就像这样:

$ isbnData = “ http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 = $ isbnQuery ” ;

您插入您的访问将主要在地方XXXXXX号。 $ isbnQuery将是ISBN号码您感兴趣$ isbnData是一个XML文件。 要访问此数据,您需要让您的代码知道它是什么处理。 像这样将工作:

) ; $ xmlData = @ simplexml_load_file ( $ isbnData ) 或死亡“没有任何文件加载” ) ;

现在,您可以获取单个变量的呼吁与此类似:

]->Title ; $标题= $ xmData , “书目[ 0 ] - ” BookData [ 0 ] - “职称;

这里是一个完整的工作例如:

“ ?的PHP

$ searchQuery = “ 9780684801223 ” ; / /的ISBN为欧内斯特海明威的老人与海
$ isbnData = “ http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 = $ searchQuery ” ; / /请记住,以取代XXXXXX号用自己的访问键
) ; $ xmlData = @ simplexml_load_file ( $ isbnData ) 或死亡“没有任何文件加载” ) ;
]->Title ; $标题= $ xmlData , “书目[ 0 ] - ” BookData [ 0 ] - “职称;
]->AuthorsText ; $作者= $ xmlData , “书目[ 0 ] - ” BookData [ 0 ] - “ AuthorsText ;
]->PublisherText ; $出版商= $ xmlData , “书目[ 0 ] - ” BookData [ 0 ] - “ PublisherText ;

); 回声“ $标题<br/> ” ) ;
); 回声“ $作者<br/> ” ) ;
); 回声“ $出版商<br/> ” ) ;

/ /这个例子打印出:
/ /该老人与海
/ /欧内斯特海明威
/ /纽约:布纳平装本小说, 1995年。

? “

如何手动插入一组用户到单模光纤论坛使用PHP

张贴于单模光纤(简单机械论坛) PHP的ShortLikeAFox关于2008年7月30号

本教程假定您熟悉我的文章: 如何手动插入用户的单模光纤论坛使用PHP

最近,我面临的挑战是移动800左右乐队从数据库到单模光纤论坛。 本人面临几个问题的动议时,我并不包括在第一篇文章:

  1. 乐队的名字是不能保证是安全的一个字符的字符进入单模光纤数据库。 因此,某种形式的名称修改功能已被雇用。
  2. 乐队没有密码。 因此,某些类型的密码生成需要就业。

我去的步骤关于注册的所有频段的论坛去有点像这样:

打开带数据库

每个 (带) (

生成密码

重命名带“安全”的名称

抓斗并生成所需的信息插入用户

插入乐队到smf_members

发送带电子邮件与密码

信息我可以从带的数据库,是有益的包括: bandName , bandEmail ,并bandWebsite

这是密码生成功能我用( blatently取自totallyphp.co.uk ) :

功能 createRandomPassword ( ) (

$字符= “ abcdefghijkmnopqrstuvwxyz023456789 ” ;

() * 1000000); srand ( (双) microtime中 ( ) * 1000000 ) ;

$为I = 0 ;

$传球= “ ;



( $字母i “ = 7 ) (

33; $ num个= 兰特 ( ) 33 ;

$ tmp的= substr ( $字符, $ num个, 1 ) ;

$传球= $通行证。 $ tmp的;

$一+ + ;



返回 $通过;

在这里创建的密码相对薄弱,但它不够好我的目的。 任何密码生成功能将罚款这里。 我选择了这一个,因为它很容易记住的成员,如果他们选择不改变它。

如何做到这一点:

/ /第一次连接到数据库的乐队
$用户名= “ bandUsername ” ;
$东道国= “ bandHost ” ;
$ mypassword = “ bandPassword ” ;
$ db_name = “ bandDatabase ” ;

("cannot connect to server"); mysql_connect ( “ $主机” , “ $的用户名” , “ $ mypassword ” ) 或死亡 ( “无法连接到服务器” ) ;
("cannot select DB"); mysql_select_db ( “ $ db_name ” ) 或死亡 ( “不能选择数据库” ) ;

/ /现在抓斗所有乐队从数据库
$查询= “选择*从allBands ” ;
$带= mysql_query ( $查询)或死亡( “配置错误2222b ” ) ;
$ userRows = mysql_num_rows ( $带) ;

/ /现在可以连接到光纤分贝
$东道国= “ smfhost ” ; / /主机名称
$用户名= “ smfuser ; / /数据库用户名
$ mypassword = “ smfpassword ” ; / /数据库密码
$ db_name = “ smfdatabase ” ; / /数据库名称

("cannot connect to server"); mysql_connect ( “ $主机” , “ $的用户名” , “ $ mypassword ” ) 或死亡 ( “无法连接到服务器” ) ;
("cannot select DB"); mysql_select_db ( “ $ db_name ” ) 或死亡 ( “不能选择数据库” ) ;

/ / $ vaild_chars将成为一系列允许字符的用户名。 我决定只允许字母和数字。 还有其他的字符,可用于这不会造成问题,但风格的原因,我决定去,只有字母和数字
$ valid_chars = “ abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9 ” ;
$ valid_chars = 爆炸 ( “ ” , $ valid_chars ) ;

/ /现在我们需要遍历每个波段

){ ( $为I = 0 ; $字母i “ $ userRows ; $一+ + ) (

($bands)){ 如果 ( $行= mysql_fetch_assoc ( $乐队) ) (

/ /解带信息
提取物 ( $行) ;
/ /创建一个密码,并为这个乐队
$ realPassword = createRandomPassword ( ) ;
/ /我选择响应bandname和密码的一部分,我的调试,所以我可以看到的功能,因为它的作品
回声 ( “ <br/> $ bandName - $ realPassword ” ) ;
$ newBand = “ ” ;
/ /对于每个信乐队名字我们要看看,看它是否符合有效的字符为valid_chars 。 这不,我们要摆脱它和截断乐队名称
($bandName); $j ++ ){ ( $ j = 0 ; $ j “ strlen ( $ bandName ) ; $ J + +的 ) (

($band[$j])); $气温= str_replace ( $ valid_chars , “ X ”号, 用strtolower ( $波段[ $ j ] ) ) ;
如果 ( $气温==的“ X ” )

$ newBand = $ newBand 。 $波段[ $ j ] ;


/ /我同意的新名称相同的原因,我回声旧名称和密码
回声 ( “ - $ newBand ” ) ;
/ /我们有新乐队的名字... 。 现在让我们先大厦的信息,我们需要插入分贝...
$ memberName = $ newBand ;
$实名= $ newBand ; / /我的真实姓名和会员的名字相同。 乐队可以改变,如果他们想
$电子邮件地址= $ bandEmail ;
$ websiteUrl = $ bandWebsite ; / /由于我带的网站也可能将它们输入
$ websiteTitle = $ newBand ;
$ is_activated = 1 ;
$ ID_POST_GROUP = 4 ;
($memberName).$realPassword); //Password must be encrypted $密码= sha1用strtolower ( $ memberName ) 。 $ realPassword ) ; / /密码必须加密

/ /确保他们不是会员具有相同名称的单模光纤数据库。 我们不希望任何人不小心输入两次
$查询= “选择*从smf_members在哪里memberName = ' $ memberName ' ” ;
("Config Error 2222343242b"); $结果= mysql_query ( $查询) 或死亡 ( “配置错误2222343242b ” ) ;
$ nrows = mysql_num_rows ( $结果) ;

/ /如果发现会员名称是什么也不做
如果 ( $ nrows “ 0 ) ( )

其他(

/ /如果用户是不是已经注册了论坛,这样做并发送电子邮件... 。
$查询= “插入smf_members ( memberName ,实名,电子邮件地址, is_activated , ID_POST_GROUP ,密码, websiteUrl , websiteTitle )值( ' $ memberName ' , ' $实名' , ' $电子邮件地址' , ' $ is_activated ' , ' $ ID_POST_GROUP ' , ' $密码' , ' $ websiteUrl ' , ' $ websiteTitle ' ) “ ;

("Config Error 2232 "); $结果= mysql_query ( $查询) 或死亡 ( “配置错误2232 ” ) ;

/ /现在我们需要发送的电子邮件乐队
$到= $电子邮件地址;
$主题= “您的论坛用户名和密码” ;

/ /从
$标题= “来自:我<me@mysite.com> ” ;

/ /您的邮件
$消息.= “您的登录名和密码,下面列出。您可以随时更改。如果你不想参加我们的论坛,这是没有问题的。从未登录,它就会像没有什么事。 \ r \ N “的;
$消息.= “用户名: $ memberName密码: $ realPassword \ r \ N ”的;

/ /发送电子邮件
邮件寄出= $ ( $到, $主题, $消息, $头) ;
如果 ( $寄出)

回声 ( “ -是的! ” ) ;
/ /这是最后一部分,我们的回声。 的“是! ” 将只印刷如果一封电子邮件被发送。 因此,充分打印的生产线将是这个样子:
/ /亚当争- 4s6vsxag - AdamStrife -是!


如何手动插入一个单模光纤用户使用PHP论坛

张贴于单模光纤(简单机械论坛) PHP的ShortLikeAFox关于2008年7月28日

这个具体的例子是为单模光纤1.1.5 。 我不能保证它会与任何其他版本。

所以你运行简单机械论坛软件和要手动输入用户? 没问题。 我知道这个问题似乎非常具体,但这些想法在这里所说的,能够适应其他类型的论坛和其他数据库驱动的软件包,如WordPress的。 在我们进入究竟如何做到这一点,让我们来看看如何通过简单机械论坛跟踪用户。 在单模光纤的数据库有一个表称为smf_members 。 该smf_members结构看起来像这样:

领域 类型

钥匙 默认 额外
ID_MEMBER mediumint ( 8 )无符号 一氧化氮 革命制度党 auto_increment
memberName varchar ( 80 ) 一氧化氮 MUL
dateRegistered 国际( 10 )未签名 一氧化氮 MUL 0
员额 mediumint ( 8 )无符号 一氧化氮 MUL 0
ID_GROUP smallint ( 5 )未签名 一氧化氮 MUL 0
lngfile tinytext 一氧化氮 MUL
lastLogin 国际( 10 )未签名 一氧化氮 MUL 0
实名 tinytext 一氧化氮
instantMessages smallint ( 5 ) 一氧化氮 0
unreadMessages smallint ( 5 ) 一氧化氮 0
buddy_list 文字 一氧化氮
pm_ignore_list 文字 一氧化氮
messageLabels 文字 一氧化氮
密码 varchar ( 64 ) 一氧化氮
电子邮件地址 tinytext 一氧化氮
personalText tinytext 一氧化氮
性别 tinyint ( 4 )无符号 一氧化氮 0
生日 日期 一氧化氮 MUL 0001-01-01
websiteTitle tinytext 一氧化氮
websiteUrl tinytext 一氧化氮
位置 tinytext 一氧化氮
聊天 tinytext 一氧化氮
目的 varchar ( 16 ) 一氧化氮
varchar ( 32 ) 一氧化氮
的MSN tinytext 一氧化氮
hideEmail tinyint ( 4 ) 一氧化氮 0
showOnline tinyint ( 4 ) 一氧化氮 1
timeFormat varchar ( 80 ) 一氧化氮
签字 文字 一氧化氮
timeOffset 浮动 一氧化氮 0
化身 tinytext 一氧化氮
pm_email_notify tinyint ( 4 ) 一氧化氮 0
karmaBad smallint ( 5 )未签名 一氧化氮 0
karmaGood smallint ( 5 )未签名 一氧化氮 0
usertitle tinytext 一氧化氮
notifyAnnouncements tinyint ( 4 ) 一氧化氮 1
notifyOnce tinyint ( 4 ) 一氧化氮 1
notifySendBody tinyint ( 4 ) 一氧化氮 0
notifyTypes tinyint ( 4 ) 一氧化氮 2
memberIP tinytext 一氧化氮
memberIP2 tinytext 一氧化氮
secretQuestion tinytext 一氧化氮
secretAnswer varchar ( 64 ) 一氧化氮
ID_THEME tinyint ( 4 )无符号 一氧化氮 0
is_activated tinyint ( 3 )未签名 一氧化氮 1
validation_code varchar ( 10 ) 一氧化氮
ID_MSG_LAST_VISIT 国际( 10 )未签名 一氧化氮 0
additionalGroups tinytext 一氧化氮
smileySet varchar ( 48 ) 一氧化氮
ID_POST_GROUP smallint ( 5 )未签名 一氧化氮 MUL 0
totalTimeLoggedIn 国际( 10 )未签名 一氧化氮 0
passwordSalt varchar ( 5 ) 一氧化氮

领域,我们必须注意:

  • memberName -自我Explanitory 。
  • dateRegistered -没有必要,但如果没有填写登记的日期显示为1969年12月31日。 日期保存为一个划时代的时间戳。 不知道如何计算时间戳在你的头上? 没问题。 我用的是免费的发电机这里找到。
  • 实名-应插入。 当我不知道我只是重复memberName这里。
  • 电子邮件地址-自我Explanitory 。
  • is_activated -必须设置为1 ,因为我们手动激活会员。
  • ID_POST_GROUP -我不会撒谎。 我不知道这是什么,但它似乎总是被设置为4 。 所以... 。 我总是将其设置为4 。 不是最好的办法,但是你能做什么呢?
  • 密码-密码你想给新用户。 这是不可能找出如何进入不看的单模光纤文件。 的正确代码加密单模光纤密码数据库看起来像这样:

($memberName).$password) $ passwd文件= sha1用strtolower ( $ memberName ) 。 $密码)

在上面的代码行, $ password是用户的实际密码。

如何做到这一点:

/ /首先,连接到光纤数据库

$东道国= “主机名” ; / /主机名称
$用户名= “用户名” ; / /数据库用户名
$ mypassword = “密码” ; / /数据库密码
$ db_name = “用户名” ; / /数据库名称

("cannot connect to server"); mysql_connect ( “ $主机” , “ $的用户名” , “ $ mypassword ” )或死亡 ( “无法连接到服务器” ) ;
("cannot select DB"); mysql_select_db ( “ $ db_name ” ) 或死亡 ( “不能选择数据库” ) ;

$ memberName = “铁人” ;
$实名= “托尼斯塔克” ;
$电子邮件地址= “ ironMan@ironMan.com ” ;
$ is_activated = 1 ;
$ ID_POST_GROUP = 4 ;

$密码= “ Tony1234 ” ;

($memberName).$password); $密码= sha1用strtolower ( $ memberName ) 。 $密码) ;

$ dateRegistered =一十二万一千六百九十五点一二○万; / / 2008年7月25日凌晨2点

$查询= “插入smf_members ( memberName ,实名,电子邮件地址, is_activated , ID_POST_GROUP ,密码, dateRegistered )值( ' $ memberName ' , ' $实名' , ' $电子邮件地址' , ' $ is_activated ' , ' $ ID_POST_GROUP ' , ' $密码' , ' $ dateRegistered ' ) “ ;
("SMF Error 101.234 "); $结果= mysql_query ( $查询) 或死亡 ( “单模光纤错误101.234 ” ) ;

这就是这么简单!

如何使缩略图使用PHP

张贴在职能 PHP的ShortLikeAFox关于2008年7月22日

所以,你想创建一个缩略图从某一图片...的PHP使这项工作很容易。 我第一次写了以下的功能来处理图像上传到用户的网站我帮忙管理。 上传图片到这个网站可以JPEG文件, pngs ,或图像,所以我不得不写一个函数来处理所有三个。 这个代码是从原来的一个函数发现webcheatsheet.com

如何做到这一点:

功能 createThumbs ( $ pathToImages , $ fname , $ pathToThumbs , $ thumbWidth )

/ /解析路径延长

$信息= pathinfo ( $ pathToImages 。 $ fname ) ;
/ /继续只要这是一个JPEG图像
($info['extension']) == ‘jpeg’) )如果( ( 用strtolower ( $信息[ '延长' ] ) == '格式' ) | | ( 用strtolower ( $信息[ '延长' ] ) == '的jpeg ' ) )

/ /加载图像并获得图像尺寸
$ IMG的= imagecreatefromjpeg ( “ ( $ pathToImages ) ( $ fname ) ” ) ;
$宽度= imagesx ( $ IMG公司) ;
$高度= imagesy ( $ IMG公司) ;

/ /计算缩略图大小
$ new_width = $ thumbWidth ;
$ new_height = ( $高度* ( $ thumbWidth / $宽) ) ;

/ /创建一个新的临时图像
$ tmp_img = imagecreatetruecolor ( $ new_width , $ new_height ) ;

/ /复制并调整旧的形象进入新形象
imagecopyresized ( $ tmp_img , $ IMG公司, 0 , 0 , 0 , 0 , $ new_width , $ new_height , $宽度, $高度) ;

/ /保存到文件中缩图
imagejpeg ( $ tmp_img , “ ( $ pathToThumbs ) ( $ fname ) ” ) ;

如果( 用strtolower ( $信息[ '延长' ] ) == '格式' )

/ /加载图像并获得图像尺寸
$ IMG的= imagecreatefromgif ( “ ( $ pathToImages ) ( $ fname ) ” ) ;
$宽度= imagesx ( $ IMG公司) ;
$高度= imagesy ( $ IMG公司) ;

/ /计算缩略图大小
$ new_width = $ thumbWidth ;
$ new_height = ( $高度* ( $ thumbWidth / $宽) ) ;

/ /创建一个新的临时图像
$ tmp_img = imagecreatetruecolor ( $ new_width , $ new_height ) ;

/ /复制并调整旧的形象进入新形象
imagecopyresized ( $ tmp_img , $ IMG公司, 0 , 0 , 0 , 0 , $ new_width , $ new_height , $宽度, $高度) ;

/ /保存到文件中缩图
imagegif ( $ tmp_img , “ ( $ pathToThumbs ) ( $ fname ) ” ) ;

如果( 用strtolower ( $信息[ '延长' ] ) == '巴' )

/ /加载图像并获得图像尺寸
$ IMG的= imagecreatefrompng ( “ ( $ pathToImages ) ( $ fname ) ” ) ;
$宽度= imagesx ( $ IMG公司) ;
$高度= imagesy ( $ IMG公司) ;

/ /计算缩略图大小
$ new_width = $ thumbWidth ;
$ new_height = ( $高度* ( $ thumbWidth / $宽) ) ;

/ /创建一个新的临时图像
$ tmp_img = imagecreatetruecolor ( $ new_width , $ new_height ) ;

/ /复制并调整旧的形象进入新形象
imagecopyresized ( $ tmp_img , $ IMG公司, 0 , 0 , 0 , 0 , $ new_width , $ new_height , $宽度, $高度) ;

/ /保存到文件中缩图
imagepng ( $ tmp_img , “ ( $ pathToThumbs ) ( $ fname ) ” ) ;

如何工程

功能createThumbs需要四个月的论点。

  • $ pathToImages - “文件夹的路径的图像文件是以下这可能是这个样子: /首页/内容/用户名/的HTML /列表/上传/
  • $ fname - “文件名: pic1.gif , johnny.jpg等...
  • $ pathToThumbs - “文件夹的路径您想要缩略图是个不想这是相同的路径为$ pathToImages ,因为缩略图将有相同名称的原始图像。
  • $ thumbWidth - “的宽度要小的像素。

一个重要的注意,我要在这里的是,这一职能中的任何地方,而不是文件扩展名检查,以确保图像文件包含任何恶意。 由于档案createThumbs ( )与已上载假定文件已被适当地关注。

的第一件事createThumbs ( )的作用是呼吁pathinfo ( ) pathinfo ( )休息,部分道路成一个数组。 这是帮助我们,因为我们需要的文件扩展名正确地创建缩略图。 下一步createThumbs ( )检查是否我们正在处理一个JPEG格式。 如果原始文件是一个JPEG createThumbs创建一个新的形象在原有基础上的形象imagecreatefromjpeg ( ) 下一步是获得的宽度和高度的这种形象( imagesx ( )imagesy ( ) ) $ thumbWidth和使用的比率原始的宽度和高度createThumbs ( )设置了新的宽度和高度的缩略图。 使用这些新的比率createThumbs ( )创建一个“空白”的形象,将是相同的宽度和高度缩图与imagecreatetruecolor ( )imagecopyresized ( )是用来调整图片的大小,然后将其保存在“空白”刚创建。 imagecopyresized ( )似乎是需要很大的参数,但如果你看看真正的文件并不复杂。 现在缩图存在一个真正的彩色图像所有createThumbs需要做的是转换的文件转换成JPEG格式。 为此imagejpeg ( )被称为。

这是如何工作的职能JPEG文件。 有起码的分歧。 pngs和。图像。

如何撰写浏览器特定的代码用PHP

张贴 PHP的ShortLikeAFox关于2008年7月21日

所以,你要编写代码,只出现在某些浏览器...有许多理由要这么做。 我第一次亲自需要做到这一点时,我试图嵌入一个MP3的某页。 出于某种原因,我无法写的代码,这样的MP3将发挥我的浏览器测试(即,火狐和Opera ) ,并验证在同一时间。 如果我没有记错,这是Internet Explorer的是造成问题的原因。 该解决方案我来到了被使用的PHP没有找到当用户使用IE浏览器,然后嵌入了MP3在非有效的代码如果是这种情况。

这个解决方案导致了MP3播放总是正确的网页总是验证,因为在W3C校验从未将自己伪装为IE浏览器。 这也许不是最道德的方式达到W3C的遵守,但它的作品。

还有一次我记得写的浏览器需要具体的代码是当我有问题的IE 6没有显示我的。 PNG图像正确。 余googled左右,并发现了几个办法来解决这个问题,但他们两人最终搞乱的总体层位置在我的网页。 不是故障排除这个问题,我去的快速解决方案,并决定将显示。图像时,用户的IE 6了。 如果用户有其他浏览器了。 png的问题我想这太糟糕了。

如何做到这一点:

首先您需要写一些代码行,以找出您的用户浏览器。 这是怎么做,用PHP :

  • 'HTTP_USER_AGENT' ]; $ visitorsOS = $ _SERVER [ ' HTTP_USER_AGENT ' ] ;

这里有三个例子,说明$ visitorsOS可以像

  • Mozilla/4.0 (兼容; MSIE 6.0 ;的Windows NT 5.1 ; SV1 ; 。 NET中使用CLR 1.0.3705 ; 。 NET中
  • Opera/9.51 ( Windows NT的5.1 ; ü ;特等)
  • Mozilla/5.0 (窗户; ü ;的Windows NT 5.1 ;恩美;右: 1.9 ) Gecko/2008052906火狐

第一个用户的Internet Explorer 6 ,第二歌剧院9.51 ,第三次的Firefox 。

现在,我们知道更多的信息比我们真正需要的访问者的计算机,我们需要把这些信息很好地利用。 说你要编写代码,将只显示如果用户在运行任何版本的Internet Explorer 。 在这种情况下,你会做出这样的事情:

(’MSIE’,$visitorsOS)){ 如果eregi ( ' MSIE ' , $ visitorsOS ) ) (

代码将只显示如果用户IE浏览器已

其他

代码将出现在所有其他情况下

我使用eregi ,一个区分大小写的正则表达式匹配,而非额日格,一个区分大小写的正则表达式匹配。 我不记得,如果我这样做的妄想,或者,如果我真的发现了一个情况下, Internet Explorer中,就把自己定为msie 。 在这两种情况下eregi不会伤害任何因此它是我使用。 想要写的代码特定版本的IE浏览器将只需要一个小的变化。 不是... ( eregi ( ' MSIE ' ... )我会用像( eregi ( ' MSIE 6.0 ' ... )如果我想的代码,只有出现MSIE 6.0 。