Integrare cu SMF

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

deneo
New Member
Mesaje: 4
Membru din: Lun Apr 26, 2010 11:45 pm

Integrare cu SMF

Mesajde deneo » Lun Apr 26, 2010 11:54 pm

As vea sa fac un site care sa aiba si forum dar sa nu fie nevoie sa-si faca cont si pe site si pe forum(si sa mai poata trimite mesaje private direct folosind interfata sitului - sa nu fie nevoit sa intre in forum etc.). Am cautat pe google dar nu am gasit nimic concret.(dar am gasit un site care are implementat asa ceva).
Sunt incepator asa ca as avea nevoie de ajutor(in fine se intelege :)



sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Mar Apr 27, 2010 12:41 am

nu trebuie sa cauti pe google .... pur si simplu cand iti faci cont pe site faci un insert in tabela de useri ai forumului si vezi ce campuri ai acolo si ce valori le dai
Ultima oară modificat Mar Apr 27, 2010 12:10 pm de către sebyku, modificat 1 dată în total.
http://www.ingersidemon.ro pentru doar 100 lei spatiu de reclama. 10.000 afisari zilnice garantate si 5000 vizite.

Avatar utilizator
Niku02
Senior Member
Mesaje: 837
Membru din: Joi Noi 13, 2008 1:16 pm
Localitate: Constanta
Contact:

Mesajde Niku02 » Mar Apr 27, 2010 12:54 am

Folosind baza de date ai forumului , creezi un formular de logare si pe site . + verificarea de pe forum pentru a vedea daca esti logat sau nu . Si cu trimisul mesajelor strategia e cam aceeasi. Iei de pe forum fisierele care se folosesc la trimiterea mesajelor intre usere si le integrezi siteului .

Nu e foarte greu de facut, dar e ceva bataie de cap. Trebuie sa iti bagi nasul prin scriptul ala, si sa intelegi cum functioneaza .
Lucrez la o firma de web design si am un magazin de airsoft .

Louis
Average Member
Mesaje: 119
Membru din: Mie Feb 15, 2006 10:12 am
Contact:

Mesajde Louis » Mar Apr 27, 2010 7:48 pm

Eu asa am facut pentru a integra:

La inceputul fisierului:

Cod: Selectaţi tot

require_once(FORUMPATH.'/SSI.php');
require_once(FORUMPATH.'/Sources/Subs-Auth.php');
require_once(FORUMPATH.'/Sources/Subs-Members.php');
require_once(FORUMPATH.'/Sources/LogInOut.php');
require_once(FORUMPATH.'/Sources/Subs.php');


In functia de creare cont nou:

Cod: Selectaţi tot

global $scripturl, $txt, $modSettings, $db_prefix, $context, $sourcedir;
global $user_info, $options, $settings, $func;
$regOptions = array(
      'interface' => 'guest',
      username' => $row['user'],
      'email' => $row['email'],
      'realname' => $row['nume'],
      'password' => $parola,
      'password_check' => $parola,
      'check_reserved_name' => true,
      'check_password_strength' => true,
      'check_email_ban' => true,
      'send_welcome_email' => !empty($modSettings['send_welcomeEmail']),
      'require' => !empty($modSettings['coppaAge']) && !isset($_POST['skip_coppa']) ? 'coppa' : (empty($modSettings['registration_method']) ? 'nothing' : ($modSettings['registration_method'] == 1 ? 'activation' : 'approval')),
      'extra_register_vars' => array(),
      'theme_vars' => array(),
      );
registerMember($regOptions);


In functia de login:

Cod: Selectaţi tot

(isset($_POST['user'])) ? $username = AddSlashes($_POST['user']) : $username = '';
(isset($_POST['password'])) ? $pwd = AddSlashes($_POST['password']) : $pwd = '';   
$sql=mysql_fetch_assoc(mysql_query("SELECT ID_MEMBER, passwd, passwordSalt FROM z_members WHERE memberName='".StripSlashes($username)."'"));
if(!$sql)
    die("User not found!");
    $hashpass=smf_passgen(StripSlashes($username), StripSlashes($pwd));
if ($sql["passwd"]!=$hashpass[0])
     die("Password wrong!");
else
    set_smf_cookie($sql["ID_MEMBER"], $hashpass[0], $sql["passwordSalt"]);


function smf_passgen($username, $pwd) {
    $passhash = sha1(strtolower($username) . $pwd);
    $salt=substr(md5(rand()), 0, 4);
    return array($passhash,$salt);
}
      
function set_smf_cookie($id, $passhash, $salt) {
    setLoginCookie(189216000, $id, sha1($passhash . $salt));
}
189216000 e durata in care expira cookies-urile.


Logout:

Cod: Selectaţi tot

function logoutforum(){
global $ID_MEMBER;
$query="DELETE FROM z_log_online WHERE ID_MEMBER ='".$ID_MEMBER."' LIMIT 1";
$resursa=mysql_query($query);
    $_SESSION['log_time'] = 0;
    // Empty the cookie! (set it in the past, and for ID_MEMBER = 0)
    setLoginCookie(-3600, 0);
}


Schimbare parola:

Cod: Selectaţi tot

updateMemberData($row3['ID_MEMBER'], array('validation_code' => '\'\'', 'passwd' => '\'' . sha1(strtolower($row3['memberName']) . $pass) . '\''));


Daca mai vezi cate un $this->query pe acolo inlocuiesti cu mysql_query. Sper ca te prinzi care sunt variabilele pe care trebuie sa le setezi tu. Eu asa am facut, dar cu o versiune mai veche, nu stiu daca se potriveste totul in noile versiuni.
Succes.

deneo
New Member
Mesaje: 4
Membru din: Lun Apr 26, 2010 11:45 pm

Mesajde deneo » Mar Apr 27, 2010 9:42 pm

ms pt. raspunsuri - mi-am facut o idee :idea:
as avea nevoie si de alte lucru dar o sa incerc sa ma descurc de unul singur :)


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 24 vizitatori