问:有人可以看看我的更新密码文件吗?
它不会报告任何错误,也不会更改数据库。该文件与数据库连接,但是掉到了某个地方。
下面是代码部分:
<?php#脚本9.7-Password.php
//此页面允许用户更改密码。
session_start();
error_reporting(E_ALL);
require('includes / mysqli_connect.php'); //连接到数据库。
$ first_name = $ _SESSION ['first_name'];
$ page_title ='更改密码';
包括('includes / header.php');
//(下面回显了(显示错误消息,但不重定向)
如果($ _SESSION ['first_name']!= true)
{
echo(“ <h1>登录以访问此页面</ h1>”);
死();
}
//如果不存在member_ID,请重定向用户。
如果($ _SESSION ['first_name']!= true){
//需要功能。
require('includes / login_funtions.inc.php');
redirect_user();
死(); //由达伦(Darren)添加
}
// ** ADD PHP **检查是否为成员,然后获取其详细信息并以表格形式输入
如果(!empty($ _ SESSION ['first_name'])){
$ query = mysqli_query($ dbc,“ SELECT * FROM成员,其中first_name ='”。$ first_name。“'”));
$结果= mysqli_fetch_assoc($查询); //将结果放入数组
如果($ result){
$ fn = $ result ['first_name'];
$ ln = $ result ['last_name'];
$ e = $ result ['email'];
$ m = $ result ['mobile'];
$ p = $ result ['password'];
}
}
//检查表单提交。
如果($ _SERVER ['REQUEST_METHOD'] =='POST'){
require('includes / mysqli_connect.php'); //连接到数据库。
$ errors = array(); //初始化错误数组。
//这不是必需的,因为已输入登录详细信息
//检查电子邮件地址。
/ * if(空($ _POST ['email'])){
$ errors [] ='您忘记输入您的电子邮件地址。';
}其他{
$ e = mysqli_real_escape_string($ dbc,trim($ _ POST ['email']));
// $ e = trim($ _ POST ['email']); 尝试没有这个
}
//检查当前密码。
if(empty($ _ POST ['password'])){
$ errors [] ='您忘记输入当前密码。';
}其他{
$ p = mysqli_real_escape_string($ dbc,trim($ _ POST ['password']));;
// $ p = trim($ _ POST ['password']); 尝试没有这个
} * /
//检查新密码并与新的确认密码匹配。
如果(!empty($ _ POST ['pass1'])){
如果($ _POST ['pass1']!= $ _POST ['pass2']){
$ errors [] ='您的密码与确认的密码不匹配。';
}其他{
$ np = mysqli_real_escape_string($ dbc,trim($ _ POST ['pass1']));
// $ np = trim($ _ POST ['pass1']); 尝试没有这个
}
}其他{
$ errors [] ='您忘记输入新密码';
}
if(empty($ errors)){//如果一切正常。
$ result =“”; //清除变量
$ query =“”; //清除变量
//检查他们是否输入了正确的电子邮件地址/密码组合。
$ query =“从成员中通过电子邮件='$ e'和密码='$ p'来选择member_ID”; //'".$e。“'AND password ='”。$ p。“'”;尝试不使用此
$ result = @mysqli_query($ dbc,$ query);
$ num = @mysqli_num_rows($ result);
if($ num == 1){//进行了匹配。
//获取member_id。
$ row = mysqli_fetch_array($ result,MYSQLI_NUM);
//进行更新查询。
$ query =“ UPDATE成员SET密码='$ np'WHERE member_ID ='$ row [0]'”; //'“。$ row [0]。”'“; Darren拿出这个。
$ result = @mysqli_query($ dbc,$ query);
死();
if(mysqli_affected_rows($ dbc)== 1){//如果运行正常。(摘自教科书)
//打印消息。
回声'<h1>谢谢!</ h1>';
回显“ <p>您的密码已更新。</ p>”;
}其他{
//公开消息。
回声'<h1>系统错误</ h1>';
echo'<p>由于系统错误,您的密码无法更改。对于给您带来的任何不便,我们深表歉意。</ p>';
//调试消息。
回声'<p>'。mysqli_error($ dbc)。'<br/> <br/>查询:'。$ q。'</ p>'; //这不见了。// <br/>查询:“。$ q。'//
}
mysqli_close($ dbc); //关闭数据库连接。
//包含页脚并退出脚本(不显示表单)。
include('includes / footer.php'); //检查这个达伦。
出口();
}其他{
回声'<h1>错误!</ h1>';
echo'<p class =“ error”>电子邮件地址和密码与记录的电子邮件地址和密码不匹配。</ p>';
}
} else {//报告错误。
回声'<h1>错误!</ h1>';
echo'<p class =“ error”>发生以下错误:<br/>';
foreach($ errors as $ msg){//打印每个错误。
回声“-$ msg <br /> \ n”;
}
回声'</ p> <p>,请重试。</ p> <p> <br /> </ p>';
} // if(empty($ errors))IF的结尾。
mysqli_close($ dbc); //关闭数据库连接。
} //主提交条件的结尾。
?>
<br>
<h1>更改密码</ h1>
<br>
<hr>
<br>
<form action =“ password.php” menthod =“ post”>
<table cellspacing =“ 10” cellpadding =“ 5” border =“ 0” style =“ width:95%;” >
<br>
<tr>
<td>电子邮件地址:</ td>
<td> <input type =“ email” name =“电子邮件” size =“ 60” value =“ <?php echo $ e?>” /> </ td>
</ tr>
<br>
<td>密码</ td>
<td> <输入类型=“密码” name =“密码” size =“ 60” value =“ <?php echo $ p?>” /> </ td>
</ tr>
<tr>
<td>新密码</ td>
<td> <input type =“ password” name =“ pass1” size =“ 60” /> </ td>
</ tr>
<td>重新输入新密码</ td>
<td> <输入类型=“密码” name =“ passd2” size =“ 60” /> </ td>
</ tr>
</ table>
<br>
<input type =“ submit” name =“ submit” value =“更改密码” />
<br>
</ form>
<?php include('includes / footer.php'); ?>
答:我只是浏览了您提到的脚本,发现代码流中很少出现问题。您已经在顶部包含了数据库连接,所以为什么又要包含相同的文件。将提交按钮的名称更改为任何其他名称。您正在检查名字会话,如果存在会话,那么您正在从数据库中获取用户详细信息,我注意到您没有在任何地方使用这些详细信息。请删除未使用的代码。我不明白为什么密码更新后会把die功能放进去。请改善您的代码,并尝试我提到的要点。