周继平 周继平
关注数: 9 粉丝数: 33 发帖数: 781 关注贴吧数: 24
wds无线桥接设置 不知道你用的什么是无线路由,但无论什么无线路由可能菜单等区别不同,但设置方法是相同的,下面以JCG JHR-N916R为例。可以参考进行设置 步骤/方法 1.主路由器设置: 首先,进入路由器管理界面—高级设置—无线网络—基本设置(记住该路由器的:无线频道、网络名称(SSID) 其次,无线网络—安全与加密(记住该路由器的:安全模式、加密算法、共享密钥(密码) 再次,无线网络—WDS设置(记住该路由器的:WDS模式—选择“自学习模式”) 最后,网络设置—局域网(记住该路由器的:IP地址、DHCP服务器类型),这样主路由器设置就完成了,如果主路由正常使用,不需改变设置,但要把上面用的参数记下来,留作备用 2.次路由器设置: 首先,进入路由器的管理界面—高级设置—无线网络—WDS设置—WDS模式(中继模式)--加密类型(必须与主路由器的加密算法一致)--密钥(填入主路由器的密码)--点击“开启扫描”(会搜索到主路由器的SSID和MAC地址等信息)--填入主路由器的BSSID(MAC地址),设置完毕,点击“应用”。 其次,无线网络—基本设置(无线网络-选择“开启”、无线频道(选择与主路由器所在的同一频道) 最后,网络设置—局域网—局域网设置(IP地址选择与主路由器在同一网段, IP地址可以不同;如:主路由的IP地址为192.168.1.1,那么次路由的IP地址应该为192.168.1.(2—255) --DHCP设置—选择“禁用
DEDECMS防御垃圾用户注册 现在暴力营销之一就是利用软件进行群发邮件或群发文章。群发邮件我在这里就不讨论了。我主要说是如何防御群发文章 首先他要注册一个用户,一个个去注册当然不现实,所以现在有很多软件公司开发这种软件,就是搜索到你这个网站是采用DEDE架设的那,你的注册接口与发布文章的字段、链接都相同。你不要以为弄个验证码就可以,现在识别率都非常高了。所以根本防不住,所以你只能通过自己动手来进行。 首先你有系统设置中加入一个自定义字段,如cfg_md_reg,字段类型是文本,然后值为“http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.fzwhaa.com%2F&urlrefer=a78fae8d6491f4b514bc33523eda35a0” 这只进行了第一步,接下修改你注册的模板。 在member\templets中的reg-new.htm 同意协议 </li> <li><span> </span> <button class="buttonGreen142" id="btnSignCheck" type="submit">注 册</button> </li> </ul> <!--加入下面的代码--> <input name="md5xreg" type="hidden" id="md5xreg" value="<?php echo md5($cfg_md_reg);?>" /> <!--加入下面的代码--> </form> 加入红色的字段,当然md5xreg这个隐藏字段名你可以任意起。 然后在member文夹下 reg_new.php文件中 if(strtolower($vdcode)!=$svali || $svali=='') { ResetVdValue(); ShowMsg('验证码错误!', '-1'); exit(); } //加入防垃圾注册 if($_POST['md5xreg'] != md5($cfg_md_reg)){ ShowMsg("您提交信息有误,请与管理员联系。", '-1'); exit; } //加入防垃圾注册 加入红色的文字,提交注册信息时进行判断,因为机器注册时,他们是统一的表单,你现在多了一层判断,他就提交不成功了。 如果你的站真的很吃香,发现又有垃圾用户进来了,那你在后台把那个值改下,那他们又得手工更新他们的数据库了,如果每个站长都这样,那真要累死这些狗日的了。 我纯扔砖,希望有玉出现 还要这样: 一、来源判断方法: 方法1:具体方法是:在member 目录下面的文件里面加上来路的判断,代码为: //判断来路,防止垃圾注册 if(stristr($_SERVER['HTTP_REFERER'],"fzwhaa.com")){ } else { echo '<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> '; ShowMsg("对不起,您的来源有问题,如确认没问题请留言联系我们!", "index.php"); exit(); } member目录里每个文件包含config.php等文件,这样我们就可以把以上代码放进(一串 require_once。。。)之后 这段代码的意思是判断访问来路是不是来自于自已的网站,如果是,就按原来的程序执行正常的注册,或登陆,如果不是,则返回member主页。 方法2:编写下自己的问题,在发表时判断,这个以后台设置方法重复,我先不写,看下dede自带的效果 二、后台设置方法 i、登入后台》系统》验证安全设置》按需要启用各种设置 ii、登入后台》系统》互动设置》按需要启用各种设置
php __construct 构造函数用法 在PHP4的时候出现了构造函数,继而在PHP5内又添增了析构。这使得PHP更富有面向对象的魅力了。在PHP4时,构造函数用的是与类同名的函数来进行构造这个动作。例如: <?php/** myClass.php*/class myClass { function myClass { print "This is myClass\n"; }}//创建一个新的实例$obj = new myClass();?> 将以上代码保存为myClass.php,运行后,会打印出 This is myClass字样。这是php4的构造函数(当然,为了兼容,php5也可以这样写)。 在php5里,有了专门的构造和析构函数。__construct()和__destruct() 。再重新改写这个myClass.php。<?php/** myClass.php*/class myClass { function __construct() { print "constructor\n"; } function __destruct() { print "destroying\n"; }}//创建一个新的实例$obj = new myClass();?> 保存以后发现打印出了”constructor destroying”。说明构造和析构的确发生了。 目前为止,没有任何问题。在php5的手册里,对于使用__construct还有段说明。如下: 为了实现向后兼容性(指PHP 4),如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。 再来看一种情况,当一个派生类继承了基类并且这两个类都存在构造和析构函数的时候会出现什么眼的状况呢? PHP 5对此的处理手段是: 隐藏基类的构造和析构! 测试代码:<?php/** myClass.php*/ class baseClass { function __construct() { print "baseClass:\n constructor "; } function __destruct() { print "baseClass:\n destroying "; }} class subClass extends baseClass { function __construct() { print "subClass:\n constructor "; } function __destruct() { print "subClass:\n destroying "; }} $obj = new subClass();?> 保存运行后,结果打印:subClass: constructor subClass: destroying 可以看到,基类的构造与析构并没有发生。 这不得不让人费解,为什么php5会采取这种的机制呢? C++的构造与析构的过程是:基类构造->派生类构造->派生类析构->基类析构。这才是成熟的机制。为什么PHP 5 会标新立异? 很显然,这种做法并不十分的明智。 继续翻看PHP手册,结果找到了这样的一种说法: PHP 4 不会从派生类的构造函数中自动调用基类的构造函数。恰当地逐次调用上一级的构造函数是用户的责任。 (PHP 4) 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。 (PHP 5)
剖析ECMALL的登录机制 ecmall 文件说明 在ecmall.php文件中实例化控制器类,每一个控制器类,必须继承(extends)upload\admin\app\frontend.base.php文件。在继承中调用方法是谁先被继承谁的方法被先调用。 以default为例,首先在公共入口文件index.php文件中包含eccore/ecmall.php文件,调用startup方法并把includes/global.lib.php,includes/libraries/time.lib.php,includes/ecapp.base.php,includes/plugin.base.php,app/backend.base.php,以数据方式传递。在ECMAall类中的startup()方法中包含了eccore/controller/app.base.php和eccore/model/model.base.php文件。 获得控制器默认为[upload\admin\app\default.app.php文件,并继承BackendApp(app/backend.base.php)类,并继承ECBaseApp(includes/ecapp.base.ph)类,并继承BaseApp(eccore/controller/app.base.php),并继承Object(eccore/ecmall.php)]。然后调用ECBaseApp中的do_action()方法在调用其实父类BaseApp中的do_action()并判断$act(index)方法在默认控制器中是否存在,如果存在并符合条件,调用本对像是最早继承文件(app/frontend.base.php)他中的_run_action()方法。 function _run_action() { if (!$this->visitor->has_login) { $this->login(); return; } if (!$this->visitor->i_can('do_action', $this->visitor->get('privs'))) { $this->show_warning('no_permission'); return; } parent::_run_action(); } 在此要判断当前用户是否登录。 如果没有登录,调用(app/backend.base.php)他中的login()方法。 function login() { if ($this->visitor->has_login) { $this->show_warning('has_login'); return; } if (!IS_POST) { if (Conf::get('captcha_status.backend')) { $this->assign('captcha', 1); } $this->display('login.html'); } else { if (Conf::get('captcha_status.backend') && base64_decode($_SESSION['captcha']) != strtolower($_POST['captcha'])) { $this->show_warning('captcha_faild'); return; } $user_name = trim($_POST['user_name']); $password = $_POST['password']; $ms =& ms(); $user_id = $ms->user->auth($user_name, $password); if (!$user_id) { $this->show_warning($ms->user->get_error()); return; } if (!$this->_do_login($user_id)) { return; } $this->show_message('login_successed', 'go_to_admin', 'index.php'); } } 然后调用includes/ecapp.base.php文件中的display()方法加载页面模板,在加载过程中需要给视图传递变量,调用eccore/controller/app.base.php中的assign()方法,在这个方法中还需要调用eccore/controller/app.base.php中的_init_view()方法,在这个过程中很重要因为他要引用返回eccore/ecmall.php文件中的& v()方法所引用的变量(引用eccore/view/template.php)文件,类似于加载,然后在eccore/controller/app.base.php中的assign()方法调用(eccore/view/template.php)文件assign()方法,以,键·值,形式赋值给_var数组中。 display()函数: function display($f) { if ($this->_hook('on_display', array('display_file' => & $f))) { return; } $this->assign('site_url', SITE_URL); $this->assign('ecmall_version', VERSION); $this->assign('random_number', rand()); $this->assign('lang', Lang::get()); $this->assign('visitor', isset($this->visitor) ? $this->visitor->info : array()); $this->assign('new_message', isset($this->visitor) ? $this->_get_new_message() : ''); $this->assign('charset', CHARSET); $this->assign('price_format', Conf::get('price_format')); $this->assign('async_sendmail', $this->_async_sendmail()); $this->_assign_query_info(); parent::display($f); if ($this->_hook('end_display', array('display_file' => & $f))) { return; } } assign()函数: function assign($k, $v = null) { $this->_init_view(); if (is_array($k)) { $args = func_get_args(); foreach ($args as $arg) //遍历参数 { foreach ($arg as $key => $value) //遍历数据并传给视图 { $this->_view->assign($key, $value); } } } else { $this->_view->assign($k, $v); } } _init_view()函数: function _init_view() { if ($this->_view === null) { $this->_view =& v(); $this->_config_view(); //配置 } } 在includes/ecapp.base.php文件中的display()中调用其父类eccore/controller/app.base.php中的display()方法,在display()方法中引用变量调用(eccore/view/template.php)文件中的display()方法,在display()方法中首先要判断当前的页面文件(upload\admin\templates)是否被修改如果有被修改重新缓存(upload\temp\compiled\admin),在模板缓存的时候首先要用strpos()方法判断编码头部(\xEF\xBB\xBF)是否出现过,如果出现在用我们最常用的str_replace()方法把其替换为空。 在页面提交中用到define('IS_POST', (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST'))来判断是否提交,因为在页面提交的时候,$_SERVER['REQUEST_METHOD']默认为GET。 在登录页面中用method="post"方法提交表单所以得到IS_POST定义值为TRUE,进入到执行SQL语句中,判断是否登录成功。 在这个过程中要引用includes/global.lib.php文件中的&ms()方法(此方法中包含/includes/passport.base.php,/includes/passports/' . MEMBER_TYPE . '.passport.php,MEMBER_TYPE在data/config.inc.php中定义默认为default),把变量值地址引用到/includes/passports/default.passport.php文件中DefaultPassport类,DefaultPassport(/includes/passports/default.passport.ph)继承了BasePassport(/includes/passport.base.php) function &ms() { static $ms = null; if ($ms === null) { include(ROOT_PATH . '/includes/passport.base.php'); include(ROOT_PATH . '/includes/passports/' . MEMBER_TYPE . '.passport.php'); $class_name = ucfirst(MEMBER_TYPE) . 'Passport'; $ms = new $class_name(); } return $ms; } 在这个过程中,把若干类实例化,所以调用auth(&username,&password)判断用户是不是存在正确,如果正确获得用户ID执行登陆操作调用_do_login方法,在这里我们的回到刚加载文件时候的初始化中因为在includes/ecapp.base.php文件初始化的时候执行了$this->_init_visitor();方法引用了AdminVisitor他类并继承了BaseVisitor类,所以可以在_do_login()方法中应用$this->visitor->assign()方法,其实就是BaseVisitor类中的 function assign($user_info) { $_SESSION[$this->_info_key] = $user_info; } 这样就把用户信息用SESSION保存,在执行操作的时候就可以对$this->has_login进行改变了。 好了这就是登录了。 其实他应用到"引用"和"继承"比较多所以会让初学者都感觉到很乱,没有头绪。引用就是不同的名字访问同一个变量内容,引用作为函数参数可以避免参数对象的额外拷贝。 如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 "&" 方式,然后用$var=null的方式清除.另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。 function qev(&$array) { Var_export($array); } $array_qev = array( '1'=>'a','2'=>'b' ) Qev($array_qev); 继承其实结果就是为增加代码的可重用性,也就是你定义一个方法如果他有一定的共性可以被多个新增加的效果所调用。 如果登录,在(app/backend.base.php)他文件_run_action()他方法中调其父类includes/ecapp.base.php文件中的_run_action()方法,在调用其父类eccore/controller/app.base.php他文件中的_run_action()方法,在此方法中调用自己所在的控制器(默认default)也就是(upload\admin\app\default.app.php)文件中的方法(默认index)index(); 这些只是一点程序走向结构,具体内容结构还没有研究。程序结构给人感觉似乎挺乱的,但是如果细心研究执行效果非常的好。
ecshop添加配送方式教程 ====操作步骤============= 步骤1.打开includes\modules\shipping文件夹,把sto_express.php复制多一份,重名为yd_express.php; 步骤2.打开yd_express.php,ctrl+F调出“查找替换框”将所有“sto_express”替换成“yd_express” ,所有“申通快递”替换成“韵达快递”;;(有图片在第二部修改) 步骤3.打开languages\zh_cn\shipping文件夹,把sto_express.php复制多一份,重命名为yd_express.php; 步骤4.再将打开我们重命名好的yd_express.php,ctrl+F调出“查找替换框”将所有“sto_express”替换成“yd_express” ,所有“申通快递”替换成“韵达快递”;;(说明:步骤3.4是创建中文语言包,如果需要创建英文和繁体的语言包,请自行打开languages\en_us\shipping和languages\zh_tw\shipping进行步骤3.4的操作) 还需再修改:第16行:$_LANG['sto_express'] = '申通快递'; 改为:$_LANG['yd_express'] = '韵达快递'; 步骤5.Includes/inc_c**tant.php第237行加上相应如“ |yd_express ” ==原程序为: /* 配送方式 */ define('SHIP_LIST', 'cac|city_express|ems|flat|fpd|post_express|post_mail|presswork|sf_express|sto_express|yto|zto'); ==修改后程序为: define('SHIP_LIST', 'cac|city_express|ems|flat|fpd|post_express|post_mail|presswork|sf_express|sto_express| yd_express|yto|zto'); 步骤6. admin\templates\shipping_area_info.ht第12行加上相应如“ || $shipping_area.shipping_code =='yd_express' ” ==原程序为: {if $shipping_area.shipping_code =='ems' || $shipping_area.shipping_code =='yto' || $shipping_area.shipping_code =='zto' || $shipping_area.shipping_code =='sto_express' || $shipping_area.shipping_code =='post_mail' || $shipping_area.shipping_code =='sf_express' || $shipping_area.shipping_code =='post_express' } ==修改后程序为: {if $shipping_area.shipping_code =='ems' || $shipping_area.shipping_code =='yto' || $shipping_area.shipping_code =='zto' || $shipping_area.shipping_code =='sto_express' || $shipping_area.shipping_code =='post_mail' || $shipping_area.shipping_code =='sf_express' || $shipping_area.shipping_code =='yd_express' ||$shipping_area.shipping_code =='post_express' } 步骤7. 进入后台更新网站缓存,完成插件添加。
ECSHOP 模板结构说明 名称 类型 备注(作用或意义) 文件(目录)名可否更改 images 目录 存放模板图片目录 不可更改 library 目录 存放模板库文件目录 不可更改 screenshot.png 图片 用于“后台管理 -> 模板管理 -> 模板选择”显示模板缩略图。 不可更改 style.css css样式表 不可更改 备注:模板文件共35(格式:.dwt)。 提醒:1, 更改模板文件里面库文件的内容是无效的,页面刷新时,程序自动重新载入库文件内容到模板文件里(以库文件内容为准)。2, 模板内所有id值为 ECS_ 开头的都必须保留(和ajax相关)。3, 非库文件内容不可放置到可编辑区域内,否则设置模板时,非库文件内容将被覆盖删除。 activity.dwt 模板文件 活动列表页 不可更改 article.dwt 模板文件 文章内容页 不可更改 article_cat.dwt 模板文件 文章列表页 不可更改 article_pro.dwt 模板文件 系统文章页(如:“公司简介”、“版权信息“。) 不可更改 auction_list.dwt 模板文件 拍卖商品列表页 不可更改 auction.dwt 模板文件 拍卖商品详情页 不可更改 brand.dwt 模板文件 商品品牌页 不可更改 brand_list.dwt 模板文件 品牌合集页 不可更改 catalog.dwt 模板文件 所有分类页 不可更改 category.dwt 模板文件 商品列表页 不可更改 compare.dwt 模板文件 商品比较页 不可更改 exchange_goods.dwt 模板文件 积分商城详情页 不可更改 exchange_list.dwt 模板文件 积分商城列表页 不可更改 flow.dwt 模板文件 购物车和购物流程页 不可更改 gallery.dwt 模板文件 商品相册页 不可更改 goods.dwt 模板文件 商品详情页 不可更改 group_buy_goods.dwt 模板文件 团购商品详情页 不可更改 group_buy_list.dwt 模板文件 团购商品列表页 不可更改 index.dwt 模板文件 首页 不可更改 message.dwt 模板文件 信息提示页 不可更改 message_board.dwt 模板文件 留言板页面 不可更改 myship.dwt 模板文件 配送方式页 不可更改 package.dwt 模板文件 超值礼包列表 不可更改 package.dwt 模板文件 超值礼包列表 不可更改 pick_out.dwt 模板文件 选购中心页 不可更改 receive.dwt 模板文件 收货确认信息页 不可更改 respond.dwt 模板文件 在线支付结果提示信息页 不可更改 search.dwt 模板文件 商品搜索页 不可更改 snatch.dwt 模板文件 夺宝奇兵页 不可更改 tag_cloud.dwt 模板文件 标签云页 不可更改 topic.dwt 模板文件 专题页 不可更改 user_clips.dwt 模板文件 用户中心页 (包含:欢迎页,我的留言,我的标签,收藏商品,缺货登记列表,添加缺货登记。) 不可更改 user_passport.dwt 模板文件 用户安全页(包含:会员登录,会员注册,找回密码。) 不可更改 user_transaction.dwt 模板文件 用户中心页 (包含:个人资料,我的红包,添加红包,我的订单,订单详情,合并订单,订单状态,商品列表,费用总计,收货人信息,支付方式,其他信息,会员余额。) 不可更改 wholesale_list.dwt 模板文件 批发方案页 不可更改 备注:库文件共57个 (格式 .lbi)提醒:文件名尽量保存默认,否则在后台管理将无法管理库文件或不可预见错误。 ad_position.lbi 库文件 广告位 不可更改 article_category_tree.lbi 库文件 文章分类页 不可更改 auction.lbi 库文件 拍卖商品列表 不可更改 bought_goods.lbi 库文件 购买过此商品的人购买过哪些商品 不可更改 bought_note_guide.lbi 库文件 购买历史列表 (ajax载入bought_notes.lbi库文件。) 不可更改 bought_notes.lbi 库文件 购买历史列表 不可更改 brand_goods.lbi 库文件 品牌的商品 不可更改 brands.lbi 库文件 品牌专区 不可更改 cart.lbi 库文件 购物车 不可更改 cat_articles.lbi 库文件 文章列表 不可更改 cat_goods.lbi 库文件 分类下的商品 不可更改 category_tree.lbi 库文件 商品分类树 不可更改 categorys.lbi 库文件 选购中心已选分类 不可更改 comments.lbi 库文件 用户评论列表 (ajax载入comments_list.lbi库文件。) 不可更改 comments_list.lbi 库文件 用户评论内容 不可更改 consignee.lbi 库文件 收货地址表单 不可更改 email_list.lbi 库文件 邮件订阅 不可更改 exchange_hot.lbi 库文件 积分商城热门商品 不可更改 exchange_list.lbi 库文件 积分商城商品列表 不可更改 filter_attr.lbi 库文件 属性筛选 不可更改 goods_article.lbi 库文件 相关文章 不可更改 goods_attrlinked.lbi 库文件 属性关联的商品 不可更改 goods_fittings.lbi 库文件 相关配件 不可更改 goods_gallery.lbi 库文件 商品相册 不可更改 goods_list.lbi 库文件 商品列表 不可更改 goods_related.lbi 库文件 相关商品 不可更改 goods_tags.lbi 库文件 商品标记 不可更改 group_buy.lbi 库文件 首页团购商品 不可更改 help.lbi 库文件 网店帮助 不可更改 history.lbi 库文件 商品浏览历史 不可更改 index_ad.lbi 库文件 首页主广告 不可更改 invoice_query.lbi 库文件 发货单查询 不可更改 member.lbi 库文件 会员登录 (ajax载入member_info.lbi库文件。) 不可更改 member_info.lbi 库文件 会员登录表单和登录成功以后用户账户信息 不可更改 message_list.lbi 库文件 留言列表 不可更改 myship.lbi 库文件 配送方式列表 不可更改 new_articles.lbi 库文件 最新文章 不可更改 online.lbi 库文件 (目前没发现任何作用) 不可更改 order_query.lbi 库文件 订单查询模块 不可更改 order_total.lbi 库文件 订单费用总计 不可更改 page_footer.lbi 库文件 页面脚部 不可更改 page_header.lbi 库文件 页面顶部 不可更改 pages.lbi 库文件 列表分页 不可更改 price_grade.lbi 库文件 价格区间 不可更改 promotion_info.lbi 促销信息 价格区间 不可更改 recommend_best.lbi 库文件 精品推荐 不可更改 recommend_hot.lbi 库文件 热卖商品 不可更改 recommend_new.lbi 库文件 新品推荐 不可更改 recommend_promotion.lbi 库文件 促销商品 不可更改 relatetag.lbi 库文件 相关tag的文件(和ucenter有关系) 不可更改 snatch.lbi 库文件 夺宝奇兵出价表单 (必须被id="ECS_SNATCH"包含实现ajax刷新。) 不可更改 snatch_price.lbi 库文件 夺宝奇兵最新出价列表 (必须被id="ECS_PRICE_LIST"包含实现ajax刷新。) 不可更改 top10.lbi 库文件 销售排行 不可更改 ur_here.lbi 库文件 当前位置 不可更改 user_menu.lbi 库文件 用户中心菜单 不可更改 vote.lbi 库文件 在线调查 不可更改 vote_list.lbi 库文件 在线调查(引用vote.lbi) 不可更改
ECSHOP 数据库结构说明 1.account_log 用户账目日志表 字段 类型 Null/默认 注释 log_id mediumint(8) 否 / 自增 ID 号 user_id mediumint(8) 否 / 用户登录后保存在session中的id号,跟users表中user_id对应 user_money decimal(10,2) 否 / 用户该笔记录的余额 frozen_money decimal(10,2) 否 / 被冻结的资金 rank_points mediumint(9) 否 / 等级积分,跟消费积分是分开的 pay_points mediumint(9) 否 / 消费积分,跟等级积分是分开的 change_time int(10) 否 / 该笔操作发生的时间 change_desc varchar(255) 否 / 该笔操作的备注 change_type tinyint(3) 否 / 操作类型,0为充值,1,为提现,2为管理员调节,99为其它类型 2.ad 广告表 字段 类型 Null/默认 注释 ad_id smallint(5) 否 / 自增ID号 position_id smallint(5) 否 / 0 0,站外广告;从1开始代表的是该广告所处的广告位,同表ad_postition中的字段position_id的值 media_type tinyint(3) 否 / 0 广告类型,0图片;1flash;2代码3文字 ad_name varchar(60) 否 / 该条广告记录的广告名称 ad_link varchar(255) 否 / 广告链接地址 ad_code text 否 / 广告链接的表现,文字广告就是文字或图片和flash就是它们的地址 start_time int(11) 否 / 0 广告开始时间 end_time int(11) 否 / 0 广告结速时间 link_man varchar(60) 否 / 广告联系人 link_email varchar(60) 否 / 广告联系人的邮箱 link_phone varchar(60) 否 / 广告联系人的电话 click_count mediumint(8) 否 / 0 该广告点击数 enabled tinyint(3) 否 / 1 该广告是否关闭;1开启; 0关闭; 关闭后广告将不再有效 3.admin_action 管理权限分配 字段 类型 Null/默认 注释 action_id tinyint(3) 否 / 自增ID号 parent_id tinyint(3) 否 / 0 该id 项的父id,对应本表的action_id字段 action_code varchar(20) 否 / 代表权限的英文字符串,对应汉文在语言文件中,如果该字段有某个字符串,就表示有该权限 relevance varchar(20) 否 / 4.admin_log 管理日志 字段 类型 Null/默认 注释 log_id int(10) 否 / 自增ID号 log_time int(10) 否 / 0 写日志时间 user_id tinyint(3) 否 / 0 该日志所记录的操作者id,同admin_user的user_id log_info varchar(255) 否 / 管理操作内容 ip_address varchar(15) 否 / 登录者登录IP 5.admin_message 管理留言 字段 类型 Null/默认 注释 message_id smallint(5) 否 / 自增id号 sender_id tinyint(3) 否 / 0 发送该留言的管理员id,同admin_user的user_id receiver_id tinyint(3) 否 / 0 接收消息管理员id,同admin_user的user_id,如果是给多个管理员发送,则同一个消息给每个管理员id发送一条 sent_time int(11) 否 / 0 留言发送时间 read_time int(11) 否 / 0 留言阅读时间 readed tinyint(1) 否 / 0 留言是否阅读1已阅读;0未阅读 deleted tinyint(1) 否 / 0 留言是否已经被删除 1已删除;0未删除 title varchar(150) 否 / 留言的主题 message text 否 / 留言的内容 6.admin_user 管理员管理 字段 类型 Null/默认 注释 user_id smallint(5) 否 / 自增id号,管理员代码 user_name varchar(60) 否 / 管理员登录名 email varchar(60) 否 / 管理员邮箱 password varchar(32) 否 / 管理员登录密码 add_time int(11) 否 / 管理员添加时间 last_login int(11) 否 / 管理员最后一次登录时间 last_ip varchar(15) 否 / 管理员最后一次登录IP action_list text 否 / 管理员管理权限列表 nav_list text 否 / 管理员导航栏配置项 lang_type varchar(50) 否 / agency_id smallint(5) 否 / 该管理员负责的办事处理的id,同agency的agency_id字段.如果管理员没有负责办事处,则此处为0 suppliers_id smallint(5) 是 / 0 todolist longtext 是 / 记事本记录的数据 role_id smallint(5) 是 / 7.adsense 广告相关统计 字段 类型 Null/默认 注释 from_ad smallint(5) 否 / 0 广告代号,-1是部外广告,如果是站内广告则为ad的ad_id referer varchar(255) 否 / 页面来源 clicks int(10) 否 / 0 点击率 8.ad_custom 字段 类型 Null/默认 注释 Ad_id Mediumint(8) 否 / Ad_type Tinyint(1) 否 / 1 Ad_name Varchar(60) 是 / Add_time Int(10) 否 / 0 Content Mediumtext 是 / url Varchar(255) 是 / Ad_status Tinyint(3) 否 / 0 9.ad_position 广告位 字段 类型 Null/默认 注释 position_id tinyint(3) 否 / 广告位自增id position_name varchar(60) 否 / 广告位名称 ad_width smallint(5) 否 / 0 广告位宽度 ad_height smallint(5) 否 / 0 广告高度 position_desc varchar(255) 否 / 广告位描述 position_style text 否 / 广告位模板代码 10.affiliate_log 管理日志 字段 类型 Null/默认 注释 log_id mediumint(8) 否 / order_id mediumint(8) 否 / 顺序ID time int(10) 否 / 时间 user_id mediumint(8) 否 / 用户ID user_name varchar(60) 是 / 用户名 money decimal(10,2) 否/0.00 钱 point int(10) 否 / 0 积分 separate_type tinyint(1) 否 / 0 特殊说明
ecshop transport.js/run() error:undefined 在使用ECshop的AJAX(即:transport.js) IE有时候会出现:ReferenceError: process_request is not defined,FF则出现:transport.js/run() error:undefined,其实这完全和transport.js无关。那么问题出在哪里呢? (1)首先找到445-447行发现了这两句: /* 定义两个别名 */ var Ajax = Transport; Ajax.call = Transport.run; (2)然后再找到735发现了这句: Ajax.onRunning = showLoader; 哈哈....其实问题就是出在这句的showLoader函数里面。因为在该函数里753行有这段语句 if ( ! obj && process_request),而出现上述问题就是说变量process_request没有定义!! (3)为什么说该变量没有定义呢? 原因很简单,因为EC很多时候都是将这句话: <script type="text/javascript"> var process_request = "{$lang.process_request}"; ..... </script> 放在最后面的....在中途有其他什么处理、JS载入、JS运行而还没运行到最下面的时候当然就出现在上述的错误!!! process_request这个变量到底有什么用呢?其实就是为了创建一个DIV层显示“正在处理您的请求...”这个信息!!为什么要这样实现呢?因为这样可以支持多语言。 解决办法: (1)在showLoader函数体里面加入这句var process_request = '正在处理您的请求...';英文的话就改成英文了。。。 (2)将var process_request = "{$lang.process_request}";这句话放在<header>下面的<script>里面 (3)重新定义Ajax.onRunning这一事件例如可以自己新建一个函数run,Ajax.onRunning = run 第二种方法:对于这个问题,官方管理员的回复是”有时ajax抓取订单信息不全,出现这样的错误信息,但这个不会影响您的正常使用,请您放心。如果要关闭,可以在后台里的商店设置 基本设置中去除。”,实际上,按照官方这个说法,问题还是照样存在,解决的办法是“眼不见,心不烦”,将这条弹出语句注释掉:找到js/transport.js,第227行: alert(this.filename + "/run() error:" + ex.description);复制代码将之改为:/* alert(this.filename + "/run() error:" + ex.description); */复制代码
Apache多站点配置教程 Apache在安装之后默认只是指向一个站点(例如http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F127.0.0.1%2F&urlrefer=62432c77e77e04124f78dd9fa65d0acd只是指向一个文件夹),如果要实现多站点(例如127.0.0.1指向www1目录,127.0.0.2指向www2目录……),配置起来也并不困难。 首先打开Apache安装目录下 conf/httpd.conf 文件,找到下面两行文字,把最前面的 # 号去掉,然后保存。目的是让Apache在启动时能加载虚拟主机模块 [AppleScript] 纯文本查看 复制代码? 01 #LoadModule vhost_alias_module modules/mod_vhost_alias.so [AppleScript] 纯文本查看 复制代码? 01 #Include conf/extra/httpd-vhosts.conf 接着找到同一文件中的 DocumentRoot (在第180行左右)和 Directory (在第207行左右),改为站点目录的上一级目录 例如站点放在 E:/www/www1 和 E:/www/www2,则改为以下形式 [AppleScript] 纯文本查看 复制代码? 01 DocumentRoot "E:/www" [AppleScript] 纯文本查看 复制代码? 01 <Directory "E:/www"> 配置完成后即可打开Apache安装目录下 /conf/extra/httpd-vhosts.conf 虚拟主机配置文件 如果站点分别放在 E:/www/www1 和 E:/www/www2 目录下,并且使用 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F127.0.0.1%2F+&urlrefer=310d3383c282eeb3b685a15bcbb601ae和 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2F127.0.0.2+&urlrefer=514feda18f061292dccd44494f92de0f分别访问上述两个站点,则在 httpd-vhosts.conf 文件后面新增下面的内容 [AppleScript] 纯文本查看 复制代码? 010203040506070809 <VirtualHost *:80> DocumentRoot "E:/www/www1" ServerName 127.0.0.1</VirtualHost> <VirtualHost *:80> DocumentRoot "E:/www/www2" ServerName 127.0.0.2</VirtualHost> 上述所有操作完成后,即可重启Apache服务,多站点配置圆满完成! 如果要新增2个以上的站点,操作跟上面的也大同小异噢~
ecshop 模板标签说明 商品关键字 {$keyword} 商品描述 {$description} 商店标题 {$page_title} 商店公告 {$shop_notice} 文章列表 <ul> {foreach from=$new_articles item=article} <li>{$article.short_title}//文章标题</li> {/foreach} </ul> 精品推荐商品列表 <ul> {foreach from=$best_goods item=goods} <li><a href="{$goods.url}//商品url">{$goods.short_name}//商品名称</a></li> {/foreach} </ul> 热销商品 <ul> {foreach from=$hot_goods item=hot} <li><a href="{$hot.url}//商品url"><img src="{$hot.thumb}//商品缩略图"><br />{$hot.short_style_name}//商品名称</a></li> {/foreach} </ul> 商品上市 <ul> {foreach from=$new_goods item=new} <li><a href="{$new.url}//商品url"><img src="{$new.thumb}//商品缩略图"><br />{$new.short_style_name//商品名称}</a></li> {/foreach} </ul> 分类列表/所有分类 {foreach from=$categories item=cat} <dl> <dt><a href="{$cat.url}//分类url">{$cat.name|escape:html}//分类名称</a></dt> {foreach from=$cat.cat_id item=child} <dd> <a href="{$child.url}//子分类url">{$child.name|escape:html}//子分类名称</a> <ul> {foreach from=$child.cat_id item=childer} <li><a href="{$childer.url}//子子分类url">{$childer.name|escape:html}//子子分类名称</a></li> {/foreach} </ul> </dd> {/foreach} </dl> {/foreach} 调用includes/lib_insert.php文件中的insert_cart_info函数,获取购物后结算信息 {insert name='cart_info'} 销售排行 {foreach name=top_goods from=$top_goods item=top} <ul> <img src="../images/top_{$smarty.foreach.top_goods.iteration}.gif" class="iteration"> //iteration:smarty自带的循环次数 表示方法:$smarty.foreach.name.iteration {if $smarty.foreach.top_goods.iteration<4} <li class="topimg"><a href="{$top.url}//商品url"><img src="{$top.thumb}//商品缩略图" alt="{$top.name|escape:html}//商品名称"></a></li> {/if} <li {if $smarty.foreach.top_goods.iteration<4}class="iteration1"{/if}> <a href="{$top.url}//商品url"><img src="{$top.thumb}//商品缩略图" title="{$top.name|escape:html}//商品名称">{$top.short_name}//商品名称</a> {$lang.shop_rice}{$top.price}//商品价格 </li> </ul> {/foreach} 促销活动/优惠活动 {if $promotion_info} <h3>{$lang.promotion_info}</h3> {foreach from=$promotion_info item=item key=key} {if $item.type eq "snatch"}//如果为夺宝奇兵 <a href="snatch.php" title="{$lang.$item.type}//活动类型">{$lang.snatch_promotion}</a> {elseif $item.type eq "group_buy"}//如果为团购 <a href="group_buy.php" title="{$lang.$item.type}//活动类型">{$lang.group_promotion}</a> {elseif $item.type eq "auction"} //如果为拍卖 <a href="auction.php" title="{$lang.$item.type}//活动类型">{$lang.auction}</a> {elseif $item.type eq "favourable"} //如果为优惠活动 <a href="favourable.php" title="{$lang.$item.type}//活动类型">{$lang.favourable}</a> {elseif $item.type eq "package"} //如果为礼包 <a href="package.php" title="{$lang.$item.type}//活动类型">{$lang.package}</a> {/if} <a href="{$item.url}//活动url" title="{$lang.$item.type}{$item.act_name}{$item.time}//活动名称及活动时间">{$item.act_name}//活动名称</a> {/foreach} {/if}
oracle9i命令启动数据库 oracle 9i在启动方式上同9i以前的版本有了较明显的变化,从9i开始,oracle取消了svrmgrl程序和internal用户,对数据库的所有操作,都要通过sqlplus来完成。 1.1 数据库的正常启动 正常启动数据库的选项是normal,这也是数据启动的缺省选项。以这种方式启动将启动一个实例(即instance,实例是指oracle的后台进程和SGA区),并把数据库装入(mount),然后打开数据库供用户使用。具体操作如下: 首先以oracle用户登入,su - oracle 1)以nolog方式进入sqlplus $sqlplus /nolog sql> 2)再做为sysdba连入 SQL>conn / as sysdba 3)用startup命令启动 SQL>startup (若启动文件名不是ORACLE缺省的文件名,则启动时应带启动目录与文件名) SQL>startup pfile=<file-pathr/init-file> 或者还可以用以下方式启动数据库 $sqlplus "/ as sysdba" SQL>startup 1.2 安装启动与非安装启动 安装启动的选项是mount,表示只将数据库装入实例而不打开数据库;非安装启动的选项是nomount,表示只建立数据库实例而不装入数据库,当然也不打开数据库。 1)安装启动 SQL>startup mount 该方式启动数据库的的用途一般为: 为数据文件更名; 增加、删除或改名事物日志文件; 使事物日志归档模式选项有效或失效; 进行完整数据库的恢复操作 2)非安装启动 SQL> startup nomount 该方式启动数据库的用途一般为: 创建一新的数据库 重建控制文件 1.3 约束启动 这种方式的选项是restrict,它启动数据库时装入并打开它,但此时的数据库只能为有特殊权限的数据库管理员使用,一般用户不能联入数据库。 约束启动 SQL> startup {pfile=<filepath/init-file>} restrict 一般来说当用户有create session权限十可联入数据库,但对于restrict方式启动的数据库只有restricted session系统权限用户才允许联入。 若在restrict方式下改变数据库运行方式,则可用alter system命令,如下: SQL>alter system disable restricted session; 以这种方式打开数据库通常都是为了处理数据库出现的故障,或修改数据库字符集。 1.4 数据库关闭 首先以sysdba连入: $sqlplus /nolog $SQL>conn / as sysdba 1)正常关闭 SQL>shutdown normal(或只写shutdown) 这种方式下关闭数据库在关闭前检查所有的连接,并且发出命令后不允许再有新的连接,在等所有用户断开连接后关闭数据库。在此方式下关闭的数据库下次启动时不需要任何恢复过程。但根据经验,在生产环境下以这种方式关闭数据库需要很长时间,甚至根本关不掉数据库,因此一般不推荐使用这种方式关闭数据库。 2)立即关闭 SQL>shutdown immediate; 这种方式下关闭数据库也不允许新的连接,但它并不等待已连接用户断开连接,而是由系统断开与用户的连接,然后回滚所有未提交的事务,接着关闭数据库。这种方式关闭数据库也算是正常关闭,下次启动时也不需要做恢复,而且这种方式关闭数据库通常比较快,因此建议关闭数据库时尽量使用这种方法。 3)异常关闭 SQL>shutdown abort; 这种方式下关闭数据库系统不做任何的检查与回退操作而直接将数据库实例撤消并将数据文件关闭。用这种方法关闭数据库速度最快,但这种关闭方法不能保证数据库的一致性,下次启动数据库时有可能无法打开数据库,因此通常不建议使用这种方式关闭数据库。 在Oracle 8i中,启动和关闭数据库最常用的工具就是在命令行方式下的Server Manager。要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。 进入Server Manager: $ svrmgrl Oracle Server Manager Release 3.1.7.0.0 - Production Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved. Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production With the Partitioning option JServer Release 8.1.7.0.0 - Production SVRMGR> connect internal Connected. SVRMGR > startup
江西金品铜业科技有限公司 江西金品铜业科技有限公司,座落在美丽的抚河之畔,才子之乡,公司总投资为25亿元,占地面积324.90亩,总建筑面积16万平方米;流动资金为13100.00万元。项目建成后达产年可实现年产值年产15万吨高精度宽幅铜板带产品,可实现年均销售收入为70亿,年缴纳税金达3.5亿。公司在铜以及相关有色金属领域,拥有勘探、采矿、冶炼、加工为一体的完整产业链,主要经营铜加工,铜制品、有色金属加工、高精密铜产品研发、铜冶炼、进出口贸易等业务,是国内最大、最现代化的铜生产和加工基地之一。金品铜业主要产品有铜板、带、棒、排、型等。可生产有色加工材合金牌号170余个,品种760余个,规格上万种。产品广泛应用于航空、航天、舰船、军工、冶金、电子、机电、纺织、交通、建筑、化工、轻工、能源等国民经济各领域,为国家国民经济发展、国内高科技产业和国防军工事业做出了突出贡献。 公司拥有雄厚的技术力量、先进的设备、成熟的工艺,产品符合国家GB/T17793—1999、GB/T2059—2000标准,公司十分重视以市场为导向,以名优产品抢占市场,坚持技术、设备的先进性、适用性、合理性、经济性的原则,公司始终遵循“技术进步、科学领先、质量第一”的方针,进一步调整产业结构,完善产业布局,争创中国铜业领跑者的地位,成长为以铜为主、以资源为基础的国际化一流公司。公司认真贯彻执行国家基本建设的各项方针、政策和有关规定,执行国家及各部委颁发的现行标准和规范,利用所在地资源优势和现有基础条件,合理利用资源,采用国内最先进的产品生产技术,选用国内最先进的产品生产设备,确保产品的质量,形成一套较为完善的质量管理体系。在年产15万吨高精度宽幅铜板带生产线建设项目完成运营后,即是2015年,项目公司计划投资实施本次建设项目二期工程一年产5万吨铜箔生产线建设项目,逐步发展成为江西省乃至全国一流的铜板带、铜箔高新技术制造企业;项目将逐步实施铜加工产业链发展,带动我国铜加工产业生产技术水平的全面提升,对于促进项目建设当地铜业快速发展进程起到积极的推动作用。
编写WORD文档时符号调不出来的解决办法. 产生这种情形大部分是因为符号表组件损毁了,此时只要重新注册符号表组件即可。SYMINPUT.DLL就是需要重新注册的组件。 1、现在首先要寻找的它的位置。看见它的前提是使它可见,“开始”->“设置”-> “控制面板”-> “文件夹选项”-> “查看”开启“显示所有文件和文件夹”、关闭“隐藏受保护的系统文件(推荐)”和“隐藏已知文件扩展名”。SYMINPUT.DLL在我的电脑中的位置是在“D:\Program Files\Microsoft Office\Office11\Addins\SYMINPUT.DLL”,也就是说是在“安装目录:\Program Files\Microsoft Office\Office11\Addins\SYMINPUT.DLL”,而Office11代表的是Office2003。 2、注册和反注册。在“开始”->“运行”中输入“regsvr32 /u”,点击SYMINPUT.DLL拖动到“运行”窗口的“打开”框中,再确定,就完成了反注册过程。接下来,在“开始”->“运行”中输入“regsvr32”,点击SYMINPUT.DLL拖动到“运行”窗口的“打开”框中,再确定,就完成了重新注册过程。到这就应该修复了。 3、如果还是无法使用符号栏,恭喜你,你可能中标了,到别的机器上复制来SYMINPUT.DLL替代原文件,重复第2步。再不好使请看第三条。 word2003符号栏无法使用的解决方法,特殊符合也一样适应, 1.按[开始]菜单上的[运行],输入cmd,按[确定] 2.输入cd C:\program files\microsoft Office\office11\addins 完成后按[enter]键 3.输入regsvr32 /u SYMINPUT.DLL 完成后再按下[Enter]键 4.输入regsvr32 SYMINPUT.DLL 完成后再按下[Enter]键
1 下一页