php 表单提交长文章数据丢失问题解决方法

 更新时间:2016年11月25日 17:37  点击:1657
数据丢失对于小编来讲是个头痛的问题了,因为小编碰到表单提交大量数据发生丢失问题也是这几天了,但不是时尚而有时会丢失了,这个问题非常难解决,下面整理了一些解决办法,希望可以帮助到各位。

网上找了一堆,php.ini 的post_max_size和upload_max_filesize都设置了很大的值,没用,nginx的client_max_body_size 500m;加到了那么大的值,也没用。
最后终于google到办法:原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量,实在无语。
后来查看php这一部分源码看到这句代码:

 代码如下 复制代码

if (++count > PG(max_input_vars)) {
                 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. To increase the limit change max_input_vars in     php.ini.", PG(max_input_vars));
                 return;
}

猛然间想起来,php5.3.10在解决hash冲突受攻击时,增加了一个配置指令max_input_vars。php.ini中增加这个指令的值即可。

php 表单提交长文章数据丢失问题解决方法

该值默认情况下是1000 , 不能满足有1000个以上输入项的需求,所以得在php.ini 里面加上更大的值如:
max_input_vars = 5000

php5.5升级了很多功能的同时也去除了不少功能了,小编在使用ecshop提示Only variables should be passed by reference错误了,下文就来和各位一起看解决办法。

php大家用的版本不断提高,Ecshop没有来得及修改那么及时。

Ecshop安装出现

Only variables should be passed by reference

5.3以上版本的问题,应该也和配置有关 只要418行把这一句拆成两句就没有问题了

 代码如下 复制代码

 $tag_sel = array_shift(explode(' ', $tag));

改成:

 $tag_arr = explode(' ', $tag);  $tag_sel = array_shift($tag_arr);

(实验过,绝对可行) 因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值

修改

 代码如下 复制代码

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead...?
cls_template.php

 $out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";

最近经常有人问如何有效的学习Drupal,所以小编就邀请国内在Drupal界比较知名的专家,让他们来告诉我们怎么样有效的学习Drupal,以下是小编整理的问答及答案。

问:请教各位关于drupal整个学习的一个过程?
“在学习一样新鲜事物的时候,往往会发现其中好多方面或是分支知识储备不够,然后转去学习别的知识点。比较困惑,就想请教各位关于drupal是一个怎么样的学习过程?

目标:能够完成普通的企业站和一些简单需求的网站。”


以下是各位在Drupal有一定影响力的Drupaler的回答:


——————————分隔符————————————–

于志成 喜欢折腾,爱好技术,宅,认真,懒

“首先要看你如何定位你的学习目标,比如你的目标是做简单的网站,最好时间就不要花在诸如研究Drupal各个知识点是如何实现上。
你需要学的是:
1. Drupal的基本术语,比如node, content type, user, user role, permission, taxonomy, cck/field, module, theme, views, template, menu等等,就不一一列举了。
2. 然后,你需要学会使用内置模块,通过配置,根据需求,实现网站的基本数据结构,包括几个内容类型来容纳数据,几级菜单来做导航,几个分类和标签来标记内容
3. 在理解主题机制的基础上,讲各个页面theme成想要的样子
4. 如果默认的列表满足不了全部需求,你可能需要理解和使用Views模块
5. 如果还需要一些其他的功能,你需要学会利用Drupal官网的模块库资源,找到自己需要的功能模块。

以上是学习Drupal制作简单网站的一般流程,如果每一个步骤你都能做的很好,你就能学会80%要学的Drupal知识,但花费的时间只占你整个Drupal学习时间的20%。

但如果你想成为一名Drupal高手,你需要花费80%的时间,去把那20%的晦涩难懂的Drupal底层理论,各个重量级模块的扩展,各个模块之间的配合,各种最佳实践融汇贯通。”

——————————分隔符————————————–

幽灵 幽灵古堡

谢邀,个人认为根据目标水平不同,可以分为不同阶段:

