【发布时间】: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