解决登陆phpMyAdmin出现”#2002 无法登录 MySQL 服务器”方法
代码如下 | 复制代码 |
$cfg['Servers'][$i]['host'] = 'localhost';
更换成
$cfg['Servers'][$i]['host'] = '127.0.0.1';
|
比如下面的情况就会导致表单重复提交:
点击提交按钮两次。
点击刷新按钮。
使用浏览器后退按钮重复之前的操作,导致重复提交表单。
使用浏览器历史记录重复提交表单。
浏览器重复的HTTP请求。
网页被恶意刷新。
下面是几种解决的方法:
一:利用js设置按钮点击后变成灰色
$(document).ready(function(){
$(input:submit).click(){
setTimeout(function(){obj.disabled=true;},100)
};
});
二:利用session
在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。
如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。
这使你的web应用有了更高级的XSRF保护
加载提交的页面时候,生成一个随机数,
$code = mt_rand(0,1000000);
存储在表单的隐藏输入框中:
< input type="hidden" name="code" value="“>
在接收页面的PHP代码如下:
<?php
session_start();
if(isset($_POST['code'])) {
if($_POST['code'] == $_SESSION['code']){
// 重复提交表单了
}else{
$_SESSION['code'] =$_POST['code']; //存储code
}
}?>
三:利用cookies
原理和session差不多,但是cookies一旦用户浏览器禁用cookies,这功能就失效了
if(isset($_POST['submit'])){
setcookie("tempcookie","",time()+30);
header("Location:".$_SERVER[PHP_SELF]);exit();
}
if(isset($_COOKIE["tempcookie"])){
setcookie("tempcookie","",0);echo "您已经提交过表单";
}
四:利用header函数跳转
一旦用户点击提交按钮,处理完数据后跳到其他页面
if (isset($_POST['submit'])) {
header('location:success.php');//处理数据后,转向到其他页面
}
五:利用数据库来添加约束
直接在数据库里添加唯一约束或创建唯一索引,一旦发现用户重复提交了,直接抛出警告或者提示,
或者只处理第一次提交的数据,这是最直接有效的方法,要求前期的数据库设计和架构要考虑周全
六:Post/Redirect/Get模式。
在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
//处理数据,如插入数据后,立即转向到其他页面
header('location:submits_success.php');
}
这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。
有时我们发布内容的时候,需要提取外部图片,并保存到自己服务器上,这样可以避免如果外部图片打不开时影响到自己的网站,现在我们来分享Drupal实现这个功能的函数。在Drupal中自动获取外部链接图片,然后提取出来上传到自己网站的函数分享。
function get_external_image($url) {
$external_image = file_get_contents($url);
$parsed_url = parse_url($url);
$name_dest = rand(1000,9999)."_". basename($parsed_url["path"]);
$file = file_save_data($external_image, 'public://'.$name_dest , FILE_EXISTS_REPLACE);
if (is_object($file) && file_exists($file->uri)) {
$file->status = 1;
$file = file_save($file);
drupal_write_record('file_usage', $file);
return (array) $file;
}
return null;
}
get_external_image("http://www.drupalla.com/logo.gif");
这两天帮别人开发微信平台好友板块,存储用户爱好的内容都是unicode,取出来后需要转化成汉字
网上查了些方法,比较复杂,也不是特别好用,在这推荐一种方法:
function unicode_decode($name){
$json = '{"str":"'.$name.'"}';
$arr = json_decode($json,true);
if(empty($arr)) return '';
return $arr['str'];
}
把unicode编码当成一个字符串,然后将字符串保存在json里,并赋值给数组arr,输出arr的值就可以转成汉字。
$aihao = unicode_decode("\u7f8e\u98df");
echo $aihao;
输入结果为:音乐
如果大家想知道汉字转换成Unicode编码PHP程序可参考http://www.111cn.net/phper/php-cy/44986.htm
原理在于生成一个随机字符串放在session里。提交表单后来验证这个字符串。可以做到防止他人自己写form来欺骗提交,重复提交或者双击提交。
Token.php
<?php
/*
* Created on 2013-3-25
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
function getToken($len = 32, $md5 = true) {
# Seed random number generator
# Only needed for PHP versions prior to 4.2
mt_srand((double) microtime() * 1000000);
# Array of characters, adjust as desired
$chars = array (
'Q',
'@',
'8',
'y',
'%',
'^',
'5',
'Z',
'(',
'G',
'_',
'O',
'`',
'S',
'-',
'N',
'<',
'D',
'{',
'}',
'[',
']',
'h',
';',
'W',
'.',
'/',
'|',
':',
'1',
'E',
'L',
'4',
'&',
'6',
'7',
'#',
'9',
'a',
'A',
'b',
'B',
'~',
'C',
'd',
'>',
'e',
'2',
'f',
'P',
'g',
')',
'?',
'H',
'i',
'X',
'U',
'J',
'k',
'r',
'l',
'3',
't',
'M',
'n',
'=',
'o',
'+',
'p',
'F',
'q',
'!',
'K',
'R',
's',
'c',
'm',
'T',
'v',
'j',
'u',
'V',
'w',
',',
'x',
'I',
'$',
'Y',
'z',
'*'
);
# Array indice friendly number of chars;
$numChars = count($chars) - 1;
$token = '';
# Create random token at the specified length
for ($i = 0; $i < $len; $i++)
$token .= $chars[mt_rand(0, $numChars)];
# Should token be run through md5?
if ($md5) {
# Number of 32 char chunks
$chunks = ceil(strlen($token) / 32);
$md5token = '';
# Run each chunk through md5
for ($i = 1; $i <= $chunks; $i++)
$md5token .= md5(substr($token, $i * 32 - 32, 32));
# Trim the token
$token = substr($md5token, 0, $len);
}
return $token;
}
?>
form.php
<?php
include_once("token.php");
$token = getToken();
session_start();
$_SESSION['token'] = $token;
?>
<form action="action.php" method="post"
<input type="hidden" name="token" value="<?=$token?>" />
<!-- 其他input submit之类的 -->
</form>
action.php
<?php
session_start();
if($_POST['token'] == $_SESSION['token']){
unset($_SESSION['token']);
echo "这是一个正常的提交请求";
}else{
echo "这是一个非法的提交请求";
}
?>
相关文章
- 在很多网站用户先访问一个要登录的页面,但当时没有登录后来登录了,等待用户登录成功之后肯定希望返回到上次访问的页面,下面我就来给大家介绍登录后跳转回原来要访问的页...2016-11-25
- 本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = ‘ht...2016-11-25
- phpmyadmin config.inc.php配置示例...2013-09-29
- 简单的php获取linux服务器状态的代码,不多说-直接上函数:复制代码 代码如下:function get_used_status(){ $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况 $rs =...2014-05-31
Ruby on Rails实现最基本的用户注册和登录功能的教程
这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30- 什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
- 这篇文章主要为大家详细介绍了vue实现用户登录切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-22
- 前一段时间使用NetStat命令查看服务器端口时,发现服务器udp端口开放了好多,最少在1000个以上,当时事情比较多,没有管它,今天终于有点时间,仔细检查了一下,排除了这个问题. ...2016-01-27
- 【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
- “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- phpmyadmin是一款很不错的WEB对mysql数据库管理软件,如果你想创建数据库与设置用户权限我们必须操作用户的很高的权限,如ROOT权限,下面我来给大家介绍介绍。 先来配...2016-11-25
- 多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分。而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的...2015-10-21
- 出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
Vue-Element-Admin集成自己的接口实现登录跳转
关于这个Vue-element-admin中的流程可能对于新的同学不是很友好,所以本文将结合实例代码,介绍Vue-Element-Admin集成自己的接口实现登录跳转,感兴趣的小伙伴们可以参考一下...2021-06-23- 这篇文章主要介绍了浅谈js二维码扫码登录是什么原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
- 昨天有一朋友说自己的phpmyadmin不能登录并且无任何提示了,问我怎么解决,下面我来分享一下关于phpmyadmin不能登录问题总结. phpmyadmin不能登录没有提示 解决方法:...2016-11-25
- 这篇文章主要介绍了Hyper-V尝试连接到服务器出错无效类的解决方法,需要的朋友可以参考下...2016-09-28