【问题标题】:want my users to be abble to change the userpassword希望我的用户能够更改用户密码
【发布时间】:2015-12-23 22:50:44
【问题描述】:

我的网站上有一个页面允许用户更改密码

表单要求输入用户名、当前密码、新密码、确认新密码。

如果用户输入所有信息,脚本会弹出,请正确填写表单

并显示错误消息

(注意:未定义的变量:wtbusers in /home/www/hostname/dr/filename 在第 16 行

警告:mysql_num_rows():提供的参数不是有效的 MySQL 第 20 行 /home/www/hostname/dr/filename 中的结果资源)

我的代码贴在下面,如果有人可以提供帮助,将不胜感激!谢谢!

蒂娜

更改密码信息屏幕:

<div id="inlogscherm">
<form name="form1" method="post" action="changepw.php">
    <div class="textm">Change password</div><br>
    <div class="text">Username:</div><div class="invulbalkje"><? echo "{$_SESSION['username']}"; ?></div><br />
    <input name="username" type="text" id="username" value="<? echo "{$_SESSION['username']}"; ?>">
  <div class="text">Password:</div><input name="pin" type="password" id="pin" class="invulbalkje"><br />
    <div class="text">New Password:</div><input name="newpassword" type="password" id="newpassword" class="invulbalkje"><br />
    <div class="text">Repeat New Password:</div><input name="repeatnewpassword" type="password" id="repeatnewpassword" class="invulbalkje"><br />
    <input type="submit" name="Submit" value="Change" class="button">
</form>

这里是更改的 php。(changepw.php)

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include 'db.php';


$username = $_POST['username'];
$pin = $_POST['pin'];
$newpassword = $_POST['newpassword'];
$repeatnewpassword = $_POST['repeatnewpassword'];

$encrypted_password=md5($pin);
$encrypted_newpassword=md5($newpassword);

$result = mysql_query("SELECT pin FROM $wtbusers WHERE  username='$username' and pin = '$pin'");
if(!$result) 
{ 
echo"<script>alert('Please Fill Form Correctly')</script>"; } 
if(mysql_num_rows($result)){
if($newpassword==$repeatnewpassword){
    $sql=mysql_query("UPDATE $wtbusers SET pin='$pin' where   username='$username'");        
    if($sql) 
    { 
            header("location:success.php");
    }
    else
    {

       header("location:error3.php");
    }       
} else {

    header("location:error_password_not_matched.php");
}
} else {

echo"<script>alert('Please Fill Form Correctly')</script>"; 
}
?> 

如果您发现问题,请与我联系。对此我将不胜感激!

【问题讨论】:

  • yuu 需要将表名分配给您的“$wtbusers”变量,例如 $wtbusers = 'users'
  • 请问您能说得更具体些吗? $wtbusers 已经是我的表名。谢谢
  • 如果表名以 $ 开头,则应避免使用 " 并更改为 ' 因为引号中的所有内容都将由 php 解析并会说 $wtbusers 未定义,因为在您的 php 文件中没有定义那个变量。
  • $wtbusers 可能已在脚本的早期分配,而 Tina 没有给我们该代码。 @Tina 您可以在对数据库运行查询之前检查die(var_dump($wtbusers))$wtbusers应该是与数据库中表名匹配的字符串值
  • @kaymus 谢谢,现在成功了,但现在的问题是我的数据库中没有更新

标签: php apache change-password


【解决方案1】:

请注意,您尚未创建名为 $wtbusers 的变量。

$wtbusers = 'users'; //这应该被定义(将其更改为您的任何表名)

试试下面的代码。

error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include 'db.php';

// print_r($_POST);

if (isset($_POST['username'])) {
    $username = $_POST['username'];
}
if (isset($_POST['pin'])) {
    $pin = $_POST['pin'];
}
if (isset($_POST['newpassword'])) {
    $newpassword = $_POST['newpassword'];
}
if (isset($_POST['repeatnewpassword'])) {
    $repeatnewpassword = $_POST['repeatnewpassword'];
}

$encrypted_password = md5($pin);
$encrypted_newpassword = md5($newpassword);
$wtbusers = '`users`'; //this should be defined (change this to your whatever table name)

$result = mysql_query("SELECT pin FROM $wtbusers WHERE  username='$username' and pin = '$pin'");
if (!$result) {
    echo "<script>alert('Please Fill Form Correctly')</script>";
}

if (mysql_num_rows($result) != 0) {

    if ($newpassword == $repeatnewpassword) {

        $sql = mysql_query("UPDATE $wtbusers SET pin='$pin' where   username='$username'");

        if ($sql) {
            header("location:success.php");
        }
        else {
            header("location:error3.php");
        }

    }
    else {
        header("location:error_password_not_matched.php");
    }
}
else {
    echo "<script>alert('Please Fill Form Correctly')</script>";
}

【讨论】:

  • 非常感谢,错误信息不再显示,现在成功了,但是还有一个问题,我的数据库中的信息没有更新。我该怎么办?
  • @Tina,欢迎您..好的,首先您需要更改代码中的位...我已经更新了上面的代码..请复制粘贴上面并查看结果..跨度>
  • 我已将我的脚本更新为上述内容,它回显请正确填写表格并显示此错误消息(警告:/home/www/sitename/directory/changepw 中 mysql_num_rows() 的参数计数错误。 php 在第 21 行)这是我第 21 行中的内容( if(mysql_num_rows() != 0) )
  • 我已将我的脚本更新为上述内容,它回显请正确填写表格并显示此错误消息(警告:/home/www/sitename/directory/changepw 中 mysql_num_rows() 的参数计数错误。 php 在第 21 行)这是我第 21 行中的内容( if(mysql_num_rows() != 0) )
  • 谢谢,它现在成功了@jlocker,但仍然没有更新我的数据库。 newpassword 和 repeatpassword 没有更新,旧密码也没有用更改的密码更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
相关资源
最近更新 更多