Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Giúp các bé đáng thương ấy với

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Bán đấu giá ủng hộ từ thiện

Ngập tràn ưu đãi cho tín đồ công nghệ tại sony show 2014

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tin tức công nghệ mới
kết quả từ 1 tới 6 trên 6
  1. #1
    taituphuongdong's Avatar
    taituphuongdong vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    Oct 2008
    Bài
    37
    Cảm ơn
    8
    Điểm
    3/3 bài viết

    Default Đổi mật khẩu thành viên trong web php

    Em đã làm một trang để đổi mật khẩu cho thành viên trong web php mà E đang làm. Em có một bảng members lưu thông tin thành viên có cả password của thành viên được mã hóa
    Gồm có: password cũ
    password mới
    Gõ lại password mới

    Ở password mới và gõ lại password mới thì E đã làm được kiểm tra xem 2 pass có giống nhau không và update vào sql của table members
    Nhưng password cũ E lấy phần đã mã hóa so sánh với phần password đã mã hóa có trong phần password của table members. Nhưng toàn báo lỗi sai mật khẩu cũ. Mặc dù E thử rất nhiều lần rồi. Mong các bác xem giúp E code:

    <?php
    session_start();
    header('Content-Type: text/html; charset=UTF-8');
    echo '<a href="index.php">Quay lại<br></a>';
    require_once("mysql.php");
    if ( !$_SESSION['user_id'] )
    {
    echo "Bạn chưa đăng nhập<a href='login.php'>Dang nhap</a> hoặc <a href='register.php'>Đăng ký</a>";
    }
    else
    {
    $user_id = intval($_SESSION['user_id']);
    $sql_query = @mysql_query("SELECT * FROM members WHERE id='{$user_id}'");
    $member = @mysql_fetch_array( $sql_query );
    //----Noi dung thong bao sau khi sua

    echo "<b>Đang đổi mật khẩu tài khoản {$member['username']}</b>. <br> ";



    if ($_GET['do']=="sua") {
    $passcu = md5( addslashes( $_POST['passcu'] ) );
    $pass = md5( addslashes( $_POST['pass'] ) );
    $repass = md5( addslashes( $_POST['repass'] ) );
    if(md5( addslashes( $_POST['passcu'] ) )==mysql_query("SELECT password FROM members WHERE username='$user_id'"))
    {
    if ($_POST['pass']==$_POST['repass'] && $_POST['pass']!="")
    {
    $sqlx="UPDATE `members` SET `password` = '".$pass."' WHERE `id` = '$user_id' LIMIT 1 ;";
    $suapass=mysql_query($sqlx);
    if ($suapass)
    echo "(Đã đổi pass) ";
    else
    echo "(Chưa đổi pass) ";
    }
    else echo "(Chưa đổi pass. Lỗi: mật khẩu không thể để trống) ";
    }
    else echo "(mật khẩu cũ không đúng) ";
    }

    else
    echo"
    <form method='POST' action='?do=sua'>
    <table border='1' width='100%' id='table1' cellspacing='0' cellpadding='0' style='border-collapse: collapse' bordercolor='#C0C0C0'>
    <tr>
    <td>Password cũ:</td>
    <td><input type='password' name='passcu' size='20'></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input type='password' name='pass' size='20'></td>
    </tr>
    <tr>
    <td>Retype Password:</td>
    <td><input type='password' name='repass' size='20'></td>
    </tr>
    </table>
    <p align='center'><input type='submit' value='Sửa'><input type='reset' value='Khôi phục' name='B2'></p>
    </form>
    ";
    }
    ?>


    phần code so sánh password cũ thành viên nhập và password cũ lưu trong table members E đã làm chữ đậm. Các bác xem dùm

  2. #2
    iten's Avatar
    iten vẫn chưa có mặt trong diễn đàn Rìu Sắt
    Tham gia
    Feb 2009
    Bài
    149
    Cảm ơn
    3
    Điểm
    90/66 bài viết

    Default

    if(md5( addslashes( $_POST['passcu'] ) )==mysql_query("SELECT password FROM members WHERE username='$user_id'"))

    Vế sau, mysql_query sẽ trả về 1 resource, chứ ko phải 1 string, và bạn ko thể compare equal 2 giá trị này được. Để làm điều này, cách dễ hơn là
    PHP Code:
    $result=mysql_query("SELECT username FROM members WHERE (username='$user_id' AND password=md5('$_POST[passcu]'))");
    if (
    mysql_num_rows($result)==1) {
    // allow to change password;

    Tức là bạn hãy kiểm tra bên trong Mysql. Đúng hơn, bạn hãy kiểm tra bằng đúng thuật toán bạn lưu password.

    Nếu bạn md5 trên php, lưu vào mysql sau đó, thì bạn có thể làm như sau
    PHP Code:
    $pass=md5($_POST['passcu']);
    $result=mysql_query("SELECT username FROM members WHERE (username='$user_id' AND password='$pass'");
    if (
    mysql_num_rows($result)==1) {
    // allow to change password;

    Good luck.

  3. #3
    taituphuongdong's Avatar
    taituphuongdong vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    Oct 2008
    Bài
    37
    Cảm ơn
    8
    Điểm
    3/3 bài viết

    Default

    Em hiểu ý bác. Ở đây, bác bảo em sử dụng câu lệnh select lựa chọn ra username có thông tin username=$user_id và password chính là pass mà người sử dụng nhập đã được mã hóa. Nếu có bản ghi nào thì sẽ cho đổi pass còn nếu sai thì báo lỗi mật khẩu. Nhưng em thử rồi vẫn báo lỗi sai mật khẩu
    Giờ thay vì sử dụng biến trung gian $result, em đã làm trực tiếp và so sánh >0 như này. Nhưng vẫn báo lỗi. Bác xem hộ E phát
    PHP Code:
    $passc=md5addslashes$_POST['passcu'] ) ); 
        if ( 
    mysql_num_rows(mysql_query("SELECT * FROM members WHERE (username='$user_id' AND password='$passc')"))>0)
    {
    //Lệnh thực hiện


    ---------- Bài viết đã được nhập tự động bởi hệ thống ----------

    Thôi được rồi bác ạ. Em cảm ơn bác nhiều lắm. Em quên mất đơn giản thế này mà không nghĩ ra Ha ha
    PHP Code:
    $passc=md5addslashes$_POST['passcu'] ) ); 
        if ( 
    $passc == $member['password']) 
    Thay đổi nội dung bởi taituphuongdong; 05-04-2010 lúc 11:29. Lý do: Hệ thống nhập bài tự động

  4. #4
    lengocduy10's Avatar
    lengocduy10 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Nov 2010
    Bài
    10
    Cảm ơn
    1
    Điểm
    0/0 bài viết

    Default

    Trích taituphuongdong View Post
    Em đã làm một trang để đổi mật khẩu cho thành viên trong web php mà E đang làm. Em có một bảng members lưu thông tin thành viên có cả password của thành viên được mã hóa
    Gồm có: password cũ
    password mới
    Gõ lại password mới

    Ở password mới và gõ lại password mới thì E đã làm được kiểm tra xem 2 pass có giống nhau không và update vào sql của table members
    Nhưng password cũ E lấy phần đã mã hóa so sánh với phần password đã mã hóa có trong phần password của table members. Nhưng toàn báo lỗi sai mật khẩu cũ. Mặc dù E thử rất nhiều lần rồi. Mong các bác xem giúp E code:

    <?php
    session_start();
    header('Content-Type: text/html; charset=UTF-8');
    echo '<a href="http://www.vn-zoom.com/">Quay lại<br></a>';
    require_once("mysql.php");
    if ( !$_SESSION['user_id'] )
    {
    echo "Bạn chưa đăng nhập<a href='login.php'>Dang nhap</a> hoặc <a href='register.php'>Đăng ký</a>";
    }
    else
    {
    $user_id = intval($_SESSION['user_id']);
    $sql_query = @mysql_query("SELECT * FROM members WHERE id='{$user_id}'");
    $member = @mysql_fetch_array( $sql_query );
    //----Noi dung thong bao sau khi sua

    echo "<b>Đang đổi mật khẩu tài khoản {$member['username']}</b>. <br> ";



    if ($_GET['do']=="sua") {
    $passcu = md5( addslashes( $_POST['passcu'] ) );
    $pass = md5( addslashes( $_POST['pass'] ) );
    $repass = md5( addslashes( $_POST['repass'] ) );
    if(md5( addslashes( $_POST['passcu'] ) )==mysql_query("SELECT password FROM members WHERE username='$user_id'"))
    {
    if ($_POST['pass']==$_POST['repass'] && $_POST['pass']!="")
    {
    $sqlx="UPDATE `members` SET `password` = '".$pass."' WHERE `id` = '$user_id' LIMIT 1 ;";
    $suapass=mysql_query($sqlx);
    if ($suapass)
    echo "(Đã đổi pass) ";
    else
    echo "(Chưa đổi pass) ";
    }
    else echo "(Chưa đổi pass. Lỗi: mật khẩu không thể để trống) ";
    }
    else echo "(mật khẩu cũ không đúng) ";
    }

    else
    echo"
    <form method='POST' action='?do=sua'>
    <table border='1' width='100%' id='table1' cellspacing='0' cellpadding='0' style='border-collapse: collapse' bordercolor='#C0C0C0'>
    <tr>
    <td>Password cũ:</td>
    <td><input type='password' name='passcu' size='20'></td>
    </tr>
    <tr>
    <td>Password:</td>
    <td><input type='password' name='pass' size='20'></td>
    </tr>
    <tr>
    <td>Retype Password:</td>
    <td><input type='password' name='repass' size='20'></td>
    </tr>
    </table>
    <p align='center'><input type='submit' value='Sửa'><input type='reset' value='Khôi phục' name='B2'></p>
    </form>
    ";
    }
    ?>


    phần code so sánh password cũ thành viên nhập và password cũ lưu trong table members E đã làm chữ đậm. Các bác xem dùm

    Cho mình hỏi, đổi mật khẩu không dùng md5 và làm form đổi mật khẩu thì trong csdl chỉ có 1 trường mật khẩu thôi đã đử chưa vây?
    Mong các bác ai biết chỉ dùm thank

  5. #5
    phongdatgl's Avatar
    phongdatgl vẫn chưa có mặt trong diễn đàn Rìu Chiến Bạc Chấm
    Tham gia
    Dec 2008
    Đến từ
    Gia Lai 81
    Bài
    4.263
    Cảm ơn
    411
    Điểm
    3.002/1.218 bài viết

    Default

    Trích lengocduy10 View Post
    Cho mình hỏi, đổi mật khẩu không dùng md5 và làm form đổi mật khẩu thì trong csdl chỉ có 1 trường mật khẩu thôi đã đử chưa vây?
    Mong các bác ai biết chỉ dùm thank
    Không dc bạn, như vậy thì nó không có điều kiện where nó sẽ update tất cả. Nên cho thêm 1 trường là ID và primary key
    Nhận code website Công Ty, website Cá Nhân, website Tin Tức, ...
    Nhận code nạp VTC, Zing, checker, crawle ...

    YM: cuoctinhcaydang_912000

  6. #6
    thuyloan2411's Avatar
    thuyloan2411 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Sep 2009
    Bài
    12
    Cảm ơn
    4
    Điểm
    0/0 bài viết

    Default

    Trích taituphuongdong View Post
    [/PHP]

    ---------- Bài viết đã được nhập tự động bởi hệ thống ----------

    Thôi được rồi bác ạ. Em cảm ơn bác nhiều lắm. Em quên mất đơn giản thế này mà không nghĩ ra Ha ha
    PHP Code:
    $passc=md5addslashes$_POST['passcu'] ) ); 
        if ( 
    $passc == $member['password']) 
    mình đổi theo của bạn nhưng nó vẫn báo lỗi mật khẩu cũ ko đúng là sao

 

 

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •