月度归档 2014年3月13日

通过清心醉

针对MAGNETO SM_PAPA主题 联系方式的修改方法

为了能让MAGENTO商城上架,联系方式是必须修改的工作之一。

安装了SM_PAPA主题之后,从静态块的联系方式开始修改,发现调用的是一个form.phtml文件

找到该文件修改后,依然不见效果,在主页查看元素,class id又对的上

为此备份了下数据库,尝试从数据库里查看

结果发现,SM_PAPA的部分静态块 数据是在MYSQL里面

发现可以修改联系方式的地方有两处

一是表段#__cms_block;(作者第一次修改该位置,ID为84的数据,该表为初始化数据)

二是表段cms_block; 在该静态块的表内ID为84的数据里,修改对应的<div></div>里的数据即可。

 

如果部分静态块在后台的CMS无法找到,亦可尝试在数据库里查看修改。

作者就是因为该主题的静态块太多,作者未注意到,所以急于直接下手数据库,如非不得已,还是多看看页面或者静态块吧。

 

通过清心醉

PHP连接MYSQL

<?php
header(“Content-Type: text/html; charset=GBK”);
echo “连接数据库<br>”; //输出“连接数据库”并换行
$conn = @mysql_connect(“localhost”,”root”,”root”);

//连接数据库,地址为本机,MYSQL帐号密码同为root
mysql_select_db(“test”,$conn);//选择数据库
if($conn){
echo “连接成功<br>”;
$sql = “insert into test(users) values(‘mars’)”;
mysql_query(“SET NAMES ‘GBK'”);//处理乱码
mysql_query($sql,$conn);
echo “插入条数为”;

$recode=”select users from test”;
$result=mysql_query($recode,$conn);
$re_num = mysql_num_rows($result);//获取记录数
echo $re_num;
echo “<table border=1><tr><td>用户名</td></tr>”;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$users=$row[“users”];
echo “<tr><td>”.$users.”</td></tr>”;
}
echo “</table>”;
}else{
echo “连接失败”;
}
?>

通过清心醉

Windows之简单系统安装

Windows的窗口化系统,从98版的软驱安装,到98/me/2000的主流光碟安装,到现在xp已经过时的U盘安装。经历了一次次的演进。

软驱安装操作程序,早就是过时的技术了。光碟安装因为携带不方便,所以也不是主流,所以使用U盘安装系统成了现在的主流。

一个简单的内存卡/U盘,只要有个1GB左右的未使用空间,就基本足够了。(作者在这强烈推荐使用U盘,因为内存卡读取速度慢,而且容易烧卡)

为什么要1G的U盘?怎么用U盘来安装系统,对系统进行维护呢?

计算机的启动,其实是从主板开始,接通电源之后,主板的引导默认都先从硬盘启动。(当然还有很多设置了光驱第一启动,硬盘第二,只是启动时检测光驱没数据所以跳接硬盘启动)。

设置了U盘启动,自然U盘里就要有微系统(简称PE),光碟可以,U盘也可以,比如现在流行的一键制作U盘启动的大白菜、老毛桃等等,是很不错的选择。

PE系统一般有个300MB左右的空间就足够安装了,剩下那不足700MB是为了存放快速安装的ghost系统文件。如果以来,用U盘启动后,直接运行GHOST安装向导,把文件恢复即可。

 

针对ghost的操作使用,建议用U盘启动后,把U盘里面的GHOST文件复制到本地电脑里解压,一般的GHOST系统里面都包含有快速安装,直接选择盘符就可以了。

通过清心醉

指针代码

#include <iostream>
using namespace std;
int main( )
{
int a,b; //定义整型变量a,b
int *a_,*b_; //定义指针变量*a_,*b_
a=100;b=10; //对a,b赋值
a_=&a; //把变量a的地址赋给a_
b_=&b; //把变量a的地址赋给b_
cout<<a<<” “<<b<<endl;//输出a和b的值
cout<<*a_<<” “<<*b_<<endl; //输出*a_和*b_的值
return 0;
}

通过清心醉

