月度归档 2014年10月30日

通过清心醉

magento对硬盘的要求

昨天在该VPS上架设了个MAGENTO环境,结果访问的时候时快时慢的。

结果查看了下硬盘使用,发现硬盘未到负荷的状态。

作者有几台VPS,内存来说基本1GB足够跑起3个MAGENTO(产品定在总计3000个)

现在这台由于价格便宜,结果试跑不行,后来咨询服务商,发现不是SSD的硬盘。

在此建议各位搭配magento环境的朋友,选择VPS的时候,硬盘最好找SSD,只要你配置好,跑的绝对不比zencart慢。

 

 

通过清心醉

linux sendmail简单配置

sendmail的配置比较麻烦,特别是验证这一块,作者先写下sendmail简单发件的安装方式。

#经作者测试,发139邮箱暂时是没问题的,如果发腾讯,会直接给拦截掉。

#那是因为没有修改主机名

首先yum安装sendmail服务

[root@qingxinzui ~]# yum install -y sendmail

#sendmail服务

[root@qingxinzui ~]# yum install -y sendmail-cf

#m4命令所需要

[root@qingxinzui ~]# yum install -y saslauthd

[root@qingxinzui ~]#service saslauthd start

接下类是配置SMTP的认证:

[root@qingxinzui ~]#vi /etc/mail/sendmail.mc

#查找:

