php更改密码脚本尝试了许多不同的无任何工作

php更改密码脚本尝试了许多不同的无任何工作,php,mysql,login,passwords,Php,Mysql,Login,Passwords,我有很大的麻烦,让一个脚本工作,以改变密码,并得到真的厌倦了它,所以如果在任何一个IDE的将是伟大的 我想要的是一个脚本,它检查登录的用户,然后有3个字段:旧密码、新密码和重复密码,然后简单地提交,密码应该在数据库中更改 我使用mySQL,这是一个网站上的直播,所以没有什么是本地的 如果你需要更多的信息,请告诉我 这是检查连接和登录的代码: <?php ob_start(); $host="***"; $username="***"; $password="***"; $d

我有很大的麻烦,让一个脚本工作,以改变密码,并得到真的厌倦了它,所以如果在任何一个IDE的将是伟大的

我想要的是一个脚本,它检查登录的用户,然后有3个字段:旧密码、新密码和重复密码,然后简单地提交,密码应该在数据库中更改

我使用mySQL,这是一个网站上的直播,所以没有什么是本地的

如果你需要更多的信息,请告诉我

这是检查连接和登录的代码:

    <?php

ob_start();
$host="***"; 
$username="***"; 
$password="***"; 
$db_name="***"; 
$tbl_name="***";


mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 


$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);


$count=mysql_num_rows($result);


if($count==1){


session_register("myusername");
session_register("mypassword");
$msg = "Du är inloggad!";
header("location:main_login.php?msg=$msg");
}
else {
$msg = "Fel användarnamn eller lösenord!";
header("location:main_login.php?msg=$msg");
}
ob_end_flush();
?>
我尝试了这段代码并对其进行了一点修改,但没有成功,也不知道我做错了什么。 :

注意:不需要MD5或其他安全密码

<?php
$_SESSION["myusername"];
$conn = mysql_connect("***","***","***");
mysql_select_db("***",$conn);
if(count($_POST)>0) {
$result = mysql_query("SELECT *from users WHERE username='" . $_SESSION["myusername"] . "'");
$row=mysql_fetch_array($result);
if($_POST["currentPassword"] == $row["password"]) {
mysql_query("UPDATE users set password='" . $_POST["newPassword"] . "' WHERE userId='" . $_SESSION["myusername"] . "'");
$message = "Password Changed";
} else $message = "Current Password is not correct";
}
?>
<html>
<head>
<title>Change Password</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script>
function validatePassword() {
var currentPassword,newPassword,confirmPassword,output = true;

currentPassword = document.frmChange.currentPassword;
newPassword = document.frmChange.newPassword;
confirmPassword = document.frmChange.confirmPassword;

if(!currentPassword.value) {
    currentPassword.focus();
    document.getElementById("currentPassword").innerHTML = "required";
    output = false;
}
else if(!newPassword.value) {
    newPassword.focus();
    document.getElementById("newPassword").innerHTML = "required";
    output = false;
}
else if(!confirmPassword.value) {
    confirmPassword.focus();
    document.getElementById("confirmPassword").innerHTML = "required";
    output = false;
}
if(newPassword.value != confirmPassword.value) {
    newPassword.value="";
    confirmPassword.value="";
    newPassword.focus();
    document.getElementById("confirmPassword").innerHTML = "not same";
    output = false;
}   
return output;
}
</script>
</head>
<body>
<form name="frmChange" method="post" action="" onSubmit="return validatePassword()">
<div style="width:500px;">
<div class="message"><?php if(isset($message)) { echo $message; } ?></div>
<table border="0" cellpadding="10" cellspacing="0" width="500" align="center" class="tblSaveForm">
<tr class="tableheader">
<td colspan="2">Change Password</td>
</tr>
<tr>
<td width="40%"><label>Current Password</label></td>
<td width="60%"><input type="password" name="currentPassword" class="txtField"/><span id="currentPassword"  class="required"></span></td>
</tr>
<tr>
<td><label>New Password</label></td>
<td><input type="password" name="newPassword" class="txtField"/><span id="newPassword" class="required"></span></td>
</tr>
<td><label>Confirm Password</label></td>
<td><input type="password" name="confirmPassword" class="txtField"/><span id="confirmPassword" class="required"></span></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Submit" class="btnSubmit"></td>
</tr>
</table>
</div>
</form>
</body></html>

嗯,这里有一个简单的函数,你可以使用吗?未经测试,但它是围绕PDO的使用编写的,您必须对其进行一些调整,我已经多年没有使用Mysql了

function changePassword($previous, $previoustwo, $new, $userid)
{
    if ($previous != $previoustwo) { 
        return false; 
    }
    $query = $this->conn->prepare("UPDATE users SET password = ? WHERE id = ?");
    $hashPass = password_hash($new, PASSWORD_DEFAULT);
    $values = array($hashPass, $userid);
    if ($query->execute($values)) {
        return true;
    } else {
        return false;
    }
}
然后,您可以通过这样做来调用它,例如,可能使用$\u POST数据:

changePassword('oldpassword321', 'oldpassword321', 'newawesomepassword123', 11);

像这样的怎么样

if ($mynewpassword == $mynewpassword2) {
    mysql_query("set password = password('$mynewpassword')");
}

请使用此代码查看您的mysql错误

  $result = mysql_query("SELECT *from users WHERE username='" . $_SESSION["myusername"] . "'");
$row=mysql_fetch_array($result);
if($_POST["currentPassword"] == $row["password"]) {
mysql_query("UPDATE users set password='" . $_POST["newPassword"] . "' WHERE userId='" . $result["id"] . "'");
$message = "Password Changed";
} else {
$message = "Current Password is not correct";
}

问题是,这是我的代码,用于验证登录用户和sql连接没有任何更改密码代码,因为我没有找到任何有效的密码,因此如果有人可以使用我发布的代码,我会受到伤害:如果您想查看,我已更新了我的问题。错误:“where子句”我的列中的未知列“userId”是:user\u id、username、password问题是您在where子句中发送的是用户名而不是用户id。请检查编辑的消息并共享结果我这段时间到达页面,当我进入页面时,页面上已经写入了更改密码的消息,然后我键入了我的旧密码和新密码,它说当前密码不正确,将很快进行测试SK:记住,在尝试之前,这是使用PDO!:另外,在更新之前,不要忘记检查以前的密码是否与当前密码相同。