2013-10-13 107 views
-2

好吧,所以我試圖做一個密碼更改腳本,我得到一些錯誤,所以我錯了? 這是我的格式文件:密碼更改腳本

<?php 
include_once('php_includes/check_login_status.php'); 
include_once('php_includes/db_conx.php'); 
if(isset($_SESSION["username"])){ 
echo ""; 

} 
else { 
header("location:login.php"); 
} 
?> 

<html> 
<head> 
<title>Password Change</title> 
</head> 
<body> 
<div id="form"> 
<form method="POST" id="form1" action="password_system.php"> 
<p>Current password: &nbsp; <input type="password" id="curpass" /> </p> 
<p>New password: &nbsp; <input type="password" id="newpass" /> </p> 
<p>Confirm new password: &nbsp; <input type="password" id="conpass" /> </p> 
<input type="submit" value="Submit"> 
</form></div> 
</body> 
</html> 

,這是更新password_system.php(動作腳本):

<?php 
include_once('php_includes/check_login_status.php'); 
include_once('php_includes/db_conx.php'); 
if(isset($_SESSION["username"])){ 
echo ""; 

} 
else { 
header("location:login.php"); 
} 
$sql = "SELECT password FROM users WHERE username='$log_username'"; 
$query = mysqli_query($db_conx, $sql); 
$numrows = mysqli_num_rows($query); 
while ($row = $query->fetch_assoc()) { 
    $dbpass = $row['password']; 
} 
$query->free(); 
$curpass = md5($_POST['curpass']); 
$newpass = $_POST['newpass']; 
$conpass = $_POST['conpass']; 
if ($newpass != $conpass) { 
echo "Your passwords don't match!"; 
exit(); 
} else { 
echo "Ohkay"; 
$newpas = true; 
$newpassmd5ed = md5($newpass); 
} 
if ($curpass != $dbpass) { 
echo "Your current password is incorrent!"; 
exit(); 
} else { 
echo "Okay"; 
$curok = true; 
} 
if ($curok and $newpas == true) { 
$sql = "UPDATE users 
SET password = '$newpassmd5ed' 
WHERE username= '$log_username'"; 
$query = mysqli_query($db_conx, $sql); 
} 
?> 

現在我得到這樣的:

OhkayYour當前密碼的incorrent !

check_login_status.php

<?php 
session_start(); 
include_once("db_conx.php"); 
// Files that inculde this file at the very top would NOT require 
// connection to database or session_start(), be careful. 
// Initialize some vars 
$user_ok = false; 
$log_id = ""; 
$log_username = ""; 
$log_password = ""; 
// User Verify function 
function evalLoggedUser($conx,$id,$u,$p){ 
    $sql = "SELECT ip FROM users WHERE id='$id' AND username='$u' AND password='$p' AND activated='1' LIMIT 1"; 
    $query = mysqli_query($conx, $sql); 
    $numrows = mysqli_num_rows($query); 
    if($numrows > 0){ 
     return true; 
    } 
} 
if(isset($_SESSION["userid"]) && isset($_SESSION["username"]) && isset($_SESSION["password"])) { 
    $log_id = preg_replace('#[^0-9]#', '', $_SESSION['userid']); 
    $log_username = preg_replace('#[^a-z0-9]#i', '', $_SESSION['username']); 
    $log_password = preg_replace('#[^a-z0-9]#i', '', $_SESSION['password']); 
    // Verify the user 
    $user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password); 
} else if(isset($_COOKIE["id"]) && isset($_COOKIE["user"]) && isset($_COOKIE["pass"])){ 
    $_SESSION['userid'] = preg_replace('#[^0-9]#', '', $_COOKIE['id']); 
    $_SESSION['username'] = preg_replace('#[^a-z0-9]#i', '', $_COOKIE['user']); 
    $_SESSION['password'] = preg_replace('#[^a-z0-9]#i', '', $_COOKIE['pass']); 
    $log_id = $_SESSION['userid']; 
    $log_username = $_SESSION['username']; 
    $log_password = $_SESSION['password']; 
    // Verify the user 
    $user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password); 
    if($user_ok == true){ 
     // Update their lastlogin datetime field 
     $sql = "UPDATE users SET lastlogin=now() WHERE id='$log_id' LIMIT 1"; 
     $query = mysqli_query($db_conx, $sql); 
    } 
} 

?> 
+0

你搜索在谷歌的錯誤?你試圖修復它的是什麼? – mavrosxristoforos

+0

你在哪裏設置'$ log_username'? –

+0

@Amal in check_login_status.php(我剛剛添加了它) – victiMusPrime

回答

1

你使用的MySQLi不正確。

$query = mysqli_query($db_conx, $sql); 
$numrows = mysqli_num_rows($query); 
while ($row = $result->fetch_assoc($query)) { 
    echo $row['password']; 
} 

應該是:

$query = mysqli_query($db_conx, $sql); 
$numrows = mysqli_num_rows($query); 
while ($row = $query->fetch_assoc()) { 
    echo $row['password']; 
} 
$query->free(); 
+0

謝謝,它沒有顯示警告,但我仍然得到這個:「OhkayYour目前的密碼是不合法的!」我現在錯在哪裏?我把$ dbpass代替echo作爲$ row ['password'],後來如果($ curpass!= $ dbpass){ echo「你目前的密碼不太合適! exit(); } else { echo「Okay」; 如果($ newpass!= $ conpass){ echo「您的密碼不匹配!」; exit(); } else { echo「Ohkay」; $ newpas = true; $ newpassmd5ed = md5($ newpass); } – victiMusPrime