PHP图像字符水印居中

[php]
<?php
//让图像上字符串居中
header("content-type:text/html;charset = utf-8");
//(1)创建画布
$filename = "./images/02.jpg";
$img = imagecreatefromjpeg($filename);
$str = "WELCOME to liuguofeng.com";
$font = 5;
//(2)分配颜色:
$color1 = imagecolorallocate($img,255,0,255);
$color2 = imagecolorallocate($img,255,0,255);
//(3)获取画布宽度和高度
$imgWidth = imagesx($img);
$imgHeight = imagesy($img);
//(4)获取字体尺寸
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
//(5)计算字符串的起始坐标
$x = ($imgWidth-$fontWidth*strlen($str))/2;
$y = ($imgHeight-$fontHeight)/2;
//(6)写入一个字符串
imagestring($img,$font,$x,$y,$str,$color1);
header("content-type:image/jpeg");
imagejpeg($img);
//(7)关闭图像
imagedestroy($img);
?>
[/php]

PHP通过HTTP请求防盗链

anti-theft_chain.php

[php]
<?php
header("content-type:text/html;charset=utf-8");
if(isset($_SERVER[‘HTTP_REFERER’]))
{
//域名对比,一致下载,不一致跳转到错误页面
//strpos: 查找字符串首次出现的位置
if(strpos($_SERVER[‘HTTP_REFERER’],"http://blog.liuguofeng.com")===0)
{
echo "您可以下载软件了";
}else
{
echo "请从本网站下载";
}
}
?>
[/php]

anti-theft_chain.html

[html]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试页面</title>
</head>
<body>
<a href="http://blog.liuguofeng.com/anti-theft_chain.php">测试页面</p>
</body>
</html>
[/html]

PHP隐藏下载地址

download.php

[php]
<?php
//获取传递的文件名
$filename = $_GET[‘filename’];
$pathname = “$./download/$filename”;
//以只读方式打开文件
$handle = fopen($pathname,”rb”);
//返回数据的内容类型
//’octet-stream’八位二进制流
//’content-desposition:attachment’以附件形式打开
header(“content-type:application/octet-stream”);
header(“content-despositon:attachment;filename=$filename”);
//循环读取指定大小的内容,并输出
while($str=fread($handle,1024))
{
echo $str;
}
//关闭文件
fclose($handle);
?>
[/php]

download.html

[html]
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
</head>
<body>
<a href=”download.php?filename=test.jpg”>下载图片</a>
<br>
<a href=”download,php?filename=test.mp4″>下载视频</a>
</body>
</html>
[/html]

用一条 SQL 语句展示需求用户列表

数据库的如下数据表 scores 记录用户得分历史,uid(int) 表示用户 ID,score(int) 表示分数,date(date) 表示日期,每个用户每天会产生多条数据 (示例:uid 3, date 2017-03-17)

现在需要一份用户列表,这些用户在 2017 年 3 月份的 31 天中,至少要有 16 天, 每天得分总和大于 40 分。用一条 SQL 语句表示。

select uid,count(1) from 
(
select date,uid,sum(score) sum from scores 
where substr(date,1,7)='2017-03' 
group by date,uid 
having sum(score)>40 
) cc 
group by uid 
having count(1) >=16

 

写出5个 PHP 中的魔术方法,并简单描述其作用

__construct();
构造函数:在一个类中定义一个方法作为构造函数。具有构造方法的类在每次创建新对象时先调用此方法,适合在使用对象之前做一些初始化工作
__set();
再给不可访问属性赋值时,__set()会被调用
__get();
读取不可访问属性的值时,__get()会被调用
__isset();
当对不可访问属性调用isset()或empty()时,__isset()会被调用
__unset();
当对不可访问属性调用unset()时,__unset()会被调用

谈谈对MVC的理解

MVC简单在字段上理解是 模型、视图、控制器。模型来操作数据,视图用来显示数据,控制器用来进行逻辑判断,将从模型获取到的数据传递给视图,MVC的工作是方便分工,将前端和后端分开,业务逻辑和数据操作分离。

XAMPP(apache)配置多个域名绑定方法

Windows XAMPP下Apache配置多个域名绑定访问的完整教程。共分为域名映射和主机绑定两大部分。下面分别介绍。

一、域名映射

先修改Hosts,在Hosts中添加你要绑定在Apache的多个域名,用Dreamweaver或记事本打开

C:/WINDOWS/system32/drivers/etc/hosts

然后在最底部添加您要绑定的域名,格式如下:

127.0.0.1 tp.localhost
127.0.0.1 beauty-soft.net

如果还要绑其它域名,按上面的格式都添加上,例如:

127.0.0.1 www.wyk.net.ru
127.0.0.1 www.tianmen.net.ru
127.0.0.1 www.whois.org.ru
127.0.0.1 www.jingchu.org
127.0.0.1 www.tanfen.net
127.0.0.1 www.zz.pp.ru
127.0.0.1 t.beauty-sfot.net

总之,您要绑定的域名都按如上格式添加在Hosts文件最底部。

完成后,保存C:/WINDOWS/system32/drivers/etc/hosts文件。

在保存时,由于hosts文件是无后缀名的文件,如果使用系统内置的记事本打开,需要在保存文件名时加上双引号(””)才可以保存。保存类型需要选择“所有文件(*.*)”。如下图所示。

至此,域名映射部份就完成了。打开命令行终端,使用ping命令可测试域名是否生效。如下图所示。

说明:如果ping域名能够得出对应的ip地址,证明配置成功。

二、虚拟主机绑定域名

然后用Dreamweaver打开 Apache 配置文件 xampp/apache/conf/extra/httpd-vhosts.conf 内有一堆文字,我的httpd-vhosts.conf文件路径为:

然后在httpd-vhosts.conf最底部直接添加以下代码:

<VirtualHost *:80>

ServerAdmin test@localhost

DocumentRoot “G:/xampp/htdocs/tp”

ServerName tp.localhost

</VirtualHost>

以上配置信息含义如下:

  • ServerAdmin       表示该网站的管理者,在Windows下可随便填。
  • DocumentRoot   这个很重要,表示你要绑定的网站绝对路径(注意需要让PHP访问到,配置到Xampp下的htdocs目录即可)
  • ServerName       这个就是你要绑定的域名了。如果是本地的,绑定前需要按照文章开头配置C:WINDOWSsystem32driversetchosts文件

如果还有其他网站需要绑定,按照格式依次添加即可。

最后只需要重启Xampp或者Apache。你应该就能通过http://tp.localhost 访问到你的网站了。如果还有什么不明白,直接在在此留言。

转自: http://www.beauty-soft.net/blog/ceiba/linux/2014-07-01/697.html