2011-07-31 128 views
0

嗨,我有這個http://kramansronet.comze.com/HTML PHP MYSQL更改密碼

註冊,一切工作

當你在頁面的成員部分我怎樣才能添加更改密碼字段?

這裏是我的會員登錄

<?php include "base.php"; ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>User Management System (Tom Cameron for NetTuts)</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<div id="main"> 
<?php 
if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])) 
{ 
    ?> 

    <h1>Member Area</h1> 
    <p>Thanks for logging in! Your username is <b><?=$_SESSION['Username']?></b> and your email address is <b><?=$_SESSION['EmailAddress']?></b>.</p><br> 

    <h3>Account Tools:</h3> 
    Username: <?=$_SESSION['Username']?><br> 
    Password: <?=$_SESSION['password']?><br> 
    Email: <?=$_SESSION['EmailAddress']?><br> 
    Account Type: <?=$_SESSION['accounttype']?><br> 


    <ul> 

     <li><a href="logout.php">Logout.</a></li> 
    </ul> 

    <?php 
} 
elseif(!empty($_POST['username']) && !empty($_POST['password'])) 
{ 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = md5(mysql_real_escape_string($_POST['password'])); 

    $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); 

    if(mysql_num_rows($checklogin) == 1) 
    { 
     $row = mysql_fetch_array($checklogin); 
     $email = $row['EmailAddress']; 
     $accounttype = $row['accounttype']; 

     $_SESSION['Username'] = $username; 
     $_SESSION['EmailAddress'] = $email; 
     $_SESSION['accounttype'] = $accounttype; 
     $_SESSION['LoggedIn'] = 1; 

     echo "<h1>Success</h1>"; 
     echo "<p>Please Refresh your browser to go to memeber page.</p>"; 
     echo "<meta http-equiv='refresh' content='=2;index.php' />"; 
    } 
    else 
    { 
     echo "<h1>Error</h1>"; 
     echo "<p>Sorry, your account could not be found. Please <a href=\"index.php\">click here to try again</a>.</p>"; 
    } 
} 
else 
{ 
    ?> 

    <h1>Member Login</h1> 

    <p>Thanks for visiting! Please either login below, or <a href="register.php">click here to register</a>.</p> 

    <form method="post" action="index.php" name="loginform" id="loginform"> 
    <fieldset> 
     <label for="username">Username:</label><input type="text" name="username" id="username" /><br /> 
     <label for="password">Password:</label><input type="password" name="password" id="password" /><br /> 
     <input type="submit" name="login" id="login" value="Login" /> 
    </fieldset> 
    </form> 

    <?php 
} 
?> 
</div> 
</body> 
</html> 
+0

考慮你的用戶將需要改變他們的密碼時,*不*登錄爲好,如果它被遺忘。 –

回答

2

的頁面應該要求用戶輸入他的當前密碼頁面(作爲預防措施的一種安全措施)和另外兩個輸入欄輸入兩次新密碼 - 再次,作爲一項預防措施。

這是在HTML中使用input字段進行的,類型passwordform中。

然後,在PHP中,檢查給定的密碼是否屬於當前登錄的用戶(來自會話)。如果是這種情況,並且兩個新密碼都匹配,即用戶沒有鍵入其中的任何一個,則使用SQL UPDATE語句更新數據庫。

像往常一樣處理密碼,proper hashing should be used

+0

嗨我怎麼會這樣做?你能給我一個示例代碼嗎? – user870401

+0

您在註冊時也是這樣。 –

+0

是的,我不知道在哪裏把代碼即時新的MySQL可以編輯我的代碼?繼承人我的註冊碼http://pastebin.com/XCNdkniZ – user870401

0

您必須填寫了註冊表格。因此,合併更改密碼應該非常簡單。在成員的設置頁面(或其他)只需輸入3個字段。他們是史說的。 也應該有一個提交按鈕。該表格應該有像「changepassword.php」 後所有3個字段的操作。對於目前的密碼 查詢數據庫,如果它只是匹配

UPDATE users SET password = '$newpass' WHERE username = '$username' 
+0

我把UPDATE用戶SET密碼='$ newpass'WHERE用戶名='$用戶名'在changepassword.php? – user870401

+0

是的,但正如你應該知道這是MySQL查詢。我不確定你是否有足夠的PHP和MySQL知識。 –