大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天有一个朋友问我thinkphp的这个问题,刚好百度搜索到你这个问题。已经解决。就帮你解答一下这个问题。
治多网站建设公司创新互联,治多网站设计制作,有大型网站制作公司丰富经验。已为治多上千提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的治多做网站的公司定做!
首先我尝试在入口文件封装一个加密函数,我用php des 加密,然后在配置文件config.php调用。然后在控制器里面使用,打印配置文件:dump(C());//输出所有的配置文件信息, 虽然能看到正确的数据用户名和密码,但是会报错。失败告终。
我说一下我的解决方法。很简单。
1:把配置文件里面的用户名,密码,数据库名瞎写一写,别人看到你的代码的配置文件看到的就是错误的数据库名和密码了。比如:
'DB_NAME' = 'SB', // 数据库名
'DB_USER' = 'ni_da_ye', // 用户名
'DB_PWD' = 'da_da_bi', // 密码
在每个控制器文件里面。加入一段代码。
比如你的IndexController.class.php文件。加下面的代码。
/* 初始化方法*/
public function __construct(){
parent::__construct();
C("DB_NAME",decrypt('712349721937491237'));//数据库名,
C('DB_USER',decrypt('712349721937491237'));//用户名
C('DB_PWD',decrypt('712349721937491237'));//密码
}
看清楚了吗?
decrypt()这个函数就是我封装的一个加密函数,亲自测试没有错误。可能会牺牲一些性能。但是保证了用户名,密码,数据库名没有泄露。甚至你都可以把数据库连接地址也加密一下。希望能帮到你。
PHP加密函数可以考虑用des,aes这些可逆加密。别用什么md4,md5.
mysql_query($db);
这是要干什么啊?把这句去掉;
$sql="select *from user where name=$username and password=$pws;"
改成
$sql="select * from user where name='".$username."' and password='".$pws."'";
1.*号后边应该有空格;
2.最后的分号应该在引号外边;
3.查询语句中的字符串应该加引号;
试试看
另外提两点建议:
1 $db=mysql_select_db("B");
写成 $db=mysql_select_db("B",$link);
养成个好习惯,省得到用到多个数据库时容易乱;
2.$_SESSION["name"]="2";//先将值定义为假//
定义为假的时候直接 $_SESSION["name"]="" 就好了,要不多乱啊。
3. if($row==1)
{
$_SESSION["name"]="1";
}
else $_SESSION["name"]="2";
前边已经定义完 $_SESSION["name"]="2 了 后边这个 else 就没有必要写了啊。
你应该先定位是哪里错了啊,在每个数据库操作语句后边都加上, or die(mysql_error());
根据错误提示看看错误出在哪,看不懂的话把错误提示语句一起发上来,效率会更高 呵呵。
你应该先看看执行的是那条语句,然后看看执行这条语句的条件,这样往前推,你的错误也有可能在登录页面上,仔细找找多看几遍代码你一定能找到的。
不需要加密,也无法加密。可以这么说,如果数据库和程序是在同一服务器,及数据库的地址是localhost,那么无需加密,因为加密了数据库并不能自己解密,而且只要网站或者服务器不被攻下,没有加密的必要。
数据库和php程序在不同的服务器,就是说你在操作数据库的时候需要远程操作,这样的话需要传输数据库账号密码,可以在本地加密后传输,然后在数据库服务器进行解密后,用原始的账号密码去操作数据库。
--------------------------------------------------------一般来说,如果你担心服务器被攻下,那么你加密数据库账号密码是多余的,因为人家下载你的源码一看就知道鸟。