简单建站:要达到这个水平并不难,熟悉一些常用模块,能够下载需要的模块或主题并将其安装在目标网站上,熟悉一些drupal的术语,如content type,taxonomy等。

高级建站:达到这个水平,需要付出一些努力,常用模块基本上要做到随需随用,能够根据需求确定模块的使用,至少能在需要的时候找到解决问题的方法,即使是利用网络资源;能够进行简单的定制,对drupal的实现方式有一定的理解,能依照drupal的标准完成需求。

简单开发:根据需求定制模块和主题,这需要至少会php、js、html、css,可以不必精通每一种,但至少精通其中以两种,这里分模块开发和主 题开发,不同方向需要的技能也各不同,功能开发者需要会php,并且熟悉drupal核心以及常用模块的API,并能熟练应用;主题定制者至少要会 html和css,并且熟悉drupal的主题机制,能够对模板进行覆写,并且需要的时候要能在template.php中进行一些定制修改。

高级开发:要达到这个水平,需要不懈的努力,不管是主题开发还是模块开发,都要求能依据drupal的代码标准,制作出主题或者模块,模块和主题相互之间的交叉地带也都横沟搞定,模块内自带的模板文件和样式表并提供覆写机制,主题内的处理过程等等。
    补充:除此之外,高级点的还会涉及到多人协作开发,这里相关的软件工程知识也成了必须,版本控制等等一系列技能也需要掌握。

以上愚见,望指正。


——————————分隔符————————————–

yangbo

就达成你所提的目标,学drupal theme机制即可。

首先理解一下几点:

Drupal所有输出,要通过theme;
theme根据一个theme的“注册表”,调用相应的输出函数输出;
这个“注册表”是可以更改的。更改的方法为:定义一个特定命名模式的函数,drupal术语为hook。

以上三点为深入浅出故,从简叙述,但依次大意,再配合详细文档,理解drupal的theme机制不难。

如果想玩drupal玩的好,建议:

阅读drupal源代码,弄懂一个请求过来,到返回结果(一个页面),drupal经历了哪些步骤,干了哪些事,原理弄懂了自然“变化神通,游戏无碍”;
理解open source的理念,按open source的理念去参与drupal社区。

——————————分隔符————————————–

流云 爱生活,爱Drupal

就说我自己,刚毕业时就用了drupal,就是从用开始的,一开始是偏向主题前端开发, 因为普通站点主要就是用第三方的模块搭功能,主要是主题前端要定制的较多,持续了有半年左右我才开始真正的像模块开发靠拢。架构方面的经验也是通过项目的 积累积攒的,所以同意一些朋友所说的,有项目实践才是最重要的,否则你自己学了那么多也不知道到底怎么用。

刚巧我们公司最近有新人加入,以前都没接触过drupal,我去给他们培训。因为我们不是要做项目外包,而是直接维护开发产品。所以主要培训方向是模块开发,不需要去考虑项目需求和架构层面的。

计划是大概1-2周时间讲完下面的培训内容:

面内容的组成:页面,区域,区块,节点,内容类型,字段,用户,分类,菜单,评论,钩子,事件,动作,rules,主题模版系统,views,常用模块,系统常用配置,表单,常用API,Drupal执行流程

完了就直接上来跟着开发实践。到时候看看效果如何。

大家如果有什么建议也可跟我说说,谢谢。

——————————分隔符————————————–

赵高欣 我的博客 http://www.drupal001.com

Drupal的学习,志成兄总结的比较到位。

就个人体会,任何开发工具和语言的学习都要从实践中提高,理论的学习很简单也比较快。

此外就是从最简单的地方入手,比如drupal,你先要安装一个用用,装几个简单的模块试试,再就是做一个小项目,看如何实现。

比如,刚开始我就用drupal做了一个自己用的简单网站,翻译英文笑话的网站,做得过程虽然有时很多用的都不对,但是做完之后确实大体了解了很多Drupal的核心理念。

