PHP表单提交失败,如何返回原值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP表单提交失败,如何返回原值?相关的知识,希望对你有一定的参考价值。

比如我做了一个注册程序,然后,用户名,姓名,密码,邮箱都填好了,点击注册之后,验证才发现,进入提示页,提示某些内容不正确,然后返回到之前的注册页面,但是,用户名,姓名,密码,邮箱三个text里面的值要和之前填的是一样的,这样注册时才能在原基础上改。

除了写入到session或cookie中,还有其他方法吗?

可以通过两种方案:
第一,表单提交的时候在php端会员获取表单内容的,如果表单信息存储或者验证有问题那么原样返回提交的值到表单页面,类似编辑一个已经保存的信息;
第二,通过Ajax来传值,Ajax把表单数据提交给php,php处理完表单数据返回给Ajax一个状态值,这样表单页面是不会刷新,表单原数据还是会存在。
参考技术A 实际开发中(很多网站腾讯、网易、新浪)一般是在客户端页面用js和ajax与服务器交互做验证,可以即时验证,例如input失去焦点时验证,也可以在提交表单时验证,如果成功则跳转不成功则在原页面提示。 如果不使用js和ajax你也可以接收变量后原样的echo出来,session或cookie是为了夸页面使用,除了他们你也可以通过url跨界面传值。 参考技术B 可以选择提交给本页面,用变量接收,如果失败,进行填充,也可以用ajax进行提交,失败不刷新,提交给其他页面的话,如果失败可以进行后退页面,不要刷新。<script>history.go(-1)</script>本回答被提问者采纳 参考技术C 一般要这种情况,就是验证后如果不正确,就继续执行,完不是跳转,这样就可以通过$_POST获取了,只有成功后再做跳转。 参考技术D 表单的话,用autocomplete属性就行啦。见下面的例子。

<form action="" method="get" autocomplete="on">
Name:<input type="text" name="name" /><br />
E-mail: <input type="email" name="email" autocomplete="off" /><br />
<input type="submit" />
</form>

php 表单提交错误后返回数据消失问题的解决方法

本文章向码农们介绍php 表单提交错误后返回数据消失问题的解决方法,感兴趣的码农可以参考一下。

表单提交错误后返回数据消失怎么办呐,今天就来分析解决一下这个问题。

状况概述:

做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况。如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情。因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题。
 

对于这种问题,综合总结了大概有下面几种情况:

(1)页面使用了session_start函数,这个函数有个特点就是会强制当前页面不被刷新,解决方法就是在此函数后加上下面这段代码:

header("Cache-control:private");//注意在本行之前你的PHP程序不能有任何输出 

还有其他的几种解决方法是在session_start前加上

session_cache_limiter(‘nocache‘); //清空表单 
session_cache_limiter(‘private‘); //不清空表单,只在session生效期间 
session_cache_limiter(‘public‘); //不清空表单,如同没使用session一般 

上面的设置session会使seesion出现缓存的现象,从而导致当你应用到session的地方会出现session信息不能更新的问题,鉴于这个原因,本文提出下面几种其他的解决办法。

 

(2)使用Header方法设置消息头Cache-control,在页面加入下段代码:

header(‘Cache-control: private, must-revalidate‘);  //支持页面回跳,注意本行之前不能有任何输出

 

(3)使用session_cache_limiter方法,在页面加入下段代码:

session_cache_limiter(‘private, must-revalidate‘); //注意要写在session_start方法之前 

 

下面对Cache-Control消息头域做一下补充说明:

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

Public:指示响应可被任何缓存区缓存。

Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

no-cache:指示请求或响应消息不能缓存 

no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 

max-age:指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale:指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

读完这篇文章大家再遇到类似问题就可以彻底解决了,特别提醒的是这个解决方法仅针对php网站,可记住了。

 

原文地址:http://www.manongjc.com/article/600.html

相关阅读:

php 实现接收多个name相同但Value不相同表单数据实例

php 获取表单数据实例分享

php 一个完整的表单验证实例

php提交form表单的两种方法

jQuery formValidator表单验证

jquery 一个简单的表单验证实例

php 防止表单重复提交几种方法

js form表单onsubmit事件用法详解

jquery 一个完整的无刷新ajax提交表单实例

jquery 使用ajax提交form表单

php 使用curl模拟post提交

php 通过fsockopen模拟表单post提交

php 表单$_POST[]实例应用

分享一个验证表单是否为空的javascript通用方法

php 表单提交给本页

javascript 获取表单元素的几种方法

javascript 一个完整的表单验证实例

使用js提交表单form

php中form表单实例应用

以上是关于PHP表单提交失败,如何返回原值?的主要内容,如果未能解决你的问题,请参考以下文章

php后台商品添加,需要两个表单,一个用于提交上传图片,一个用于提交商品数据到数据库。

php 表单提交错误后返回数据消失问题的解决方法

PHP + jQuery + Ajax 表单提交 - 同一页面返回结果

php表单提交后返回页面

php 如何防止表单重复提交呢

关于AsyncHttpClient框架的post 提交表单上传文件怎么弄