C++头文件、源文件

一、C++编译模式

通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。

C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件a.cpp中定义 了一个全局函数“void a() {}”,而在文件b.cpp中需要调用这个函数。即使这样,文件a.cpp和文件b.cpp并不需要相互知道对方的存在,而是可以分别地对它们进行编译, 编译成目标文件之后再链接,整个程序就可以运行了。

这是怎么实现的呢?从写程序的角度来讲,很简单。在文件b.cpp中,在调用 “void a()”函数之前,先声明一下这个函数“void a();”,就可以了。这是因为编译器在编译b.cpp的时候会生成一个符号表(symbol table),像“void a()”这样的看不到定义的符号,就会被存放在这个表中。再进行链接的时候,编译器就会在别的目标文件中去寻找这个符号的定义。一旦找到了,程序也就可以 顺利地生成了。

注意这里提到了两个概念,一个是“定义”,一个是“声明”。简单地说,“定义”就是把一个符号完完整整地描述出来:它是变 量还是函数,返回什么类型,需要什么参数等等。而“声明”则只是声明这个符号的存在,即告诉编译器,这个符号是在其他文件中定义的,我这里先用着,你链接 的时候再到别的地方去找找看它到底是什么吧。定义的时候要按C++语法完整地定义一个符号(变量或者函数),而声明的时候就只需要写出这个符号的原型了。 需要注意的是,一个符号,在整个程序中可以被声明多次,但却要且仅要被定义一次。试想,如果一个符号出现了两种不同的定义,编译器该听谁的?

这 种机制给C++程序员们带来了很多好处,同时也引出了一种编写程序的方法。考虑一下,如果有一个很常用的函数“void f() {}”,在整个程序中的许多.cpp文件中都会被调用,那么,我们就只需要在一个文件中定义这个函数,而在其他的文件中声明这个函数就可以了。一个函数还 好对付,声明起来也就一句话。但是,如果函数多了,比如是一大堆的数学函数,有好几百个,那怎么办?能保证每个程序员都可以完完全全地把所有函数的形式都 准确地记下来并写出来吗?

二、什么是头文件

很显然,答案是不可能。但是有一个很简单地办法,可以帮助程序员们省去记住那么多函数原型的麻烦:我们可以把那几百个函数的声明语句全都先写好,放在一个文件里,等到程序员需要它们的时候,就把这些东西全部copy进他的源代码中。

这 个方法固然可行,但还是太麻烦,而且还显得很笨拙。于是,头文件便可以发挥它的作用了。所谓的头文件,其实它的内容跟.cpp文件中的内容是一样的,都是 C++的源代码。但头文件不用被编译。我们把所有的函数声明全部放进一个头文件中,当某一个.cpp源文件需要它们时,它们就可以通过一个宏命令 “#include”包含进这个.cpp文件中,从而把它们的内容合并到.cpp文件中去。当.cpp文件被编译时,这些被包含进去的.h文件的作用便发 挥了。

举一个例子吧,假设所有的数学函数只有两个:f1和f2,那么我们把它们的定义放在math.cpp里:

/* math.cpp */

double f1()

{

//do something here….

return;

}

double f2(double a)

{

//do something here…

return a * a;

}

/* end of math.cpp */

并把“这些”函数的声明放在一个头文件math.h中:

/* math.h */

double f1();

double f2(double);

/* end of math.h */

在另一个文件main.cpp中,我要调用这两个函数,那么就只需要把头文件包含进来:

/* main.cpp */

#include “math.h”

main()

{

int number1 = f1();

int number2 = f2(number1);

}

/* end of main.cpp */

这 样,便是一个完整的程序了。需要注意的是,.h文件不用写在编译器的命令之后,但它必须要在编译器找得到的地方(比如跟main.cpp在一个目录下)。 main.cpp和math.cpp都可以分别通过编译,生成main.o和math.o,然后再把这两个目标文件进行链接,程序就可以运行了。

三、#include

