昨天有一朋友说自己的phpmyadmin不能登录并且无任何提示了,问我怎么解决,下面我来分享一下关于phpmyadmin不能登录问题总结.
phpmyadmin不能登录没有提示
解决方法:
1.在php的目录建立个文件夹tmp(如C:/php/tmp),设置tmp属性为ervery one完全控制
2.在php.ini找到session.save_path 这一行,设成session.save_path = “C:/php/tmp”,并把前面的分号去掉
以上的C:/php/tmp根据你实际情况设定
3.重启IIS服务。
终极解决方法
导致上述问题和一些与php程序相关的错误(如:xcache缓存功能不生效;php不保存session),根源在于,没有给php设
置temp目录!
1.在 c:windows下建立 temp 文件夹(用户存放php的文件),并设置相应的读写NTFS权限,确保php能正常访问此
目录
2.重启IIS.
简单带上phpMyAdmin登陆超时(1440秒未活动)解决办法
在phpMyAdmin所在目录找到 / libraries / config.default.php 文件,打开,修改
$cfg['LoginCookieValidity'] = 1440; 将1440修改成更大的值即可解决“现象一”
如果修改:$cfg['LoginCookieValidity']的值小于或等于php.ini里的session.gc_maxlifetime的值,即可解决”现
象二“
总结:最前讲述的是iis+php下重启iis,如果是apache我们重启apache即可了。
在php中我们有大量的可对文件与目录操作的函数,下面我来总结一下这些函数的用法,有需要学习的朋友可参考参考。
mkdir();函数
php创建文件夹和文件
///创建文件夹
代码如下 |
复制代码 |
function createdir($dir)
{
if(file_exists($dir) && is_dir($dir)){//如果存在这个文件并且这个文件是个目录就不动作
}
else{
mkdir($dir,0777);//否则就创造这个目录
}
} |
file_exists();函数
file_exists -- 检查文件或目录是否存在
代码如下 |
复制代码 |
<?php
$filename = '/path/to/foo.txt';
if (file_exists($filename)) {
print "The file $filename exists";
} else {
print "The file $filename does not exist";
}
?>
|
is_dir();函数
is_dir();测试文件是否为目录。
为目录就返回true,不就返回false
is_file();
Is_File('目标文件路径和文件名')
为文件返回"True",不为文件返回"False"。
is_link();
文件系统函数库
is_link();测试文件是否为链接文件。
true 值则表示指定的 filename 存在并为符号链接文件.
rmdir 命令
功能:删除空目录
rmdir [选项] dirname
- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因
保留部分路径,则系统在标准输出上显示相应的信息。
要清空并除去目录,请输入:
rm mydir/* mydir/.*
rmdir mydir
该命令除去 mydir 文件中的内容接着除去空目录。rm 命令显示一条关于尝试除去目录 .(点)和.. (点,点)的错
误消息,然后 rmdir 命令除去它们。
建立一个文件名字为aa.txt
代码如下 |
复制代码 |
$fp=fopen('aa.txt', 'w+'); //建立一新文件
chmod('aa.txt', 0777); //设定权限,不然的话建立后无法修改,删除 //好象这行不用也可以
fwrite($fp, '要写入的内容'); //写内容
fclose($fp); //关闭文件
|
unlink()函数
功能:删除文件
unlink($filename)删除文件名为$filename的文件
删除指定目录下的所有文件
代码如下 |
复制代码 |
function dir_clear($dir) {
$directory = dir($dir); //创建一个dir类(Php手册上这么说的),用来读取目录中的每一个文
件
while($entry = $directory->read()) { //循环每一个文件,并取得文件名$entry
$filename = $dir.'/'.$entry; //取得完整的文件名,带路径的
if(is_file($filename)) { //如果是文件,则执行删除操作
@unlink($filename);
}
}
$directory->close(); //关闭读取目录文件的类
result();
}
|
列出目录中包括子目录的所有文件程序
代码如下 |
复制代码 |
<?php
/*
* PHP 读取目录下及其子目下的文件函数
* */
$files=getFile("images");//调用函数
foreach ($files as $name){
echo "$name"."<br>";
}
function getFile($dir){
$files=array();
if (is_file($dir)){//如果指定路径为文件直接返回
return $dir;
}
$hande=opendir($dir);
if ($hande){
while (false!==($ufile=readdir($hande))){//如果读取目录成功
if ($ufile!="." && $ufile!=".."){
$filename=$dir."/".$ufile;
if (is_file($filename)){
$files[]=$filename;
}else{
$files=array_merge($files,getFile($filename));
}
}
}//end While
closedir($hande);
}//end if
return $files;
}
?>
|
删除指定目录下的所有文件以及所有文件夹以及本身***强烈推荐这种方法!!!
代码如下 |
复制代码 |
function rmdir_tree($dirname)//定义一个函数rmdir_tree,要删除的文件名为$dirname
{
$handle=opendir($dirname);//打开名为$dirname的文件夹
while ($file=readdir($handle)) //跑回圈读取打开的文件夹
{
if (($file==".") || ($file=="..")) continue;//继续跑的条件,如果不满足就不跑了
$fullname=$dirname."/".$file;//完整的文件名(包括路径)
if (filetype($fullname)=="dir")
rmdir_tree($fullname);//调用刚刚定义的函数,实现递归
else
unlink($fullname);//删除文件
}
closedir($handle);//关闭打开了的文件夹
rmdir($dirname);//删除自身(文件夹)
} |
本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。
代码如下 |
复制代码 |
<?php
$discuz_url = ‘http://localhost/klive/root/Discuz_X2.5_SC_GBK/’;//论坛地址
$login_url = $discuz_url .’member.php?mod=logging&action=login’;//登录页地址
$post_fields = array();
//以下两项不需要修改
$post_fields['loginfield'] = ‘username’;
$post_fields['loginsubmit'] = ‘true’;
//用户名和密码,必须填写
$post_fields['username'] = ‘admin’;
$post_fields['password'] = ‘admin’;
//安全提问
$post_fields['questionid'] = 0;
$post_fields['answer'] = ”;
//@todo验证码
$post_fields['seccodeverify'] = ”;
//获取表单FORMHASH
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
preg_match(‘/<inputs*type=”hidden”s*name=”formhash”s*value=”(.*?)”s*/>/i’, $contents,
$matches);
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die(‘Not found the forumhash.’);
}
//POST数据,获取COOKIE,cookie文件放在网站的temp目录下
$cookie_file = tempnam(‘./temp’,'cookie’);
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);
//取到了关键的cookie文件就可以带着cookie文件去模拟发帖,fid为论坛的栏目ID
$send_url = $discuz_url.”forum.php?mod=post&action=newthread&fid=2″;
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);
//这里的hash码和登陆窗口的hash码的正则不太一样,这里的hidden多了一个id属性
preg_match(‘/<inputs*type=”hidden”s*name=”formhash”s*id=”formhash”s*value=”(.*?)”s*/>/i
’, $contents, $matches);
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die(‘Not found the forumhash.’);
}
$post_data = array();
//帖子标题
$post_data['subject'] = ‘test2′;
//帖子内容
$post_data['message'] = ‘test2′;
$post_data['topicsubmit'] = “yes”;
$post_data['extra'] = ”;
//帖子标签
$post_data['tags'] = ‘test’;
//帖子的hash码,这个非常关键!假如缺少这个hash码,discuz会警告你来路的页面不正确
$post_data['formhash']=$formhash;
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_REFERER, $send_url); //伪装REFERER
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$contents = curl_exec($ch);
curl_close($ch);
//清理cookie文件
unlink($cookie_file);
?>
|
使用商城的朋友可能会经常碰到关于利用ecshop来实现一些活动的需求,把电影票设置为免运费。但是事实情况却事与愿违,消费者购买订单超过100元并添加免运费的赠品后,订单反而又要收取邮费
flow.php
代码如下 |
复制代码 |
/* 添加赠品到购物车 */
foreach ($favourable['gift'] as $gift)
{
if (in_array($gift['id'], $_POST['gift']))
{
add_gift_to_cart($act_id, $gift['id'], $gift['price']);
}
}
|
出问题的地方正是函数“add_gift_to_cart”,找到函数的定义,仍在在flow.php文件,
我把该函数修改后的源码贴出来,大家对照一下就明白了:
代码如下 |
复制代码 |
function add_gift_to_cart($act_id, $id, $price)
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('cart') . " (" .
"user_id, session_id, goods_id, goods_sn, goods_name, market_price, goods_price, ".
"goods_number, is_real, extension_code, parent_id, is_gift, rec_type, is_shipping ) ".
"SELECT '$_SESSION[user_id]', '" . SESS_ID . "', goods_id, goods_sn, goods_name,
market_price, ".
"'$price', 1, is_real, extension_code, 0, '$act_id', '" . CART_GENERAL_GOODS . "' ,
is_shipping " .
"FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id = '$id'";
$GLOBALS['db']->query($sql);
}
|
这样就很好的解决了Ecshop系统添加免运费赠品后,购物车变为收取运费的bug这个问题了。
如果利用php来判断就简单了,原理很简单:
识别是否是动画,要检查文件中是否包含chr(0×21).chr(0xff).chr(0x0b).’NETSCAPE2.0‘chr(0×21).chr(0xff)
是gif图片中扩展功能段的标头‘NETSCAPE2.0‘是扩展功能执行的程序名
代码如下。
代码如下 |
复制代码 |
<?php
function IsAnimatedGif($filename)
{
$fp = fopen($filename, 'rb');
$filecontent = fread($fp, filesize($filename));
fclose($fp);
return strpos($filecontent,chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') === FALSE?0:1;
}
echo IsAnimatedGif("test.gif");
?>
|
标签:[!--infotagslink--]