• User Attivo

    scrivere sul database e contemporaneamente inviare email

    ragazzi fino ad oggi nel mio sito:
    http://vinarcid0810.altervista.org per far registrare gli utenti ho utilizzato questo form:
    http://vinarcid0810.altervista.org/registrazione.php

    che mi invia i dati via email e dopo manualmente faccio la registrazione sul forum e anche sul sito di fantaclub.it che gestisce il fantacalcio ...

    visto l'aumento del numero di iscritti , voglio velocizzare il sistema:

    scrivere i dati necessari (email, password, usarname) per l'iscrizione al forum, direttamente nella tabella del forum phpbb ed inoltre voglio che il sistema mandi i dati cmq nella mia email per effettuare la registrazione nell'altro sito.

    è possibile???


  • User Attivo

    sì certo che è possibile!

    nello script che ti invia la mail, aggiungi semplicemente delle righe che, in pseudocodice, fanno questo:

    1.apertura connessione con il database
    2.inserimento dati nel database
    3.chiusura della connessione col database

    come vedi è molto semplice e, in codice PHP, si può tradurre così :

    $conn = mysql_connect("localhost","username","password");

    mysql_select_db("nomedatabase",$conn);

    $query = "INSERT INTO nome_tabella (email, username,password)
    VALUES (${u_mail}, ${u_name},${u_pass})";
    mysql_query($query,$conn);

    mysql_close($conn);

    i campi in rosso li devi personalizzare coi valori corretti

    ciao


  • User Attivo

    ok la cosa in effetti è così .... però per una questione di sicurazza la cosa ovviamente si deve migliorare..
    allora analizziamo il file del phpbb, che si occupa della registrazione nel database è

    • usercp_register.php che trovate in allegato.

    ed in particolare (penso) la parte di codice che si occupa di inserire i dati del form di registrazione al database è la seguente:

    [php]
    //
    // Get current date
    //
    $sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
    VALUES ($user_id, '" . str_replace("'", "''", $username) . "', " . time() . ", '" . str_replace("'", "''", $new_password) . "', '" . str_replace("'", "''", $email) . "', '" . str_replace("'", "''", $icq) . "', '" . str_replace("'", "''", $website) . "', '" . str_replace("'", "''", $occupation) . "', '" . str_replace("'", "''", $location) . "', '" . str_replace("'", "''", $interests) . "', '" . str_replace("'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("'", "''", $yim) . "', '" . str_replace("'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popup_pm, $user_timezone, '" . str_replace("'", "''", $user_dateformat) . "', '" . str_replace("'", "''", $user_lang) . "', $user_style, 0, 1, ";
    if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
    {
    $user_actkey = gen_rand_string(true);
    $key_len = 54 - (strlen($server_url));
    $key_len = ( $key_len > 6 ) ? $key_len : 6;
    $user_actkey = substr($user_actkey, 0, $key_len);
    $sql .= "0, '" . str_replace("'", "''", $user_actkey) . "')";
    }
    else
    {
    $sql .= "1, '')";
    }

    if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
    {
    message_die(GENERAL_ERROR, 'Could not insert data into users table', '', LINE, FILE, $sql);
    }

    $sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
    VALUES ('', 'Personal User', 1, 0)";
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', LINE, FILE, $sql);
    }

    $group_id = $db->sql_nextid();

    $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
    VALUES ($user_id, $group_id, 0)";
    if( !($result = $db->sql_query($sql, END_TRANSACTION)) )
    {
    message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', LINE, FILE, $sql);
    }

    if ( $coppa )
    {
    $message = $lang['COPPA'];
    $email_template = 'coppa_welcome_inactive';
    }
    else if ( $board_config['require_activation'] == USER_ACTIVATION_SELF )
    {
    $message = $lang['Account_inactive'];
    $email_template = 'user_welcome_inactive';
    }
    else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
    {
    $message = $lang['Account_inactive_admin'];
    $email_template = 'admin_welcome_inactive';
    }
    else
    {
    $message = $lang['Account_added'];
    $email_template = 'user_welcome';
    }

    include($phpbb_root_path . 'includes/emailer.'.$phpEx);
    $emailer = new emailer($board_config['smtp_delivery']);

    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);

    $emailer->use_template($email_template, stripslashes($user_lang));
    $emailer->email_address($email);
    $emailer->set_subject(sprintf($lang['Welcome_subject'], $board_config['sitename']));

    if( $coppa )
    {
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
    'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
    'PASSWORD' => $password_confirm,
    'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

    'FAX_INFO' => $board_config['coppa_fax'],
    'MAIL_INFO' => $board_config['coppa_mail'],
    'EMAIL_ADDRESS' => $email,
    'ICQ' => $icq,
    'AIM' => $aim,
    'YIM' => $yim,
    'MSN' => $msn,
    'WEB_SITE' => $website,
    'FROM' => $location,
    'OCC' => $occupation,
    'INTERESTS' => $interests,
    'SITENAME' => $board_config['sitename']));
    }
    else
    {
    $emailer->assign_vars(array(
    'SITENAME' => $board_config['sitename'],
    'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
    'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
    'PASSWORD' => $password_confirm,
    'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

    'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
    );
    }

    $emailer->send();
    $emailer->reset();

    if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
    {
    $sql = "SELECT user_email, user_lang
    FROM " . USERS_TABLE . "
    WHERE user_level = " . ADMIN;

    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, 'Could not select Administrators', '', LINE, FILE, $sql);
    }

    while ($row = $db->sql_fetchrow($result))
    {
    $emailer->from($board_config['board_email']);
    $emailer->replyto($board_config['board_email']);

    $emailer->email_address(trim($row['user_email']));
    $emailer->use_template("admin_activate", $row['user_lang']);
    $emailer->set_subject($lang['New_account_subject']);

    $emailer->assign_vars(array(
    'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("'", "'", $username), 0, 25)),
    'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

    'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
    );
    $emailer->send();
    $emailer->reset();
    }
    $db->sql_freeresult($result);
    }

    $message = $message . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

    message_die(GENERAL_MESSAGE, $message);
    } // if mode == register
    }
    } // End of submit

    [/php]

    quindi la tabella del database è USERS_TABLE

    :mmm:

    p.s. NI vedi che per quella situazione ho appuntamento giorno 8/02 poi ci sentiamo telefonicamente


  • User Attivo

    chiariamo la cosa prima di scevellarci,

    1. io ho la necessiatà primaria di sapere i seguenti dati:
      username, password e email

    perchè li devo inserire nell'altro database... per l'username ed email non ci sono problemi ... per la password son caxxi amari, perche mysql hasha in md5 la pass quindi vedo una serie di numeri (password criptata)
    come potrei risolvere ciò...???????

    pensavo ma se quando l'utente manda la registrazione vengono mandate contemporaneamente le variabili in questione ad un email predefinita l???? troppo facile????
    quindi aggiungere questo codice al file usercp_register.php:

    [php]
    //varie info per email
    $oggi = date("j F Y G:i");
    $sito = "http://vinarcid0810.altervista.org";
    $ip = "$_SERVER[REMOTE_ADDR]";
    $browser = "$_SERVER[HTTP_USER_AGENT]";
    $to = "[email protected]";
    $soggetto = "Modulo registrazioni utenti da $sito";

    $body = "Modulo inviato il $oggi da $ip - $browser \n\n";
    $body .= "Nick Name: $_POST[username] \nPassword: $_POST[user_password] \nEmail: $_POST[email] \n";

    mail("$to","$soggetto","$body");
    [/php]


  • User Attivo

    sì beh puoi certamente fare qualcosa di simile...ma inviare le password in chiaro via mail non è molto sicuro (visto che dicevi che ti serviva uno script sicuro)...


  • User Attivo

    si so che in effetti spedire la pass tramite email non è molto sicuro.. però non riesco a trovare soluzione ...
    ho integrato il codice postato precedentemente ma non funziona ... non mi da nessun errore però non mi manda nessun dato 😞


  • User Attivo

    non ti manda proprio la mail oppure ti arriva senza username e password?


  • User Attivo

    @ienavr said:

    non ti manda proprio la mail oppure ti arriva senza username e password?
    non mi manda l'email ...:?


  • User Attivo

    sicuramente sbaglio io ad integrare il codice con il file usercp_register.php ... come faresti tu????????