#include 是一个来自C语言的宏命令,它在编译器进行编译之前,即在预编译的时候就会起作用。#include的作用是把它后面所写的那个文件的内容,完完整整地、 一字不改地包含到当前的文件中来。值得一提的是,它本身是没有其它任何作用与副功能的,它的作用就是把每一个它出现的地方,替换成它后面所写的那个文件的 内容。简单的文本替换,别无其他。因此,main.cpp文件中的第一句(#include “math.h”),在编译之前就会被替换成math.h文件的内容。即在编译过程将要开始的时候,main.cpp的内容已经发生了改变:

/* ~main.cpp */

double f1();

double f2(double);

main()

{

int number1 = f1();

int number2 = f2(number1);

}

/* end of ~main.cpp */

不多不少,刚刚好。同理可知,如果我们除了main.cpp以外,还有其他的很多.cpp文件也用到了f1和f2函数的话,那么它们也通通只需要在使用这两个函数前写上一句#include “math.h”就行了。

四、头文件中应该写什么

通 过上面的讨论,我们可以了解到,头文件的作用就是被其他的.cpp包含进去的。它们本身并不参与编译,但实际上,它们的内容却在多个.cpp文件中得到了 编译。通过“定义只能有一次”的规则,我们很容易可以得出,头文件中应该只放变量和函数的声明,而不能放它们的定义。因为一个头文件的内容实际上是会被引 入到多个不同的.cpp文件中的,并且它们都会被编译。放声明当然没事,如果放了定义,那么也就相当于在多个文件中出现了对于一个符号(变量或函数)的定 义,纵然这些定义都是相同的,但对于编译器来说,这样做不合法。

所以,应该记住的一点就是,.h头文件中,只能存在变量或者函数的声明, 而不要放定义。即,只能在头文件中写形如:extern int a;和void f();的句子。这些才是声明。如果写上int a;或者void f() {}这样的句子,那么一旦这个头文件被两个或两个以上的.cpp文件包含的话,编译器会立马报错。(关于extern,前面有讨论过,这里不再讨论定义跟 声明的区别了。)

但是,这个规则是有三个例外的。

一,头文件中可以写const对象的定义。因为全局的const对象默 认是没有extern的声明的,所以它只在当前文件中有效。把这样的对象写进头文件中,即使它被包含到其他多个.cpp文件中,这个对象也都只在包含它的 那个文件中有效,对其他文件来说是不可见的,所以便不会导致多重定义。同时,因为这些.cpp文件中的该对象都是从一个头文件中包含进去的,这样也就保证 了这些.cpp文件中的这个const对象的值是相同的,可谓一举两得。同理,static对象的定义也可以放进头文件。

二,头文件中可 以写内联函数(inline)的定义。因为inline函数是需要编译器在遇到它的地方根据它的定义把它内联展开的,而并非是普通函数那样可以先声明再链 接的(内联函数不会链接),所以编译器就需要在编译时看到内联函数的完整定义才行。如果内联函数像普通函数一样只能定义一次的话,这事儿就难办了。因为在 一个文件中还好,我可以把内联函数的定义写在最开始,这样可以保证后面使用的时候都可以见到定义;但是,如果我在其他的文件中还使用到了这个函数那怎么办 呢?这几乎没什么太好的解决办法,因此C++规定,内联函数可以在程序中定义多次,只要内联函数在一个.cpp文件中只出现一次,并且在所有的.cpp文 件中,这个内联函数的定义是一样的,就能通过编译。那么显然,把内联函数的定义放进一个头文件中是非常明智的做法。