因此就是先用,再就是一个一个模块的慢慢来。/**有时一个模块就是一个新的技术领域**/,并不是一个模块的知识面能涵盖的。比如SEO模块,那么你得有seo的知识,并不是模块有多难,而是你没有SEO的知识,还有GoogleAnalytics, 你对GA要有所了解,等等,不一一列举。

最后说一下更新的问题,Drupal我觉得算是更新比较慢的了,大版本更新很慢,小版本基本就可以忽略,因为大多都是bugfix或者小调整,基本不会花费学习成本的。

大多开源软件,更新都是比较慢的,但是更新都是有学习成本的,这个是不可避免的。简单的说,就是活到老学到老吧。^_^

附带一张Drupal学习曲线图。


drupal学习曲线图

———————————分隔符————————————–

老葛 《实战Drupal》

很多时候,学习Drupal都是和实际项目联系到一起的,临时抱佛脚,

专门学习Drupal、研究Drupal的少之又少。

没有了实际项目,很多人也就离开Drupal了。


———————————分隔符————————————–

分头诗人 http://www.drupalla.com

每个人的学习方式不同。分享一下我的学习方式。

在决定学Drupal后,当时正好有一个种子展会的网站要做。也不知道哪里来的勇气,直接就用Drupal做了。网站要一个月完成,那个时候我还没 接触过Drupal,而且当时的学习氛围不好,问一个问题可能半天没人回答,中文文档资料有价值的也不多,我英语水平也很次,关键的是网站不但使用 Drupal,还涉及到flash builder建立的flash 预订展厅功能,flash builder也是一知半解,所以当时做出这个决定,我想我是疯了。

在如此巨大的压力下,也只能硬着头皮去做,打开金山词霸不停翻译,不停搜索,居然给我在一个月内完成了。虽然自我感觉比较粗糙。但客户也收货了。在 这个粗糙的案例完成后,Drupal一个月入门了。一个月有了第一个作品。接下来的过程也没那么的痛苦。借着金山词霸看了数本Drupal书籍,在这过程 中发现自己英文阅读能力居然提升了不少。哈。。。学会了Drupal、学会了flash builder、加强了英文、还有钱收,一举四得。。

总结了一个快速但高压的学习方式,就是小项目实践中学习。当然,实践过程还是有一些技巧的。下面是我的做法:

1,我是先debug 了一片Drupal。然后看了一片Drupal的数据库结构。对Drupal整个框架有一个比较大体的认识。

2,找一本相对完整的书看完。当时看的是一本英文书,边看边翻译,足足用了3天看完。。可以有视频的话更好。之前也有在空余时间看了一个系列的老视 频,但看视频更吃力,因为是英文的视频,也没字幕,无法金山词霸。不过如果有中文视频的,就很不错的资源,可以更通俗易懂,毕竟视频教学比较直接。从这个 步骤过程中,可以了解到Drupal的一些基本概念。

3,有上面两步的基础后,大概用4天时间,慢点的一周也可以搞定,接下来别犹豫,马上实践。不用再去常规的学习,没必要。在实践中会让你了解 theme,module,hook,views,form,field,rules,events,node,development,API等等各种 各样的更深入资料,而且实践中学到的,会更深刻,更容易记住。

最近在工作中小组到一个cookie跨域设置的问题,然后就一些知识点进步了梳理,然后到网上搜索这方面的资料。本来这些都是一些基础知识,但是网上很多资料参差不齐,有的错误的文章来被转了很多次,所以我自己通过测试来整理这些问题。

第一个:cookie的setDomain属性到底能不能设置成当前应用程序所在的域之外的域名。比如我当前应用的域名是:www.test1.com,那么我在当前的应用里设置cookie的Domain为".test2.com",会有什么效果?浏览器会不会接受服务器返回来的cookie?假如浏览器真的接受了服务端返回的cookie,那么浏览器下次真的访问www.test2.com时到底会不会把之前的cookie给带上?

现在我写了两个web程序,每个web程序都有一个servlet,同时修改host文件,第一个应用的域名是:www.test1.com,第二个域名是:www.test2.com。并且使用火狐狸和IE10来做测试,测试过程如下:

