几天前,我说过了,有一个朋友在做单页产品推广。今天又想再搞一个PHP单页文件,需要输入“密码”才可以访问,具体的要求如下:

我想要的结果是,打开页面提示输入密码,密码框要垂直居中,水平居中。密码正确则继续执行单文件PHP或跳转某个页面。如果密码错误,提示错误的同时要求再次输入密码。

PHP单文件验证有两种方法

1、php auth验证:$_SERVER['PHP_AUTH_USER']、$_SERVER['PHP_AUTH_PW'];

具体可以参考:https://www.php.net/manual/zh/features.http-auth.php

2、$_COOKIE、$_SESSION

由于我的这位朋友要求是:

1、密码框要垂直居中,水平居中。

2、只要密码,不需要用户名。

因此:

我就只能选择:利用$_COOKIE 或 $_SESSION + html表单 来实现了。

我的思路如下:

如果密码正确,就生成一个有效的session值,这个值会随着设置的密码改变而改变。如果不正确,重新再次输入密码并验证。

当然,我们需要先判断session值是否正确?如果不正确,就要销毁session,重新再次输入密码并验证。

PHP单文件“用户名/密码”验证 代码

下面我所分享的PHP单文件验证方法,不仅仅只能是“密码验证”,还能是“用户名验证”、“用户名+密码验证”.......等等,原理都是相通的,无非是多加几个表单字段而已。

pwd.php

里面的html代码我是用的 bootstrap4 写的。

$pwd='www.fujieace.com'; //设置密码
$salt = 'r484TgKtHBEN9jAK';//密码用的盐
session_start();
if(isset($_SESSION['password'])){
$password = $_SESSION['password'];
if( $password === $pwd_md5 = md5($pwd.$salt)){
echo '可以打开此单页面了!';
echo "";//跳到指定页面
return;
}else{
session_unset();
session_destroy(); //删除session所有资源,包括session存储文件
// 如果$_SESSION['password']存在,但是密码值又不相符合,说明 设置的密码 可能改变了,因此,必须要先销毁session
$formcontrol = 'is-invalid';
}
}else{
if(isset($_POST['password'])){
$password = $_POST['password']; //得到前台输入后的密码
$password_md5 = md5($password.$salt); //前台加密码后的密码字符串
$pwd_md5 = md5($pwd.$salt); //用md5加密后再对比,只是为了简单防止绕过
if($password_md5 === $pwd_md5){
$_SESSION['password'] = $pwd_md5; //设置的密码改变了,session值也会自动改变。我就不设置session失效时间了,用默认的失效时间就可以了!
echo '可以打开此单页面了!';
echo "";//跳到指定页面
return;
}else{
$formcontrol = 'is-invalid';
}
}else{
$formcontrol = '';
}
}
?>

需要密码才可访问!


密码:

提交



最后效果:

html5 密码确认 html确认密码代码_php

html5 密码确认 html确认密码代码_PHP_02


总结:

我给我的朋友建议的是:要考虑PC端、移动端等各设备之间的兼容性,还有就是用户体验性,我并没有完全的垂直居中。我设置的是黄金分割线值:0.618,也就是61.8%。