三,头文件中可以写类 (class)的定义。因为在程序中创建一个类的对象时,编译器只有在这个类的定义完全可见的情况下,才能知道这个类的对象应该如何布局,所以,关于类的 定义的要求,跟内联函数是基本一样的。所以把类的定义放进头文件,在使用到这个类的.cpp文件中去包含这个头文件,是一个很好的做法。在这里,值得一提 的是,类的定义中包含着数据成员和函数成员。数据成员是要等到具体的对象被创建时才会被定义(分配空间),但函数成员却是需要在一开始就被定义的,这也就 是我们通常所说的类的实现。一般,我们的做法是,把类的定义放在头文件中,而把函数成员的实现代码放在一个.cpp文件中。这是可以的,也是很好的办法。 不过,还有另一种办法。那就是直接把函数成员的实现代码也写进类定义里面。在C++的类中,如果函数成员在类的定义体中被定义,那么编译器会视这个函数为 内联的。因此,把函数成员的定义写进类定义体,一起放进头文件中,是合法的。注意一下,如果把函数成员的定义写在类定义的头文件中,而没有写进类定义中, 这是不合法的,因为这个函数成员此时就不是内联的了。一旦头文件被两个或两个以上的.cpp文件包含,这个函数成员就被重定义了。

五、头文件中的保护措施

考 虑一下,如果头文件中只包含声明语句的话,它被同一个.cpp文件包含再多次都没问题——因为声明语句的出现是不受限制的。然而,上面讨论到的头文件中的 三个例外也是头文件很常用的一个用处。那么,一旦一个头文件中出现了上面三个例外中的任何一个,它再被一个.cpp包含多次的话,问题就大了。因为这三个 例外中的语法元素虽然“可以定义在多个源文件中”,但是“在一个源文件中只能出现一次”。设想一下,如果a.h中含有类A的定义,b.h中含有类B的定 义,由于类B的定义依赖了类A,所以b.h中也#include了a.h。现在有一个源文件,它同时用到了类A和类B,于是程序员在这个源文件中既把 a.h包含进来了,也把b.h包含进来了。这时,问题就来了:类A的定义在这个源文件中出现了两次!于是整个程序就不能通过编译了。你也许会认为这是程序 员的失误——他应该知道b.h包含了a.h——但事实上他不应该知道。

使用”#define”配合条件编译可以很好地解决这个问题。在一 个头文件中,通过#define定义一个名字,并且通过条件编译#ifndef…#endif使得编译器可以根据这个名字是否被定义,再决定要不要继 续编译该头文中后续的内容。这个方法虽然简单,但是写头文件时一定记得写进去。

 

转自:http://qimo601.iteye.com/blog/1520104

通过清心醉

C++友元类及函数

友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);

友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
友元函数的调用与一般函数的调用方式和原理一致。

友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。

例如,以下语句说明类B是类A的友元类:
class A
{

public:
friend class B;

};
经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员。

 

 

使用友元类时需要注意以下三点:

一:友元关系不能被继承。
二:友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
三:友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明 

通过清心醉

针对xampp、wamp等一键安装包修改默认mysql密码

执行mysql命令

mysql -u root mysql

mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=’name’;

mysql> FLUSH PRIVILEGES;

mysql> QUIT

或者登陆phpmyadmin

找到mysql root

修改配置后phpmyadmin文件夹里conf文件记得写入密码

 

以下针对xampp环境:

MySQL 的“root”用户默认状态是没有密码的,所以在 PHP 中您可以使用 mysql_connect(“localhost”,”root”,””) 来连接 MySQL 服务器;

如果您想为 MySQL 中的“root”用户设置密码,请在控制台中使用“mysqladmin”命令。例如:

在windows版本的xampp下:

\…\xampp\mysql\bin\mysqladmin -u root -p password 新密码

运行后会提示输入旧密码,如果正确,则会立即修改新输入的密码

linux版本的xampp是如下命令:

/opt/lampp/bin/mysqladmin -u root -p password 新密码

通过清心醉

冒险岛开外挂的安全隐患