1)首先在www.test1.com的程序中设置cookie的domain为“.test2.com”,访问该应用,在这种情况下IE和火狐狸的浏览器都会接受cookie,而且其Domain很明确是.test2.com,这里就说明cookie是可以写到浏览器里的,而不是很多地方说的被忽略云云。但是如果再次访问的时候,无论是访问www.test1.com或者是www.test2.com都不会把这个cookie带过去。这就验证了cookiede setDomain这个方法是不能设置当前应用所在域之外的域名的,之前看到很多文章说的结论是在www.test1.com的应用中设置cookie的domain为www.test2.com,则访问www.test2.com时就能在test2.com的应用中取到该cookie,这完全是不负责任的扯淡,那种情形只适合共同根域名的情况。辩证想一想都不可能,否则我就能操纵百度或者阿里的网站来读取我们自己定义的cookie?

2)现在我们设置www.test1.com的域名为自己,那么如果我们在www.test1.com的网页中使用Iframe嵌入www.test2.com的应用,那么会是什么结果?

首先我们访问了www.test1.com,这个时候www.test1.com和www.test2.com的cookie都写到浏览器里了,无论是在IE还是在火狐狸里都是如此,那么再次访问www.test1.com的时候,IE和火狐狸这个时候不同的地方就显示出来了。这个时候IE只会把www.test1.com的cookie带上,而不会带www.test2.com的cookie的(也就是说在www.test2.com的应用里是拿不到cookie的),而且这个时候你再次专门访问www.test2.com也不会拿到之前明明已经写入到浏览器里www.test2.com域名下的cookie。而如果在火狐狸里,则www.test1.com的应用中会取到www.test1.com的cookie,而且无论是iframe内嵌或者直接访问www.test2.com的应用里都会拿到自己域名下的cookie。这种情况使用<img>和<script>标签获取cookie是一样的道理。这样看来IE10的安全级别更高。

3)如果我们非要www.test1.com中利用iframe内嵌www.test2.com的方式来将test2.com域名下的cookie带过去给www.test2.com服务应用,那该怎么办?

这个非常简单,设置www.test2.com的head,比如response.setHeader设置P3P。关于P3P协议网上资料一大堆,大家可以自己看看。这里要注意,我们在www.test1.com使用iframe嵌入www.test2.com的应用,则www.test1.com设置的cookie就是通常意义的第一方cookie,而www.test2.com的cookie就是常说的第三方cookie,我们要设置P3P是要在第3方的程序中设置,这个很多资料里也没有说明白。其实就是www.test2.com的服务端和浏览器协商,让浏览器允许其携带上cookie给服务端。一旦突破这点,再结合referer首部属性就能获取用户的浏览习惯和喜好,像经常购买书籍、电子产品等。比如:A网站嵌入了B网站的一个页面,并且B网站设置了P3P,那么当用户访问A网站的时候会顺便访问B网站,这个时候B网站就随机生成一个ID,将这个ID写入到cookie,并将这个id和referer信息存入自己的数据库。下次,无论是C网站或者其他网站内嵌了B,被用户访问了,也或者是用户又访问A,都会顺便访问B网站并且将referer和id存入数据库,如果用户用的是同一个浏览器并且从来不清理cookie,这样cookie中记录的id就不变,每次访问就会把B的cookie带上,B网站根据cookie中的id和多次存入数据库的referer就能知道你都登录了哪些网站。因为referer的链接说明了所有问题。这样就可以做到对这个人的跟踪和分析。就好比我把我的眼线放在100商店,你访问各个商店时,他们就把你的购买什么的情况告诉我,天长日久我就知道你喜欢买什么了,不知道这个例子是否准确。

暂时先写到这里吧,这个问题也是首次稍微深入探索下,后边根据进展再补充吧,如果有错误请读者一定指正不胜感激。总之,这种基础知识是设计框架的基石,必须要搞清楚。否则,寝食难安、芒刺在背。

imagecreatefromjpeg函数是一个图像处理函数,但在使用中发现Fatal error: Call to undefined function imagecreatefromjpeg()错误了,下文小编整理了一些教程,大家一起来看看吧。

