使用PHP、MySQL实现修改密码 + 防止通过url强行进入系统
滑板狂热,今夜夜寒觉夜长,广西围捕2条大怪鱼
●使用php+mysql实现修改密码
页面:
index.php 登陆页面,输入默认密码登陆系统
check.php 核查页面,通过查询数据库检测密码是否正确 ——> 正确,则进入系统 或 错误,提示“密码错误”,返回登录页面
system.php 系统页面,内含“修改密码”链接
change.php 输入新密码修改页面
changepwd.php 修改密码页面
关键代码:
index.php
<form action="check.php" method="post">
<p >请输入密码:</p><input type="password" name="psd" />
<button type="submit" name="submit" value="登录" />登录</button>
</form>
check.php
<?php
$servername = "localhost";
$username = "用户";
$password = "密码";
$dbname = "数据库名";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "select password from admin"; //此处涉及名称是admin的数据表,内部有name 和password两个字段,值分别是admin 和 1
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$adminkey = $row["password"]; //设$adminkey是管理员密码,将从数据表中读取的数据赋值进去
}
}
$conn->close();
/************************请在上方修改管理员密码,默认是'1' *************************/
if( isset($_post["submit"]) && $_post["submit"] = "登录"){
if($_post['psd'] == $adminkey){ //如果输入的密码和数据库中的默认密码相同,则进入系统
header("location:system.php");
exit;
}else{
?>
<script language="javascript"> //如果密码错误,给出提示,返回登录页面
alert("password error");
window.location.href="index.php";
</script>
<?php
}
}
?>
system.php
<a href="change.php" class="chang">修改密码</a>
change.php
<form action="changpwd.php" method="post" >
请输入新密码:<input type="password" name="new_psd">
<button type="submit" name="submit" value="修改" class="btn "/>修改</button>
</form>
changepwd.php
<?php
if( isset($_post["submit"]) && $_post["submit"] = "修改"){
$nempas = $_post["new_psd"];
$servername = "localhost";
$username = "用户名";
$password = "密码";
$dbname = "数据库名";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// check connection
mysqli_query($conn,"update admin set password='{$nempas}' where name='admin' ");
//使用update语句修改数据库中的password字段,并且新的值来自 change.php页面输入的新密码
where语句必须写,否则会更新所有的字段
mysqli_close($conn);
?>
<script language="javascript">
alert("change success");
window.location.href="system.php";
</script>
<?php
}else{
echo 'alert("change error");
}
?>
●防止通过url强行进入系统
比如,网站名是www.xxx.com,浏览者注意到这是某系统的登录页面后,可能一试 http://www.xxx.com/system.php 就绕过输入密码进入了系统。。。。【小白级】
可以加一个检查页面 checkinfo.php
先在密码核查页面 check.php 更改:
if( isset($_post["submit"]) && $_post["submit"] = "登录"){
if($_post['psd'] == $adminkey){
session_start();
$_session["loginkey"] = 101; //101随缘弄的,别的也行
// session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的
所以,可利用此,只有通过密码验证,才会生成$_session["loginkey"],从而在之后的页面如system.php 的开头加入检查页面 checkinfo.php ,检查有没有生成的$_session["loginkey"]
就可以辨别有没有绕过密码强行进入
header("location:system.php");
exit;
}else{
?>
<script language="javascript">
alert("password error");
window.location.href="index.php";
</script>
<?php
}
}
?>
再写checkinfo.php
<?php
session_start();
if(!isset($_session["loginkey"])){
?>
<script language="javascript">
alert("please land first");
window.location.href="index.php";
</script>
<?php
}
?>
举例
在system.php开头加入:
<?php
include 'checkinfo.php';
?>
<!doctype html>
<html>
...... .. .. ..
</html>
注: session_start(); 启动会话时,之前代码不能有任何输出!(如echo '...'; alert("....");)
建议直接扔到开头
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
相关文章:
-
-
-
-
Yii框架应用组件用法实例分析
本文实例讲述了yii框架应用组件用法。分享给大家供大家参考,具体如下:应用组件 应用主体是, 它部署一组提供各种不同功能的 应用组件 来处理请求。 例如,url...
[阅读全文]
-
-
-
-
-
Yii 框架入口脚本示例分析
本文实例讲述了yii 框架入口脚本。分享给大家供大家参考,具体如下:入口脚本入口脚本是应用启动流程中的第一环, 一个应用(不管是网页应用还是控制台应用)只有一个...
[阅读全文]
-
PHP强制转化的形式整理
php强制转化有几种形式php强制转化有3种形式:1、在要转换的变量之前加上用括号括起来的目标类型;2、使用转强函数,如“intval()”,“strval()...
[阅读全文]
-
php7 新增功能实例总结
本文实例总结了php7 新增功能。分享给大家供大家参考,具体如下:一、核心 增加了group use语法声明。rfc: https://wiki.php.ne...
[阅读全文]
网友评论