注:只要是开了挂(捆绑有后台窃取数据及自动发送至病毒服务器的木马程序),安全性相同。
作者因游戏一好友支持,闲余时间自学了点各种程序语言,特编写该文章,再次感谢猪头的大力支持,由于作者各种程序只是三流技术,各种IT大侠勿喷。谢谢!
正文:
冒险科技,不管是收费还是免费,帐号的安全性能其实都为0,说帐号安全那是科技开发者不搞你的号而已。
首先是对无任何安全保障的用户帐号,科技只需最简单的记忆用户输入的帐号密码甚至哪区哪服,然后发送到指定的服务器,科技作者只需照板登陆(如果用户已登陆,利用远程技术,强制中指开科技者的游戏,然后抢先登陆)。
其次是安全卡用户,序列号的保存,是关系到号未来的主人是谁,作者2年前,玩的一英雄,跑网吧玩开挂,把安全卡放在电脑上,结果安全卡被科技者远程拷贝,然后强T下线,所幸的是,安全卡的序列号被涂鸦过,至使游戏被强断网,接着的情况就是号被洗,在此特别提醒开科技玩家,切勿把安全卡放开科技的电脑上,否者你的帐号随时被清空,至于含有序列号的源安全卡,可以选择保存到手机,或者手写出来保存好,然后彻底涂鸦序列号,以达到防止帐号安全保护资料被修改的效果(有些人会说是网管整出来的,但实际上中国的网吧大部分网管,所能做到的技术估计就只有一个,帐号密码记忆保存)。这些只是安全卡的保护问题,具体盗取方式,请看下文。
再次是密保,这个就是最安全的了吧,但一样有玩家拥有密保被盗过号的吧?(注:作者只使用过安全卡和密保,对于手机验证,通过方式一样)。
科技作者能记忆用户键盘的输入事件来记忆帐号密码,一样可以截取你的密保卡和密保数字验证(至于盛大的软键盘的输入加密是否已被解译,无从取证,不过想来最保护帐号密码相对安全的一种方式)。
用户输入帐号密码,弹出密保卡验证,科技自动截取图片并发送科技服务器(原理和自动答题一样),然后科技作者要登陆的话,因为会弹出不同的区域,所以玩家在输入对应的密保卡之后,科技作者短期间是不可能登陆玩家帐号的(除非远程控制,最好的解决办法就是直接断网,科技有无扩展远程控制功能,但愿有反汇高手测试告知~)。所以玩家要经常更换密保卡,否则即使你的密保卡没放电脑上,长时间的登陆,那一堆堆的数据都在科技作者服务器上,只要花点时间,就可以登陆你帐号了。而后是密保的问题,科技作者如果要盗取指定帐号,最简单的是强T玩家下线,玩家再次登陆的时候,帐号密码的一次验证发送给科技作者服务器再转接盛大服务器,返回一个密保验证给服务器到玩家,这时玩家只要输入密保数字,发送到可科技作者的服务器的时候,科技作者只需要在自行打开的冒险游戏中照板输入,那么该帐号内的其中一个角色(因盛大游戏小退是在登陆界面,所以科技作者不可能二次登陆,除非盛大服务器的密保加密方式给破了吧~)就有可能被盗取。
密保卡和密保的数据发送到科技作者服务器,玩家可自行用网络连接查看及数据包拦截的方式,查看发送的IP地址就可以了
通过清心醉

VPS、服务器不同域名访问

VPS主机或者服务器,如果只做一个站点那简单,只要机器能承受的起,可以做多站点

目前普遍的多站点,很多新手都采用二级目录的形式,如www.qingxinzui.com/1; www.qingxinzui.com/2

对于如此做法,能增加主域www.qingxinzui.com的流量、PV等值。

如果想做站群,或者自己多做几个网站,包括二级域站点,数据独自分开,而且为不一样的站点

(如www.a.qingxinzui.com; www.b.qingxinzui.com),如此一来,不同站点会各有各的PR、PV、IP等值

(注:www.qingxinzui.com和qingxinzui.com两个也可以做为不同的网站,一般做301重定向,大家都会home.com跳转到www.home.com域

作者的该博客就是用此做法,因为结合大部分用户在输入网站的时候都有不带www.的习惯)

 

好了,开始不同域访问的操作

首先增加访问名字
如:www.qingxinzui.com
打开/opt/lampp/etc/http.conf

当前系统因为没有安装Windows平台的XAMPP,直接搜索就是了。