代码

 代码如下 复制代码

if(!imagecreatefromjpeg("./testimg.jpg"))
{
echo "imagecreatefromjpeg(testimg.jpg) failed!n)";
}
else
{
echo "imagecreatefromjpeg(testimg.jpg) succn)";
}

如果你使用此函数提示php Fatal error: Call to undefined function imagecreatefromjpeg()

这个错误是因为没有安装gd 的jpeg, 虽然你用phpinfo 查看有gd但 gd 不支持 jpeg

安装前我的phpinfo 如下:
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
PNG Support enabled
libPNG Version 1.2.10
WBMP Support enabled
XBM Support enabled

显然gd 没有支持jpeg 的,下面要安装 gd中的 jpeg

 代码如下 复制代码

1、找到php 源码目录
2、进入 ext/gd 目录
3、/usr/local/php/bin/phpize
4、./configure –with-php-config=/usr/local/php/bin/php-config –with-jpeg-dir –with-freetype-dir
5、make && make install
6、重启 httpd

安装后查看phpinfo

gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.10
WBMP Support enabled
XBM Support enabled

很显然多了个 JPEG Support enabled

以windows下的php+apache

首先,打开php.ini,找到“extension=php_gd.dll”,然后去掉前面的“;”注释,重启apache即可。

如果还出现此类问题,先检查php.ini的extension_dir值是哪个目录,在那个目录下检查有无php_gd.dll,没有的话请下载php_curl.dll,再把php目录中的libeay32.dll和ssleay32.dll拷到c:windowssystem32里面,重启apache,OK!

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • 总结android studio注意事项及打不开等问题解决方法

    经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20
  • MySQL ERROR 2013 (HY000)错误解决方法

    当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15
  • IE6-IE9中tbody的innerHTML不能赋值的解决方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07
  • Mysql修改datadir导致无法启动问题解决方法

    centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
  • Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法

    首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14
  • 小米解锁验证失败怎么办 小米解锁工具登录失败解决方法

    小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
  • photoshop字体显示乱码解决方法

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
  • 51安卓模拟器启动失败解决方法

    有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。 &#8195;&...2017-07-06
  • mysql too many open connections问题解决方法

    曾经以为在my.cnf写入max_connections = 2000就可以改变mysql的最大并发量,今天查到一个命令,发现服务器的mysql最大连接数为151.控制台,连接上mysql复制代码 代码如下:show variables;这条命令可以看到所有基础配置如果...2014-05-31
  • CentOS下php使用127.0.0.1不能连接mysql的解决方法

    php代码很简单:复制代码 代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) { die('Could not connect: ' . mysql_error().mysql_errno()); } lin...2015-03-15
  • PHP is_subclass_of函数的一个BUG和解决方法

    is_subclass_of的作用:复制代码 代码如下:bool is_subclass_of ( object object, string class_name )如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。注: 自 PHP 5.0.3 起也可以用一个字符...2014-06-07
  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    这篇文章主要介绍了mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法,涉及MySQL语句的使用技巧,需要的朋友可以参考下...2016-01-15
  • Can't connect to MySQL server on 'localhost' (10048)问题解决方法

    解决Can't connect to MySQL server on 'localhost' (10048), 一般见于使用mysql的windows 2003服务器. 错误的出现的原因: 应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较...2013-10-04
  • PHPMailer在SAE上无法发送邮件的解决方法

    PHPMailer在SAE上无法发送邮件怎么回事呢,我们以前在php5.2.7版本中使用了PHPMailer是可以发,但移到sae中发现无法发邮件了,那么此问题如何解决 在SAE上直接用5.2.7...2016-11-25
  • 帝国CMS登录后台提示"您的Cookie没有开启,不能登陆成功"的解决方法

    如果没有动过文件特别是/e/config/config.php文件的话!请按照如下操作肯定就OK了! 到你的主机或者服务器环境里找到php.ini文件(如果不知道在哪联系你的空间商就行了) 找到如下...2016-05-19