Archive for ‘ 2016 ’
[JavaScript]如何防止自己的网站被别人以 iframe 盖台嵌入 (与反制办法)
“iframe (内置框架)”是用来在网页中的特定位置嵌入另一个网页。目前 Facebook、Google+、Twitter...等用来在网页上显示社群内容的社群元件,几乎都是以 iframe 实作出来的。
原本框架是一种很好的应用,但如果是自己辛苦制作的网页被别人的网站以 iframe 嵌入,因而出现在别人的网站里,成为别人网站的一部份!!这种感觉就像是自己的心血被别人整碗捧走一样!!
导回自已网站的方法
方法 1
于网页的原始码加入以下 Script:
<script type="text/javascript"> if( top.location != document.location ){ top.location.href = document.location.href; } </script>
以上的 Script 会检查浏览器最上层视窗的网址是否与目前网页的网址一致,如果不一致,则把最上层视窗的网址改为目前网页的网址,就酱。
方法 2 (反制办法)
于网页的原始码加入以下 Script:
<script type="text/javascript"> if( top.location != document.location ){ document.write("<h1 style='color:#FF0000'>未经授权嵌入别人的网页是可耻的行为!!</h1>(<a href='"+document.location+"' target='_blank'>原站网址</a>)"); } </script>
以上的 Script 会检查浏览器最上层视窗的网址是否与目前网页的网址一致,如果不一致,就显示:
未经授权嵌入别人的网页是可耻的行为!!
(原站网址)
我比较不喜欢与人家互呛,所以我通常是用“方法 1”啦!
[MySQL]数据库的备份与还原
数据库汇出/备份
1. 备份单一数据库:
$ mysqldump -u Username -p --opt DatabaseName > Backup.sql
2. 仅备份特定数据库下的资料表:
$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql
3. 仅汇出资料表结构:
$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql
4. 备份全部的数据库:
$ mysqldump -u Username -p -A --opt > AllBackup.sql
mysql/mysqldump/mysqladmin 与“登入”有关的参数说明:
- -u Username: 用来存取 mysql 资料表的用户名称。此参数可省略,若省略,则表示为目前登入 linux 的用户名称。
- -p: 于执行时再询问密码。
- -pPassword: 用来存取 mysql 资料表的密码,-p 与 Password 的中间不可有空格。
数据库汇入/还原
1. 建立数据库,再从备份档汇入单一数据库:
$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql
2. 从备份档汇入全部的数据库 (不需先建立数据库):
$ mysql -u Username -p < AllBackup.sql
状况处理:
状况 1.
汇入数据库时出现错误讯息: Unknown collation: 'utf8mb4_unicode_ci' 或 Unknown collation: 'utf8mb4_unicode_520_ci'
说明:
MySQL 于 v5.5.3 版之后才有“utf8mb4”的编码格式。原本 utf8 的最大编码长度为 3bytes,而 utf8mb4 的最大编码长度为 4bytes,因此它比 utf8 可以储存更多的字符。但是以常用的文字来讲,utf8 已经完全足够使用了。若不升级 MySQL Server,则只须将汇入的字符编码格式改为原本的 utf8。
解决方法:
先将备份档中的 utf8mb4 字串替换成 utf8: (以下的三行指令需依照顺序执行)
$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql $ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql $ sed -i 's/utf8mb4/utf8/g' Backup.sql
全部替换完再进行汇入:
$ mysql -u Username -p DatabaseName < Backup.sql
状况 2.
以 mysqldump 汇出数据库时出现错误讯息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES
说明:
这错误讯息已说明了用来执行 mysqldump 的帐号没有“LOCK TABLES”权限! 通常用 root 帐号汇出数据库不会发生这个问题,因为我们会给 root 所有的权限。然而我们在设定其它帐号时可能会忘了给它设定“LOCK TABLES”权限,而执行 mysqldump 至少需要“SELECT”与“LOCK TABLES”权限才行,最好再加上“SHOW VIEW”、“EVENT”与“TRIGGER”。
解决方法:
重新授予用户权限:
grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;
状况 3.
从 cpanel 下载的 MySQL 档案格式为 *.gz,可以用 gunzip 解压缩:
$ gunzip Backup.sql.gz
注意: 使用 gunzip 解压缩后,原本的 *.gz 会被删除!!若要保留旧档,须改用下列指令:
$ gunzip -c Backup.sql.gz > Backup.sql
数据库离线备份/还原
MySQL 的数据库放在 /var/lib/mysql 下,以数据库的名称做为目录的名称。直接将 /var/lib/mysql 下的数据库目录用 tar 指令个别压缩起来即可做为备份。要还原再把档案解压缩回去。
要以这种方式执行备份与还原都必须先停止 MySQL 的服务:
$ service mysqld stop
参考网页
处理 DNS 的 CNAME 造成收件者错误的问题
第一次遇到客户因为自己 Server 的 DNS 问题,造成我方要寄信给客户时,收件者的 EMail Address 会于 SMTP Server 端被自动变更 (寄给 [email protected] 会变成寄给 [email protected]),以致于客户收不到 EMail 的问题!! (客户可能以为是我方的问题)
我自己测试的结果是与 DNS 的 CNAME 有关:
C:\>nslookup -type=cname example.com Server: dns.hinet.net Address: 168.95.1.1 example.com canonical name = other.example.com
同时我在网络上找到一篇微软的 KB 文件,已经写得很清楚了,我就直接把内容放上来。
免跑银行,直接线上领取 Google AdSense 广告收入 (西联汇款)
2020/12/30 更新:
Google 通知,将于 2021 年初停止透过西联汇款支付款项,所以本网页的教学大概也没什么用了。
如要继续收到 Google 支付的款项,你必须登入自己的帐户,然后新增或选取其他收款方式 (汇款或支票)。
之前的内容:
Google AdSense
约莫等了半年,终于又收到了一笔 Google AdSense 的广告收入了,算是农历过年前的一个小小小红包。
在台湾,AdSense 的用户可以使用“西联汇款”来进行收款,目前台湾有支援西联汇款的银行有京城银行、大众银行与元大银行。
我是使用“京城银行”,这个有点陌生的银行。它的“网络西联汇款”服务可以直接将我的 AdSense 广告收益从美金转为台币存入我的银行帐户,并且不收取任何手续费、不用等待,但是会有汇损的问题。
不过我今天要操作收款时,发现做为“汇款人”的 Google 的身份又改变了! 原本的身份“Google Ireland Ltd. (爱尔兰)”,更早之前是“Google Inc. (美国)”,现在的汇款人身份则为“Google Asia Pacific Pte. Ltd. (新加坡)”!
这个付款人的资讯会影响我们能否正常收款,不过没关系,下面会教你如何识别付款者的身份。
INFORMATION
我们解决了什么问题?我们创造了什么价值?
近期回响