dnl TRUST_AUTH_MECH(‘EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl

dnl define(‘confAUTH_MECHANISMS’, ‘EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl

这两行,把前面的dnl删除.

#设置sendmail网络访问权限:

[root@qingxinzui ~]#vi /etc/mail/sendmail.mc

#查找:

DAEMON_OPTIONS(‘Port=smtp,Addr=127.0.0.1,Name=MTA’)dnl

把127.0.0.1修改为0.0.0.0即全部都可以访问,如果是执行SSH终端命令发送,这一步应该是可以不用设置的.

#生成sendmai的配置文件

[root@qingxinzui ~]#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

#请注意是否成功安装sendmail-cf,否则无法执行该段.

#到此基础的sendmail已完成,测试下

[root@qingxinzui ~]#service sendmail start

#在根目录创建个text.txt文件.

[root@qingxinzui ~]#vi text.txt

This is SendMail.

#:wq 保存退出

[root@qingxinzui ~]#mail -s “Email-text” ********@139.com < text.txt

好了,看下邮箱吧

sendmail

一个简单的Email通信系统完成.

作者在64位的环境下,同方法架设及mail -s发件

#以下方法适合64位,32位没测试。

提示:-bash: mail: command not found

[root@qingxinzui ~]#yum -y install mailx就可以解决了。

如果whois命令没有的话

[root@qingxinzui ~]#yum -y install jwhois

 

 

 

 

通过清心醉

magento无法索引解决方法

出现magento无法索引(Cannot initialize the indexer process),基本上都是在恢复数据的时候容易出现的错误.所以定义在URL的表数据里(包含URL重写).

使用phpmyadmin进入magento数据库

找到core_url_rewrite表段,然后选择”清空”,注意是清空,不是删除哦.

通过清心醉

linux自架设magento环境

由于CentOS 默认yum安装apache+php+mysql,安装magento会有三个模块是没有添加扩展的.
分别是:mcrypt, dom, gd。

而CentOS官方已经不再对mcrypt模块进行支持,作者所以使用了Fedora的扩展库,EPEL (Extra Packages for Enterprise Linux).

32位的可以去:http://mirrors.sohu.com/fedora-epel/6/i386/

64位的:http://mirrors.sohu.com/fedora-epel/6/x86_64/

搜索epel-release

如作者的64,下载扩展先:

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86
_64/epel-release-6-8.noarch.rpm

完成后#yum update 更新下
在中间会有个提示更新其他的咨询是否下载,按N,否则系统就会全部进行更新下载。

然后查看#yum repolist

[root@qingxinzui]# yum repolist

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.ndchost.com
* epel: mirrors.solfo.com
* extras: mirror-centos.hostingswift.com
* updates: mirror.hmc.edu
repo id       repo name                                            status
base          CentOS-6 – Base                                       6,367
epel          Extra Packages for Enterprise Linux 6 – x86_64       11,128
extras        CentOS-6 – Extras                                        15
updates       CentOS-6 – Updates                                    1,608
repolist: 19,118

说明已经有了.

接下来是安装:

# yum install php-mcrypt

提示:Is this ok [y/N]:

按y继续,会出现两次.

等安装完成后.

接下来是dom和gd扩展,这个比较简单.

# yum install php-xml

#yum install php-gd

#service httpd restart

 

通过清心醉

apache Order deny,allow和Order allow,deny小解

作者以前写了个外贸屏蔽国内IP及.htaccess文件限制访问的资料。

但还有个别朋友对我说表示不懂,现作者再进行进一步小解释,看看哪条是您需要的规则。

deny from里的为禁止,allow from为允许。所以需要添加条件,可自己逐一增加。

至于IP段的可以直接使用192.168.1/192.168。后面将会对IP段内的放行自己访问权限进行小讲。

#除192.168.1.101外全部可以通过。

order allow,deny

deny from 192.168.1.101

allow from all

______________________________

#只允许192.168.1.101通过

order deny,allow

allow from 192.168.1.101

deny from all

______________________________

#以下为禁止IP段,但allow from IP段内的部分IP及其他可以访问。

order deny,allow

allow from 192.168.1.101

allow from 192.168.1.102

allow from 192.168.1.103

deny from 192.168

#该方法允许了除1.101/1.102/1.103的其他192.168IP段内的IP一律禁止访问。特别是对于外贸商城所需要。上面的3个在禁止范围内又允许的IP,可以直接写一起,规则是:allow from 192.168.1.101 192.168.1.101 192.168.1.101

______________________________

以上屏蔽方法可以写在httpd.conf文件内。不过,如果一个VPS里有多个站点,那么比较麻烦。所以建议在各自的目录里写添加.htaccess文件来实现屏蔽效果。

至于IP段的屏蔽方式

Deny from 192.168.0.0/24

Deny from 192.168.1/16

等等,也是一种屏蔽IP段的方式,IP段是 CIDR 的形式。具体的后期写上。

 

通过清心醉

wordpress后台禁止他人访问

查看了最近几个月的记录,发现作者的wordpress后台经常有人来恶意及想暴破密码。

😐 为了安全起见,很多人会使用修改wp-admin后台的目录方法。

其实感觉还是不如使用起.htaccess文件实际(前提你的服务器得是linux)

以下为.htaccess文件参数

 

<Files .htaccess>

order allow,deny

deny from all

</Files>

<Limit GET HEAD POST>

order deny,allow

allow from 202.96

deny from all

</Limit>

首先对.htaccess进行权限设置,然后只开放作者所在地区的IP段进行放行。

对于租赁的FTP空间,因为没有使用SSH的权利,FTP访问下不知道能否查看到.htaccess文件的存在。(反正我用Secure Shell Client是查看不到,只能使用WinSCP,或者直接使用vi编译。) 如果不行,咨询客服设置下,虽然很麻烦,但也是为了安全。

通过清心醉

Not All About The Money-Timati

Not All About The Money-Timati

 

通过清心醉

configuration error: couldn’t perform authentication. AuthType not set!

今天新做了个APACHE环境,用于存放其他的站点数据.

结果发现,虚拟站点无法登陆,提示500错误.

查看了下error_log文件

configuration error:  couldn’t perform authentication. AuthType not set!

好像是权限被锁在主目录还是咋的,具体不太清楚.

修改httpd.conf文件

找到:<Directory />

</Directory>前面加上一句:Satisfy Any

变成:

<Directory />
Options FollowSymLinks
AllowOverride ALL
Satisfy Any
</Directory>

然后重启下即可。

 

通过清心醉

apache access_log日志文件按天分割,更好的记录访问者

默认的access_log文件一般在apache/logs目录下

本来也没去管的,服务器昨天给人攻击了,因此查看后发现

文件太大了 整整1GB了.

access_log文件记录了所有访问的信息,更具体的可以直接GOOGLE搜索.

修改httpd.conf文件

修改ErrorLog和CustomLog的方法:

ErrorLog “|rotatelogs logs/%Y_%m_%d_error_log 86400 480”

CustomLog “|rotatelogs logs/%Y_%m_%d_access_log 86400 480” common

如果是集成的APACHE+PHP,使用绝对目录的形式.rotatelogs使用绝对目录的形式.一般在于/LANP/bin目录(LANP为你安装集成的目录,而日志文件一般在 /LANP/LOGS目录下)

/var/log/httpd/access_log是Apache服务器的访问日志文件

/var/log/httpd/error_log是Apache服务器的错误日志文件

因为上面的修改,日志会以每天(即86400)自动生成年月日+文件名,至于480得看服务器的时区.

 

 

通过清心醉

magento整合google base

magento在1.7版本过后就已经不在支持google base的同步了.

当然,事在人为嘛,magento插件平台已经有了google base的插件了.

Magento_GoogleShopping-1.7.0.0

有需要的朋友可以直接下载上传

至于使用,在后台->分类->搜索内容里可以设置.

通过清心醉

magento整合Ebay和亚马逊以及独立安装插件方法

最近在纠结一个插件,magento整合ebay,安装的时候老是打开文件出错,怀疑是文件目录过长或者?

在本地安装了个环境,把插件下载好。

magento-ebay-亚马逊

然后上传到服务器

#小提示,可以解压,然后重新压缩到服务器的MAGENTO根目录同名,接着上传后快速解压,覆盖掉,作者在网吧上传,居然要1小时。

传好后,接下来就是和其他插件独立安装相同了。

/include/config.php

最后两行的#取消掉,打开编译模式。

SSH执行:

cd shell  #是网站根目录的shell目录

接着执行:

php -f compiler.php compile

前几篇文章已经说了,这是编译的命令。

等提示:

Compilation successfully finished

在把/include/config.php文件后面的2个#写上 注释掉

#当然你也可以使用命令来操作,因为怕自己搞错,所以还是宁愿修改文件来达到效果。

接着就是进入后台,刷新下缓存就可以了。

然后可以去编译那看看,其实编译的数量已经增加了的。

注:

如果安装的插件,用magento自带的安装提示PHP版本错误等,那就没用了,二次开发吧。

通过清心醉

linux安装及配置vsftpd

[root@qingxinzui ~]# rpm -qa |grep vsftpd
[root@qingxinzui ~]#
#表示没有安装,使用yum -y install vsftpd来安装

[root@qingxinzui ~]#service vsftpd start

为 vsftpd 启动 vsftpd:                                    [确定]

#启动成功,测试下.

#别忘记了加入防火墙:

[root@qingxinzui ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp –dport 21 -j ACCEPT

#建立用户文本文件:

[root@qingxinzui ~]# touch /etc/vsftpd/vsftpd_users.txt

#编译用户文本文件:
[root@qingxinzui ~]# vi /etc/vsftpd/vsftpd_users.txt
user1
userpassword1
user2
userpassword2
user3
userpassword3

#使用db_load命令生成数据库

[root@qingxinzui ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_users.txt /etc/vsftpd/vsftpd_users.db

#修改用户权限为600

[root@qingxinzui ~]# chmod 600 /etc/vsftpd/vsftpd_users.db

#接着是配置PAM

#为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。

#编辑/etc/pam.d/vsftpd文件,增加最后两句,前面的全部注释掉

[root@qingxinzui ~]# vi /etc/pam.d/vsftpd
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
auth        required    /lib/security/pam_userdb.so    db=/etc/vsftpd/vsftpd_users
account     required    /lib/security/pam_userdb.so    db=/etc/vsftpd/vsftpd_users

#然后创建个日志文件:

[root@qingxinzui ~]# touch /var/log/vsftpd.log

#创建个chroot_list文件,并用FTP宿主用户输入进去

[root@qingxinzui ~]# touch /etc/vsftpd/chroot_list
[root@qingxinzui ~]# echo ftpuser >> /etc/vsftpd/chroot_list

 

#接着修改/etc/vsftpd/vsftpd.conf文件:

#大部分网上可以找,不过以下几个需要自己添加:

guest_enable=YES #开启虚拟用户功能
guest_username=ftpusers #虚拟用户的宿主用户,需要存在.
user_config_dir=/etc/vsftpd/ftpusers_conf #虚拟用户的存放路径 根据自己的需求设置

#这也许会奇怪,上面不是创建了3个FTP吗?不急.下面开始写入第一个用户的配置

#user1就是上面创建的用户名

[root@qingxinzui ~]# vi /etc/vsftpd/ftpusers_conf/user1
local_root=/var/html/ftp1   #ftpuser1的主目录
write_enable=YES  #可写
anon_umask=022
anon_world_readable_only=ON
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enabl=YES

#因为是可写,别忘记给个777权限哦.

[root@qingxinzui ~]# reboot

完成之后别忘记删了

/etc/vsftpd/vsftpd_users.txt的文件哦 不安全.

 

 

 

通过清心醉

magento-wordpress插件取消RSS及作者联系等外链

测试了好几次,崩站了N次

结果只需要修改插件下的一处代码

Fishpig\Wordpress\Block

if (!$this->getTemplate()) {
$this->setTemplate(‘wordpress/sidebar.phtml’);
}

把这几行注释掉,不使用这个模板就可以了 在91-93行

通过清心醉

PHP获取MYSQL数据表数据实例

//接上文,上文说了PHP把数据写入表内,但如果要获取表内的数据操作又要如何呢?

//清心在这写了个简单的实例代码,希望可以帮助正在自学PHP+MYSQL的朋友们(作者就是自学的其中一员.)

<?php
$servername=”localhost”; //数据库地址.一般不改
$username=”root”; //数据库用户
$password=” “; //数据库密码
$con=mysql_connect($servername,$username,$password); //连接SQL的$con变量
$sqldb=” “;//数据库名称
mysql_select_db($sqldb,$con);//$con连接数据库,选择$sqldb数据名
$q=”SELECT *FROM jiekuanren”; //SQL语句,查询表名
mysql_query(“set names GB2312”); //SQL的编码格式GB2312,可依据自己SQL和PHP\HTML的格式来修改
$rs=mysql_query($q,$con);//执行$con连接SQL,再执行$q的SQL语句来获取数据
if(!$rs){die(“error”);} //如果执行上一句语句出错,输出error
echo “<table>”; //输出表格开始,如果有div样式,可在里面添加,这就是php内嵌html的好处.
echo “<tr><td>列表1</td><td>列表2</td><td>列表3</td><td>列表4</td><td>列表5</td></tr>”;
//输出表格,5列
while($row=mysql_fetch_row($rs))
//循环输出数组$ros[x];循环执行$rs,即$con连接数据及$q的SQL语句里的表段. $ros[x]为表里的1-5列
{
echo “<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td><td>$row[4]</td></tr>”;
//循环输出5列,因为前面说了是循环执行$rs,所以$ros[x],就是jiekuanren这表段的5列数据
}
echo “</table>”; //输出表格结束
mysql_free_result($rs); //关闭数据采集.

mysql_close($con); //关闭MYSQL
?>

通过清心醉

php连接mysql创建表并写入数据

//前几篇说了下连接PHP连接MYSQL并创建数据库的代码实例,今天来写下连接数据并且创建成功后,添加表段并且添加默认数据.

$hostname=”localhost”;
$tempsqluser=$_POST[“sqluser”];
$tempsqlpassword=$_POST[“sqlpassword”];
$con = mysql_connect($hostname,$tempsqluser,$tempsqlpassword);
//如果数据库密码为本NULL,则把上面的$tempsqlpassword改成””即可
//暂时不做NULL进行判断
/********************数据库连接开始********************/
if(!$con)
{
die(‘无法连接: ‘ .mysql_error());
exit;
}
else
{
echo “连接数据库成功”; echo “</br>”;
/********************数据库连接结束********************/
/********************数据库创建开始********************/
$tempsqlname=$_POST[“sqlname”]; //获取数据名
$tempsqlnameo=$tempsqlname;//用于判断是否已存在
$query=”CREATE DATABASE $tempsqlname”; //SQL命令CREATE DATABASE+数据名
$result=mysql_query($query); //实行mysql_query返回结果集中一个字段的值
if(!mysql_select_db($tempsqlnameo,$con)) //判断数据名是否存在
{ //操作方法,该if判断出错
echo “数据库 $tempsqlnameo 已存在”;
echo “</br>”;
echo “<a href=’install.php’>返回</a>”;
exit;
}
else
{
mysql_query(“SET NAMES ‘gb2312′”); //乱码解决
mysql_select_db($tempsqlname,$con)or die($couldNotOpenDatabase);
//连接并创建数据库
echo “创建数据库 $tempsqlname 成功”;echo “</br>”;
/********************数据库创建结束********************/
/********************数据表创建开始********************/
echo “开始创建数据表”;echo “</br>”;
mysql_query(“SET NAMES ‘gb2312′”); //乱码解决
mysql_select_db($tempsqlname,$con); //选择数据库
$sql1 = “CREATE TABLE jiekuanren
(idnumber int(11),
jiekuanren varchar(64),
jiechubenjin int(11),
shouhuibenjin int(11),
lixi int(11)
)”;
//创建表 表段为:编号,借款人,借出本金,收回本金,收到利息
mysql_query($sql1,$con);
echo “创建数据表 $sql1 成功</br>”;
echo “开始为表写入初始化数据</br>”;
mysql_query(“SET NAMES ‘gb2312′”); //乱码解决
mysql_query(“INSERT INTO jiekuanren(idnumber,jiekuanren,jiechubenjin,shouhuibenjin,lixi)VALUES(‘0′,’默认借款人’,’0′,’0′,’0′)”);
/********************数据表创建结束********************/
mysql_close($con);echo “关闭MySql连接</br>”;
}
}

通过清心醉

修复:mount: wrong fs type, bad option, bad superblock on

mount: wrong fs type, bad option, bad superblock on /dev/sdb1,

missing codepage or helper program, or other error

In some cases useful info is found in syslog – try

作者昨天给客户的VPS配置第二硬盘配置的时候,提示了该错误.

很明显的超级块的损坏问题,作者使用了好几个修复命令,都是无法成功,难道就这么告诉客户说VPS第二硬盘有问题?其实不然。

首先看看第二硬盘的分区情况:

Device Boot Start End Blocks Id System
/dev/sdb1 1 6527 52428096 5 Extended

很明显是有成功分区,就是没挂载成功。(当然不排除分区错误)

这时候,只要在第二硬盘扩展分区创建逻辑分区,就可以了。

##忽略系统显示

#fdisk /dev/sdb

#m

#p

#l

(选择logical (5 or over))  这是英文l不是数字1;

#p

这时候系统会提示:

Device Boot Start End Blocks Id System
/dev/sdb1 1 6527 52428096 5 Extended
/dev/sdb5 1 6527 52428064+ 83 Linux

注意没有? /dev/sdb5 这个就是逻辑分区

这时候按w,保存

这时候再看fdisk -l

就可以看到了。

然后我们要挂载的,为/dev/sdb5.

 

#有时候不知道咋的,/dev/sdb和/dev/sda互调了

先后好象被换了

不过重启下基本就可以了。

具体的问题没去研究。

等确定了是/dev/sdb5还是被替换成/dev/sda5之后(建议重启)

加入/etc/fstab自动启动

/dev/sdb5               /var/www              ext3    defaults        0 0。

建议使用vi命令或者将该文件下载后用EditPlus打开,避免编码错误。

或者可以通过以下命令写入:

echo “/dev/sdb5  /var/www  ext3 defaults 0 0” >> /etc/fstab

通过清心醉

xampp关闭/开启 FTP服务及修改FTP目录

最近给朋友快速配置了个 zencart服务环境,因为要求不高,所以使用了LINUX版的XAMPP.简单修改了下apache和php配置,做个简单的购物网站还是够了.

由于使用xampp的安全考虑,FTP是一个很大的疑问,开启?或者不开启?

其实吧,在作者看来,默认还是关闭的好,否则FTP被猜解暴破是很麻烦的.(别说什么SSH给人破解,SSH的安全度和FTP比起来FTP简直就差远了)

然后提供一下SSH命令方法:

#cd /opt/lampp

开启: :  #./lampp startftp

关闭::  #./lampp stopftp

 

至于FTP目录位置的修改

/opt/lampp/etc/

proftpd.conf 里

<Directory /opt/lampp/proftpd/*>
AllowOverwrite on
</Directory>

# only for the web servers content
DefaultRoot /opt/lampp/proftpd

 

修改之后别忘记 ./lampp startftp

通过清心醉

magento换主题,删除主题,同类型主题替换

magento换主题是很简单的,一般都是上传到服务器上的根目录即可。

然后在后台-》系统-》配置-》设计里的包囊和主题里写上即可。

包囊的位置一般是:app/design/forntend/包囊

而主题的位置一般位于 :app/design/forntend/default/主题

我们网上下载的magento主题,要区分修改的地方,一般直接看下APP的目录就可以了。

接着就是以标题为主,如果遇到的是同类型的主题,会在app/etc/modules里重复。

作者测试超过50个的magento主题,发现大部分的模板,都是属于同一类型,只是修改了不同的CSS+JS,如果一来,替换主题就会遇见问题,设置出错,系统崩溃等问题。

以作者为例,今天复制了一个站点的所有数据,要替换一个主题,因为直接覆盖容易出错,又不可能大部分的文件都一一去审核,于是删除了当前主题的所以目录,包括modules模板(这个千万不能乱删啊,如果你有老主题的modules,可以参考着来删除,或者查看当前主题的模板有哪些,一一找出文件名来删除),等删除了重新上传新主题。

传好后提示Mage.php错误。完了 rm -rf var命令也使上了,还是提示错误,根据错误的代码,查看了下:

public static function getResourceHelper($moduleName)
{
$registryKey = ‘_resource_helper/’ . $moduleName;
if (!self::registry($registryKey)) {
$helperClass = self::getConfig()->getResourceHelper($moduleName);
self::register($registryKey, $helperClass);
}

return self::registry($registryKey);

}

这就是乱删模板的代价 报错了,模板名称的问题。具体不太懂

 

好吧,说下删除、替换新类型的主题之后的自救方法:使用编译过程重新编译。因为作者后台已经设置了网站的的包和主题,如果在删除旧主题不设置,默认是会使用default,但因为主题核心代码编译过的问题,一样会给你报错。

SSH指令:

cd shell # 进入shell目录

php -f compiler.php compile #执行编译

#如果不知道编译模式是否已经打开

可以用: php -f compiler.php state

然后看看输出的Compier Status:是为Enabled还是Disabled

 

以上是网上转过来的关闭和开启的编译指令:

  1. $php -f compiler.php disable
  2. Compiler include path disabled
  3. $php -f compiler.php state
  4. Compiler Status: Disabled
  5. Compilation State: Compiled
  6. Collected Files Count: 6000
  7. Compiled Scopes Count: 4
  8. $php -f compiler.php enable
  9. Compiler include path enabled
  10. $php -f compiler.php state
  11. Compiler Status: Enabled
  12. Compilation State: Compiled
  13. Collected Files Count: 6000
  14. Compiled Scopes Count: 4

还有一个就是修改includes/config.php文件

#define(‘COMPILER_INCLUDE_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR.’src’);
#define(‘COMPILER_COLLECT_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR.’stat’);

 

把这两行前面的#去掉即可打开编译。

通过清心醉

PHP 使用变量连接mysql实例

今天自己写了下PHP连接MYSQL实例.

由于通过form表单来传递参数给PHP变量处理.

POST获取的参数,经常会因为字符的使用而出错.

所以作者定义临时变量来接收form表单的数据.

//首先是表单

<form method=”post” action=”installsql.php”>
</br></br></br></br></br>
<table align=”center”>
<td>数据库用户:</td>
<td><input name=”sqluser” type=”sqluser” size=”30″ maxlength=”500″></td>
</tr>
</tr>
<td>数据库密码:</td>
<td><input name=”sqlpassword” type=”sqlpassword” size=”30″ maxlength=”500″></td>
</tr>
</tr>
<td>数据库名称:</td>
<td><input name=”sqlname” type=”sqlname” size=”30″ maxlength=”500″></td>
</tr>
</table>
<div align=”center”><input type=”submit” value=”提交并创建数据”></div>
</form>

//然后是PHP的处理

<?php

$hostname=”localhost”;
$tempsqluser=$_POST[“sqluser”];
$tempsqlpassword=$_POST[“sqlpassword”];
$con = mysql_connect($hostname,$tempsqluser,$tempsqlpassword);
//如果数据库密码为本NULL,则把上面的$tempsqlpassword改成””即可
//暂时不做NULL进行判断

if(!$con)
{
die(‘无法连接: ‘ . mysql_error());
}
echo “连接数据库成功”; echo “</br>”;
$tempsqlname=$_POST[“sqlname”]; //获取数据名
if(mysql_select_db($tempsqlname,$con)) //判断数据名是否存在
{
//操作方法
echo “数据库 $tempsqlname 已存在”;
echo “</br>”;
echo “<a href=’install.php’>返回</a>”;
}

else
{
$query=”CREATE DATABASE $tempsqlname”; //CREATE DATABASE命令+数据名
$result=mysql_query($query); //实行mysql_query返回结果集中一个字段的值
mysql_select_db($tempsqlname,$con)or die($couldNotOpenDatabase);//创建数据库成功并连接
echo “创建数据库 $tempsqlname 成功”;echo “</br>”;

mysql_close($con);echo “关闭MySql连接</br>”;

}

/*

一般来说,使用mysql_select_db($tempsqlname,$con)or die($couldNotOpenDatabase);就可以正常的连接创建,可是,系统不知道你是要创建数据库,所以,使用$query=”CREATE DATABASE $tempsqlname”; $result=mysql_query($query); 来对字符进行处理吧.

如果$tempsqlname的值为”base”,就是要告诉MYSQL创建一个名为base的数据库.

如果不使用

$query=”CREATE DATABASE $tempsqlname”; $result=mysql_query($query);

那么可以在创建的列表里写成:

mysql_select_db(“CREATE DATABASE $tempsqlname”,$con)or die($couldNotOpenDatabase);

 

*/

?>

通过清心醉

PHP小程序-帐号登陆验证

//首先是index.php

<?php
require_once(“judge.php”);
//把帐户验证包含进来.
//通过以上的OK.php文件,把接受到的参数传递过去判断.
?>
<html>
<title>管理</title>
<frameset rows=”66,*” cols=”*” frameborder=”no” border=”0″ framespacing=”0″>
<frame src=”top.php” name=”topFrame” scrolling=”No” noresize=”noresize” title=”topFrame” />
<frameset rows=”*” cols=”210,*” framespacing=”0″ frameborder=”no” border=”0″>
<frame src=”left.php” name=”leftFrame” title=”leftFrame” />
<frame src=”main.php” name=”mainFrame” title=”mainFrame” />
</frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>

 

//接下来是判断文件OK.php

<?php
//身份验证文件
$username=”admin”;
$userpassword=”admin888″;
ini_set(“display_errors”,1); //显示错误
header(“Cache-Control: no-cache, must-revalidate”); //禁止缓存
header(“Pragma: no-cache”); //禁止缓存
date_default_timezone_set(“PRC”); //时差
session_start();
if((isset($_POST[“user”]) && !empty($_POST[“user”]) && $username==$_POST[“user”])&&(isset($_POST[“password”]) && !empty($_POST[“password”]) && $userpassword==$_POST[“password”]))
{
$_SESSION[“user”]=$_POST[“user”];
$_SESSION[“password”]=$_POST[“password”];
}
else
{
header(“location:login.php”);
exit;
//因为index.php包含了这文件,所以$_SESSION没有用户资料的时候直接跳转到login.php
}
?>

//然后是login.php

<html>
<title>管理员登陆</title>
<body>
<form method=”post” action=”index.php”>
<table width=”400″ align=”center”>
<tr>
<td>管理员帐号:</td>
<td><input name=”user” type=”user” size=”30″ maxlength=”500″></td>
</tr>
<tr>
<td>管理员密码:</td>
<td><input name=”password” type=”password” size=”30″ maxlength=”500″></td>
</tr>
</table>
<div align=”center”><input type=”submit” value=”登陆”></div>
<?php
//用户输入之后,返回到index.php
?>
</form>
</body>
</html>

&amp;lt;br /&amp;gt;