<VirtualHost x.x.x.x>
DocumentRoot /opt/lampp/qingxinzui   #网站目录
ServerName www.qingxinzui.com    # 访问的名称
</VirtualHost>
<VirtualHost x.x.x.x.>
DocumentRoot /opt/lampp/htdocs
ServerName gm.qingxinzui.com
</VirtualHost>
以上代码是只能通过域名访问
即gm.qingxinzui.com和www.qingxinzui.com 访问不同目录
因为默认的htdocs目录有权限,所以qingxinzui目录也写个权限
<Directory “/opt/lampp/qingxinzui”>
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
 Require all granted
</Directory>
这样就可以同过不同的域名访问了
然后写上

NameVirtualHost x.x.x.x
<VirtualHost x.x.x.x>
ServerName x.x.x.x
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>
禁止掉当前IP的访问 防止别人通过IP来访问或者别人的域名解析到当前的IP
通过清心醉

apache 禁止目录的自动目录列表显示

 目录列表原因分析

当用户请求的URL地址是某个目录地址的时候,如果该目录开启了自动列表功能并且WEB服务器默认的页面文件(如index.html/home.html/default.htm/default.asp/default.aspx/index.php等)也不存在,那么该目录所包含的文件就会被自动的以列表的形式显示出来,这样可能就会导致敏感文件被泄露。

安全隐患

1、如果必须开启该目录的目录列表功能,则应对该目录下的文件进行详细检查,确保不包含敏感文件。
2、如非必要,请重新配置WEB服务器,禁止该目录的自动目录列表功能。
禁止目录列表解决办法
如何配置WEB服务器,禁止该目录的自动目录列表功能?

要禁止此功能,修改Apache配置文件httpd.conf;

找到下面这一句删除掉Indexes即可。

把Options Indexes FollowSymLinks改成Options FollowSymLinks即可。

具体配置如下

httpd.conf; 开启mod_autoindex模块
打开列目录功能:

Options +Indexes

关闭列目录功能:

Options -Indexes

<Directory D:/abc>
     Options Indexes FollowSymLinks
     AllowOverride  All
</Directory>

 

通过.htaccess文件
 

可以在根目录新建或修改 .htaccess 文件中添加

<Files *>
  Options -Indexes
 </Files>

 

通过清心醉

xampp For Linux安全设置(修改FTP及页面访问密码控制)

默认安装的xampp(lampp),在Centos平台的目录一般为:
/opt/lampp我们要创建数据等等,
可以通过
http://域名          来访问
默认会跳转到htdocs里
当然,前期做一个站点的话,只需要把网站的目录名字修改为htdocs即可如果需要做多站点,其实只需把网站文件的目录记住,在http.conf里增加目录位置及权限就OK
否则别人访问了的话,数据库是很不安全
这样就可以达到默认不修改htdocs的问题
然后通过修改访问htdocs的二级域名等等
可是默认htdocs的XAMPP是可以通过外网访问的,这时可以通过以下命令对外网访问进行加密
# /opt/lampp/lampp security
XAMPP:  Quick security check…
XAMPP:  Your XAMPP pages are secured by a password.
XAMPP: Do you want to change the password anyway? [no] y    //修改xampp页面访问的问题
XAMPP: Password:
XAMPP: Password (again):
XAMPP:  Password protection active. Please use ‘xampp’ as user name!
XAMPP:  MySQL is not accessable via network. Good.
XAMPP:  MySQL has a root passwort set. Fine! 🙂  //这里本是 : + ) 两个字符 没想到居然会变成图片
XAMPP:  ProFTPD has a new FTP password. Great!
XAMPP: Do you want to change the password anyway? [no] y  //修改默认FTP访问密码
XAMPP: Password:
XAMPP: Password (again):
XAMPP: Reload ProFTPD…ok.
XAMPP:  Done.
//重启服务器在这要说明下,修改过的htdocs,访问的时候需要用户密码
默认用户一般为:xampp (部分例外的可能是lampp lamp)
FTP的默认一般为:daemon顺便再说下,FTP的默认目录就是为:htdocs
如果要修改的话
打开 /opt/lampp/etc/proftpd.conf这文件
找到有/opt/lampp/htdocs的
有两行
一个是权限一个是主目录
全部修改为自己需要创建的FTP目录比如我创建的FTP目录为chat
修改后的两行为:

