1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Các cao thủ PHP chỉ em sửa code register.php này với, em đang cần gấp!

Chủ đề trong 'Hỏi đáp Tin học' bởi luckystar84, 20/12/2005.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. luckystar84

    luckystar84 Thành viên mới

    Tham gia ngày:
    20/12/2005
    Bài viết:
    3
    Đã được thích:
    0
    Các cao thủ PHP chỉ em sửa code register.php này với, em đang cần gấp!

    Mình có đoạn code này : code Đăng kí vào 1 website đó mà, nhưng sao mỗi lần nhấn nút Submit nó lại ko add vào cơ sở dữ liệu (database: english), mà cứ gọi form register hoài vậy?
    Rồi cho mình hỏi nữa: ở trong code này có cái <input type=''hidden'' name=''action''>, rồi fía dưới có gọi $_POST[''action''] , cái input này bị hidden , ít ra fải có value thì mới truyền vào được chứ, đằng này nó ko có value làm sao gán cho nó là ''register'' or giá trị khác được?(các bác coi code sẽ hiểu)
    uh, nói chung các bác cao thủ coi code rui chỉ bảo dùm em(các bác chỉnh làm sao mà register được đó) code ngắn lắm, em nghĩ các bác chỉ cần bỏ time ra chút xiu coi code chỉ dùm em thui à!
    Gíup với, mình đang cần gấp lém! Mong được sự gíup đỡ of mọi người nha!
    Sau đây là code:

    //register.php

    <?php
    //register.php
    include_once "./common_db.inc";
    function in_use($username) {
    global $user_tablename;

    $query = "SELECT username FROM $user_tablename WHERE username = ''$username''";
    $result = mysql_query($query);
    if(!mysql_num_rows($result)) return 0;
    else return 1;
    }
    function register_form() {
    global $userposition;
    global $PHP_SELF;
    $link_id = db_connect();
    mysql_select_db("english");
    $position_array = enum_options(''userposition'', $link_id);
    mysql_close($link_id);
    ?>

    <CENTER><H3>Create your account!</H3></CENTER>
    <FORM METHOD="POST" ACTION="<?php echo $PHP_SELF ?>">
    <INPUT TYPE="HIDDEN" NAME="action">
    <DIV ALIGN="CENTER"><CENTER><TABLE BORDER="1" WIDTH="90%">
    <TR>
    <TH NOWRAP>User name </TH>
    <TD><INPUT TYPE="TEXT" NAME="username" SIZE="20"></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Password</TH>
    <TD WIDTH="70%"><INPUT TYPE="PASSWORD"
    NAME="userpassword" SIZE="15"></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Retype Password</TH>
    <TD WIDTH="70%"><input type="PASSWORD"
    name="userpassword2" size="15"></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Email</TH>
    <TD WIDTH="70%"><INPUT TYPE="TEXT" NAME="useremail" SIZE="20"
    </TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Profile</TH>
    <TD WIDTH="70%"><TEXTAREA ROWS="5" COLS="40"
    NAME="userprofile"></TEXTAREA></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" COLSPAN="2" NOWRAP>
    <INPUT TYPE="SUBMIT" VALUE="Submit">
    <INPUT TYPE="RESET" VALUE="Reset"></TH>
    </TR>
    </TABLE>
    </CENTER></DIV>
    </FORM>
    <?php
    }
    function create_account() {
    //$userid = $_POST[''userid''];
    $username = $_POST[''username''];
    $userpassword = $_POST[''userpassword''];
    $userpassword2 = $_POST[''userpassword2''];
    //$userposition = $_POST[''userposition''];
    $useremail = $_POST[''useremail''];
    $userprofile = $_POST[''userprofile''];
    global $default_dbname, $user_tablename;

    //if(empty($userid)) error_message("Enter your desired ID!");
    if(empty($userpassword)) error_message("Enter your desired password!");
    if(strlen($userpassword) < 4 ) error_message("Password too short!");
    if(empty($userpassword2))
    error_message("Retype your password for verification!");
    if(empty($username)) error_message("Enter your full name!");
    if(empty($useremail)) error_message("Enter your email address!");
    if(empty($userprofile)) $userprofile = "No Comment.";

    if($userpassword != $userpassword2)
    error_message("Your desired password and retyped password mismatch!");


    $link_id = db_connect($default_dbname);

    if(in_use($username))
    error_message("$username is in use. Please choose a different username.");

    $query = "INSERT INTO user VALUES(''$username'', password(''$userpassword''),
    ''$useremail'', ''$userprofile'')";
    $result = mysql_query($query);
    if(!$result) error_message(sql_error());

    $usernumber = mysql_insert_id($link_id);
    html_header();
    ?>

    <CENTER><H3>
    <?php echo $username ?>, thank you for registering with us!
    </H3></CENTER>
    <DIV ALIGN="CENTER"><CENTER><TABLE BORDER="1" WIDTH="90%">
    <TR>
    <TH WIDTH="30%" NOWRAP>Desired Password</TH>
    <TD WIDTH="70%"><?php echo $userpassword ?></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Full Name</TH>
    <TD WIDTH="70%"><?php echo $username ?></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Email</TH>
    <TD WIDTH="70%"><?php echo $useremail ?></TD>
    </TR>
    <TR>
    <TH WIDTH="30%" NOWRAP>Profile</TH>
    <TD WIDTH="70%"><?php echo htmlspecialchars($userprofile) ?></TD>
    </TR>
    </TABLE>
    </CENTER></DIV>
    <?php
    html_footer();
    }
    if (empty($_POST)) $_POST[''action''] = "";
    /*
    if(empty($_POST[''action'']))
    {
    print "<b>Last action: ".$POST[''action'']."<br>";
    }*/
    switch($_POST[''action'']) {
    case "register":
    create_account();
    break;
    default:
    html_header();
    register_form();
    html_footer();
    break;
    }
    ?>


    //còn đây là code common_db.inc
    <?php
    $dbhost = ''localhost'';
    $dbusername = ''root'';
    $dbuserpassword = '''';
    $default_dbname = ''english'';
    $records_per_page = 5;
    $user_tablename = ''account'';
    $access_log_tablename = ''access_log'';
    $MYSQL_ERRNO = '''';
    $MYSQL_ERROR = '''';
    $new_win_width = 600;
    $new_win_height = 400;
    function html_header(){
    global $new_win_width, $new_win_height;
    ?>
    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    <!--
    function open_window(url) {
    var NEW_WIN = null;
    NEW_WIN = window.open ("", "RecordViewer");
    NEW_WIN.location.href = url;
    }
    //-->
    </SCRIPT>
    <TITLE>User Record Viewer</TITLE>
    </HEAD>
    <BODY>
    <?php
    }

    function html_footer() {
    ?>
    </BODY>
    </HTML>
    <?php
    }
    function db_connect(){
    global $dbhost, $dbusername, $dbuserpassword, $default_dbname;
    global $MYSQL_ERRNO, $MYSQL_ERROR;
    $link_id = mysql_connect($dbhost, $dbusername, $dbuserpassword);
    if(!$link_id) {
    $MYSQL_ERRNO = 0;
    $MYSQL_ERROR = "Connection failed to the host $dbhost.";
    return 0;
    }
    else if(empty($dbname) && !mysql_select_db($default_dbname)) {
    $MYSQL_ERRNO = mysql_errno();
    $MYSQL_ERROR = mysql_error();
    return 0;
    }
    else return $link_id;
    }
    function sql_error() {
    global $MYSQL_ERRNO, $MYSQL_ERROR;
    if(empty($MYSQL_ERROR)) {
    $MYSQL_ERRNO = mysql_errno();
    $MYSQL_ERROR = mysql_error();
    }
    return "$MYSQL_ERRNO: $MYSQL_ERROR";
    }
    function error_message($msg) {
    html_header();
    echo "<SCRIPT>alert("Error: $msg");history.go(-1)</SCRIPT>";
    html_footer();
    exit;
    }
    function enum_options($field, $link_id) {
    $query = "SHOW COLUMNS FROM account LIKE ''$field''";
    $result = mysql_query($query, $link_id);
    $query_data = mysql_fetch_array($result);

    if(eregi("(''.*'')", $query_data["Type"], $match)) {
    $enum_str = ereg_replace("''", "", $match[1]);
    $enum_options = explode('','', $enum_str);
    return $enum_options;
    } else return 0;
    }
    ?>

    Ráng giúp dùm với nhé! Thanks a lot!
  2. dohaian

    dohaian Thành viên rất tích cực

    Tham gia ngày:
    02/05/2003
    Bài viết:
    2.182
    Đã được thích:
    1
    đọc code của bác thì chắc là không được rồi
    Bác có thể viết lại code của bác như sau nhé:
    giả sử input username của bác có tên là user
    khi đó code sẽ như sau:
    <?
    if (!$_POST[''user'']){ //cái này sẽ hiện ra khi mà chưa nhấn nút sunmit
    hiện ra đoạn HTML form đăng ký
    }
    else {
    ...........
    //đoạn này bác cho phần xử lý code kiểm tra thông tin đầu vào
    //nếu đúng thì thông báo OK
    //nếu sai thì thông báo error
    }
    chứ như code của bác viết liền một mạch như thế trình dịch nó cứ chạy từ trên xuống dưới, đầu tiên sẽ hiện ra form đăng ký và các giá trị sẽ về rống thì làm sao đoạn dưới xử lý đựơc. Nó chỉ hiện ra trang đăng ký là đúng rồi
    ?>
    còn dòng code này
    <INPUT TYPE="HIDDEN" NAME="action">
    thực ra cái này chính là để kiểm tra xem bác có nhấn nút submit không đấy mà
    bác có thể thay
    if (!$_POST[''user'']){
    }
    bằng
    if (!$_POST[''action'']){
    }
    OK hết
  3. luckystar84

    luckystar84 Thành viên mới

    Tham gia ngày:
    20/12/2005
    Bài viết:
    3
    Đã được thích:
    0
    ui trời!
    Em cảm ơn bác nhìu lém! Bác giỏi wé àh! Em khâm fục.Em đã làm theo lời bác hướng dẫn và đã làm được rùi!Em cảm ơn bác nhìu lém nha!
    À bác ơi, hì hì, nhân thể cho em hỏi lun là khi mình insert vào database Mysql rui đó, sao mở database ra xem thì field toàn mã là mã ko vậy?Nếu vậy thì làm sao admin bít được pass of người đó!
    Bác giải đáp gíup em cho trót lun nhé! Cảm ơn nhìu!hì!
  4. luckystar84

    luckystar84 Thành viên mới

    Tham gia ngày:
    20/12/2005
    Bài viết:
    3
    Đã được thích:
    0
    À bác ơi , em quên để ý chỗ này, pác bảo em khai báo biến $_POST[''''user''''] (hoặc $_POST[''''action''''] cũng được) làm trong if:
    if(!$_POST[''''action''''])
    {
    register_form();
    }
    else
    {
    html_header();
    create_account();
    html_footer();
    }
    nó chạy ok(register được, add vào CSDL được), nhưng dòng đầu tiên nó thông báo như vầy thì trông kì wé:
    Notice: Undefined index: action in E:web_nhom
    egister1.php on line 140
    bác sửa giúp em lỗi này nhé!^_^!
    Được luckystar84 sửa chữa / chuyển vào 20:56 ngày 20/12/2005
  5. dohaian

    dohaian Thành viên rất tích cực

    Tham gia ngày:
    02/05/2003
    Bài viết:
    2.182
    Đã được thích:
    1
    - nếu muốn hiện luôn pass của họ thì phải thay dòng :
    $query = "INSERT INTO user VALUES(''''$username'''', password(''''$userpassword''''),
    bằng dòng
    $query = "INSERT INTO user VALUES(''''$username'''', ''''$userpassword''''),
    password(''''$userpassword'''') chính là để mã hoá pass,
    còn cái
    Notice: Undefined index: action in E:web_nhom
    egister1.php on line 140
    thực ra không phải lỗi mà là nó không hiểu biến index thôi. chỉ khi nào hiện WARNING mới cần phải sửa
    để nó không hiện nữa bác chèn vào file common_db.inc dòng sau:
    error_reporting(E_ALL & ~E_NOTICE);
    như thế nó sẽ không hiện notice nữa

Chia sẻ trang này