<Directory /opt/lampp/chat/*>
  AllowOverwrite on
</Directory>
# only for the web servers content
DefaultRoot /opt/lampp/chat
前问http://www.qingxinzui.com/?p=150说了FTP的使用,可是当FTP使用完之后,关闭掉可以使服务器少一项危险.
方法:
./lampp stopftp
通过清心醉

linux挂载第二硬盘

[root@MyCloudServer ~]# fdisk -l   //查看硬盘状态
Disk /dev/xvda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000aba6
    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2              64        1306     9972736   8e  Linux LVM
Disk /dev/xvdb: 42.9 GB, 42949672960 bytes  //该第二硬盘未挂载
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d68a3
    Device Boot      Start         End      Blocks   Id  System
Disk /dev/mapper/vg_501153278-lv_root: 9135 MB, 9135194112 bytes
255 heads, 63 sectors/track, 1110 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_501153278-lv_swap: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
[root@MyCloudServer ~]# fdisk /dev/xvdb  //对硬盘进行分区
(这特别说明下:因为各个主机VPS的硬盘名不一样
比如作者租的第一个VPS主机
第一硬盘:/dev/sda  第二硬盘:/dev/sdb 很明显是ab来区分,所以根据硬盘符号来进行适当修改
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
         switch off the mode (command ‘c’) and change display units to
         sectors (command ‘u’).
Command (m for help): n  //新增分区
Command action
   e   extended
   p   primary partition (1-4)
p     //主分区
Partition number (1-4): 1  //分区号为1
First cylinder (1-5221, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-5221, default 5221):
Using default value 5221
Command (m for help): t  //分区格式
Selected partition 1
Hex code (type L to list codes): 8e  //LVM格式
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w  //保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@MyCloudServer ~]# reboot //重启LINUX
Broadcast message from root@MyCloudServer
        (/dev/pts/0) at 0:47 …
The system is going down for reboot NOW!
[root@MyCloudServer ~]#

至于挂载: 一般 mount /dev/sdb1 /opt/lampp
有时需要指定类型的话,因为上面的挂载为ext3
所以输入
mount -t ext3 /dev/xvdb1 /opt/lampp

df -h可以查看已经挂载的硬盘

通过清心醉

Windows+sendmail邮箱配置方法

网站注册后系统会自动发送一封注册信息的电子邮件到注册人的信箱里,在Linux平台里可以使用sendmail的函数方法直接调用,sendmail是Linux平台的软件。那么在Windows下使用sendmail又该如何?(在此佩服程序员的强大,Linux的sendmail硬搬到Windows)

第一,首先要修改修改 x:\xampp\sendmail\sendmail.ini 文件的以下内容

smtp_server=mail.vhost.tw
auth_username=sendmail@vhost.tw
auth_password=xxxxxx

第二,修改 x:\xampp\apache\bin\php.ini 文件的以下内容

[mail function]
; For Win32 only.
;smtp_port = 25

; For Win32 only.
;sendmail_from =

; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path = “E:\xampp\sendmail\sendmail.exe -t”

第三, 重启 Apache

这样,Windows下使用sendmail配置就完成了!
sendmail下载地址: http://url.cn/MtlTAw

通过清心醉

Linux下xampp里面的proftpd简单使用方法

1.设置ftp用户组

groupadd ftpusers

2.创建用户目录和用户

mkdir /www/
chmod -R 777 /www/
useradd -d /www/ -g ftpusers -s /bin/fales user  //user为用户名
#修改用户密码
passwd lava
#然后输入你的密码

/opt/lampp/lampp reloadftp  #重启ftp

通过清心醉

magento 密码找回出错的解决方法

当密码找回邮件发送至客户邮箱时,客户打开邮箱链接系统会提示:
Fatal error: Call to a member function setCustomerId() on a non-object in /www1/app/code/core/Mage/Customer/controllers/AccountController.php on line 753

查看当前错误文件的源代码

$this->getLayout()->getBlock(‘resetPassword’)
->setCustomerId($customerId)   //这里报错
->setResetPasswordLinkToken($resetPasswordLinkToken);

即然这里调用了block,系统肯定在layout文件中有相关定义

打开布局文件

app/design/frontend/default/当前使用模板/layout/customer.xml

发现没有这个句柄。
源安装文件的模板中找到了,复制过去

<customer_account_resetpassword translate=”label”>
<label>Reset a Password</label>
<remove name=”right”/>
<remove name=”left”/>

<reference name=”head”>

<action method=”setTitle” translate=”title” module=”customer”>
<title>Reset a Password</title>
</action>
</reference>
<reference name=”root”>
<action method=”setTemplate”>
<template>page/1column.phtml</template>
</action>
<action method=”setHeaderTitle” translate=”title” module=”customer”>
<title>Reset a Password</title>
</action>
</reference>
<reference name=”content”>
<block type=”customer/account_resetpassword” name=”resetPassword” template=”customer/form/resetforgottenpassword.phtml”/>
</reference>
</customer_account_resetpassword>

然后登陆后台,清除缓存等数据并刷新。密码找回项即可成功实现。

 

 

对于忘记后台超级管理密码的,可使用以下方法:

一:

直接修改数据库admin_user表里的密码(管理员帐号)

编辑会看到有password的长窜vaule值这就是你的密码 md5加密后的值。

具体MD5加密就不说了,直接GOOGLE搜索MD5就有结果了。

二:

用sql命令修改管理员新密码
执行以下语句:
UPDATE `admin_user` SET `password` = MD5(‘123456’) WHERE `username` = ‘admin’;

 

/***以下为注释

`password` = MD5(‘123456’) 为修改的密码

`username` = ‘admin’;为要修改的用户。 ****/

 

 

通过清心醉

linux CentOS 6.4零基础安装Xampp

安装SSH Secure Shell Client命令终端
安装winscp上传终端
首先将xampp-linux-1.8.2-3-installer.run文件上传至root/root目录
然后在命令终端里输入:
./xampp-linux-1.8.2-3-installer.run
系统会提示好多,不翻译,全部按Y
安装目录为: /opt/lampp
/*******************************************
该内容为注释:::::
(以上保证已获得ROOT权限)
如果是普通用户,记得su获得权限
然后给文件权限
chmod 755 xampp-linux-1.8.2-3-installer.run
********************************************/
接着会提示
—————————————————————————-
Please wait while Setup installs XAMPP on your computer.
 Installing
 0% ______________ 50% ______________ 100%
 #########################################
—————————————————————————-
Setup has finished installing XAMPP on your computer.
表示Linux下XAMPP已经安装完毕
接着输入:
/opt/lampp start
屏幕会显示:
Starting XAMPP for Linux 1.8.2-3…
XAMPP: Starting Apache…already running.
XAMPP: Starting MySQL…ok.
XAMPP: Starting ProFTPD…ok.
到此为止Apache和MySQL已经运行了
接下来是测试
由于是命令终端,租的服务器没有图形界面,没有IE测试
所以作者一个个文件查找
打开
/opt/lammp/etc/extra/httpd-xmapp.conf
段落: 里增加一句Require all granted
<Directory “/opt/lampp/phpmyadmin”>
    AllowOverride AuthConfig Limit
    Require all granted #增加的语句
</Directory>
找到Order deny,allow
然后Deny from all 修改为 #Deny from all
注释掉了就可以外网访问
重启LINUX系统
终端输入:
reboot
重启之后,重开终端
输入:/opt/lampp/lampp start
注意:start为开启,stop为关闭,防火墙一样设置
之后系统会提示:
Starting XAMPP for Linux 1.8.2-3…
XAMPP: Starting Apache…ok.
XAMPP: Starting MySQL…ok.
XAMPP: Starting ProFTPD…ok.
经过多次测试,原来是需要关闭防火墙
终端命令:
service iptables stop
应该可以把80端口加如防火墙,具体的以后再设置了