पुरालेख के लिए SMF (सरल मशीन फोरम)

उपयोगकर्ताओं की मदद करने के लिए कितनी आसानी से एक SMF साइट पर एंबेड वीडियो

में पोस्ट SMF (सरल मशीन फोरम) 2008, 10 अगस्त पर ShortLikeAFox द्वारा

तो तुम एक सरल मशीनों आधारित फोरम साइट की स्थापना के प्रभारी रहे हैं और एक आसान रास्ता चाहते करने के लिए अनुमति लोकप्रिय वीडियो साइटों (YouTube, गूगल वीडियो, IGN, आदि) से एम्बेड वीडियो करने के लिए उपयोगकर्ताओं. तुम justifiably उपयोगकर्ता केवल उन व्यक्तिगत साइटों से एम्बेड कोड का उपयोग करने की इजाजत देने में डर हो सकता है, क्योंकि भगवान जानता है क्या परिणाम होगा. इस समस्या के समाधान के रूप में किया जा सकता है सरल है. कार्ल बेन्सन एक संशोधन पैकेज है कि वीडियो embedding बनाता है के रूप में काटने और वीडियो पृष्ठ प्रकट होता है यह पैकेज अंदर के यूआरएल चिपकाने के रूप में सरल लिखा पर 150 साइटों के लिए काम करता है और (AEVAC बुलाया ऑडियो एंबेड वीडियो / ऑडियो क्लिप्स). सबसे हाल ही में रिलीज 3.1.2 संस्करण है और यह पाया जा सकता है यहाँ.

यह एक मैं अत्यधिक सुझा mod है. सही तरीके से उपयोग करने के लिए यह बहुत कम आवृत्ति और मंच व्यवस्थापक के सिर दर्द की तीव्रता की क्षमता है.

कैसे PHP में उपयोगकर्ताओं का उपयोग SMF फोरम में एक के लिए मैन्युअल डालें एक समूह

में पोस्ट SMF (सरल मशीन फोरम) , PHP 2008, ShortLikeAFox द्वारा 30 जुलाई

इस ट्यूटोरियल ग्रहण आप पोस्ट के साथ अपने परिचित हैं: SMF फोरम कैसे एक के लिए मैन्युअल डालें एक प्रयोक्ता में PHP का उपयोग करना .

मैं हाल ही में 800 या तो एक SMF फोरम में बैंड के चलते एक डेटाबेस से की चुनौती का सामना करना पड़ा. मैं समस्याओं जब इस कदम है कि मैं पहली पोस्ट में कवर नहीं किया बनाने की एक जोड़ी का सामना करना पड़ा:

  1. बैंड नाम के चरित्र से एक चरित्र के लिए सुरक्षित SMF डेटाबेस में स्थानांतरित नहीं किया जा गारंटी थे. नाम किसी तरह का समारोह संशोधित तो किया था नियोजित किया जाना है.
  2. बैंड के पासवर्ड के लिए नहीं है. पासवर्ड पीढ़ी के कुछ प्रकार की जरूरत है तो नियोजित किया जाना है.

कदम मैं फोरम में बैंड के सभी रजिस्टर बारे में चला गया इस तरह एक छोटे से चला गया:

ओपन के बैंड डाटाबेस

के लिए प्रत्येक (बैंड) (

उत्पन्न पासवर्ड

"सुरक्षित" नाम के साथ बैंड का नाम बदलें

पकड़ो और सम्मिलित करने के लिए उपयोगकर्ता आवश्यक जानकारी उत्पन्न

डालें बैंड में smf_members

भेजें पासवर्ड के साथ एक ईमेल बैंड

)

सूचना मैं बैंड डेटाबेस है कि उपयोगी था शामिल: bandName, bandEmail से उपलब्ध था, और bandWebsite

यहाँ से पासवर्ड पीढ़ी समारोह मैं का उपयोग किया (लिया blatently totallyphp.co.uk ):

createRandomPassword समारोह () (

= $ Chars abcdefghijkmnopqrstuvwxyz023456789 ";

() * 1000000); (Srand (डबल) microtime () 1000000 *);

मैं $ = 0;

= $ पारित ";



जबकि ($ i <= 7) (

33; $ Num = रैंड () 33%;

$ Substr tmp = ($ chars, NUM $, 1);

$ = $ पास से गुजरती हैं. $ tmp;

$ I + +;

)

वापसी $ पारित;

)

यहाँ पासवर्ड अपेक्षाकृत कमजोर बनाया है, लेकिन यह मेरी प्रयोजनों के लिए काफी अच्छा था. कोई पासवर्ड पीढ़ी समारोह यहां ठीक काम करेगा. मैं इस एक है क्योंकि यह सदस्यों के लिए आसान हो सकता है याद करने के लिए अगर वे इसे बदलने के लिए नहीं चुना जाएगा चुना है.

यह कैसे करना है:

/ / पहले बैंड डेटाबेस कनेक्ट करने के लिए
$ उपयोगकर्ता नाम = bandUsername ";
$ मेजबान = bandHost ";
$ Mypassword = bandPassword ";
$ DB_name = bandDatabase ";

("cannot connect to server"); mysql_connect "($ मेजबान" "$ उपयोगकर्ता नाम", "$ mypassword") या मर (सर्वर से कनेक्ट नहीं कर सकते ");
("cannot select DB"); (Mysql_select_db "DB_name $") या मर ("DB चयन कर सकते हैं" नहीं);

/ / अब डाटाबेस से बैंड के हड़पने के लिए सभी
$ क्वेरी = "चुनें * से allBands";
बैंड = $ ($ क्वेरी) या मर mysql_query ("त्रुटि Config 2222b");
Mysql_num_rows = $ ($ बैंड) userRows;

/ / अब SMF कनेक्ट करने के लिए देता है db
$ मेजबान = smfhost "; / / मेजबान नाम
$ उपयोगकर्ता नाम = "smfuser; / / MySQL प्रयोक्ता नाम
$ Mypassword = smfpassword "; / / MySQL पासवर्ड
$ DB_name = smfdatabase "; / / डाटाबेस का नाम

("cannot connect to server"); mysql_connect ("$ मेजबान" "$ उपयोगकर्ता नाम", "$ mypassword") या मर ("सर्वर से कनेक्ट करने के लिए नहीं कर सकते हैं");
("cannot select DB"); (Mysql_select_db "DB_name $") या मर ("DB चयन कर सकते हैं" नहीं);

/ / Vaild_chars $ उपयोगकर्ता नाम के लिए है वर्णों की अनुमति दी जा सरणी के लिए जा रहा. मैं नंबर करने का निर्णय लिया है और केवल अनुमति पत्र. वहाँ संख्या रहे हैं अन्य पात्रों और हो सकता है कि के लिए प्रयोग नहीं किया जाएगा कारण है कि एक समस्या है लेकिन, शैली पत्र कारणों के साथ ही मैंने तय कर लिया जाना
$ Valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
= $ Valid_chars विस्फोट ("", $ valid_chars);

/ / अब हम पाश के माध्यम से प्रत्येक बैंड की जरूरत है

){ <के लिए ($ i = 0; $ i $ userRows; $ i + +) (

($bands)){ पंक्ति अगर ($ = mysql_fetch_assoc ($ बैंड)) (

/ / Extract बैंड जानकारी
उद्धरण ($ पंक्ति);
/ कूटशब्द के लिए एक बैंड / बनाएँ
$ RealPassword = createRandomPassword (),
/ मैं चुन लिए काम करता है डिबगिंग के रूप में भाग के मेरे पासवर्ड और bandname गूंज और इसलिए मैं यह के रूप में कार्य देख सकते हैं /
गूंज ("<br/> bandName - $ realPassword");
newBand $ "=";
/ / Valid_chars बैंड में प्रत्येक पत्र नाम के लिए $ से हम चरित्र जा रहे हैं देखने के लिए वैध है अगर यह मैच देखने के लिए एक. यह नहीं है कि हम बैंड नाम पाने के लिए जा रहे हैं छुटकारा truncate की है और
($bandName); $j ++ ){ 0 के लिए $ (= j; $ j <) strlen ($ bandName; $ j + +) (

($band[$j])); $ Temp = str_replace ($ valid_chars, "एक्स", $ strtolower (बैंड] [$ j));
अस्थायी अगर ($ == "") एक्स

newBand $ = $ newBand. बैंड $ j] [$;

)
/ / मैं पुराने नाम और पासवर्ड की गूंज नया नाम गूंज के लिए एक ही कारण है कि मैं
Echo "(- newBand") $;
/ / हम नाम है नए बैंड .... अब चलो DB buliding शुरू में डालने के लिए की जरूरत जानकारी हम ...
$ = $ NewBand memberName;
$ RealName = $ newBand; / / मैं एक ही सेट असली नाम और सदस्य के नाम. बैंड चाहते बदल सकते हैं यह अगर वे
$ EmailAddress = $ bandEmail;
WebsiteUrl $ = $ bandWebsite, / / जब से मैं वेबसाइटों है बैंड 'के रूप में दर्ज हो सकता है उन्हें अच्छी तरह से
WebsiteTitle $ = $ newBand;
is_activated $ = 1;
$ 4 = ID_POST_GROUP;
($memberName).$realPassword); //Password must be encrypted $ पासवर्ड = sha1 (strtolower ($ memberName) $. RealPassword); / / पासवर्ड एन्क्रिप्टेड किया जाना चाहिए

/ / डाटाबेस बनाने में SMF नाम के साथ एक ही सदस्य यकीन है कि उनकी isn'ta. हम दो बार दर्ज करें किसी को भी नहीं चाहते हैं कि गलती से
$ क्वेरी = "चुनें * से जहां '=' $ memberName" memberName smf_members;
("Config Error 2222343242b"); $ परिणाम = मरने mysql_query ($ क्वेरी) या ("विन्यास त्रुटि 2222343242b");
$) Nrows mysql_num_rows = ($ परिणाम;

/ / यदि सदस्य का नाम कुछ भी नहीं पाया जाता है
) यदि ($ nrows> 0 ()

और (

/ / यदि उपयोगकर्ता नहीं है पहले से ही मंच के लिए साइन अप, ईमेल करते हैं तो एक और भेज ....
$ क्वेरी = "घुसाएँ में (memberName, realName, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) ($ 'मूल्यों' memberName, '$' realName smf_members $ ',' emailAddress, 'is_activated $', '$' ID_POST_GROUP ', $ पासवर्ड', '$ websiteUrl', 'websiteTitle) $' ";

("Config Error 2232 "); $ परिणाम = मरने mysql_query ($ क्वेरी) या ("विन्यास त्रुटि 2232");

/ / अब हम ईमेल की जरूरत है एक बैंड के लिए भेज
करने के लिए = $ $ emailAddress;
$ विषय = "आपका मंच उपयोगकर्ता नाम और पासवर्ड";

/ से /
$ हेडर = "से: मुझे <me@mysite.com>";

/ / आपका संदेश
$ संदेश .= "आपका लॉगिन और कूटशब्द नीचे सूचीबद्ध हैं या तो आप किसी भी समय बदल सकते हैं.. यदि आप हमारे मंचों में भाग लेने के लिए नहीं चाहता, कि कोई समस्या है. बस में लॉग इन करें और कभी यह कुछ भी नहीं की तरह किया जा कभी हुआ होगा. \ r \ n ";
$ संदेश .= "प्रयोक्ता नाम: $ memberName: पासवर्ड realPassword $ \ r \ n";

/ / ईमेल भेजें
$ = $ Sentmail मेल $ ($ करने के लिए, विषय, संदेश, $ हेडर);
अगर ($ sentmail)

Echo "(-! हाँ");
/ / यह गूंज भाग के हमारे पिछले है. "-हाँ!" ईमेल भेजा है ही मुद्रित किया जाना एक हों. तो एक पूरा प्रिंटआउट रेखा से कुछ इस तरह दिखेगा:
/ / एडम संघर्ष - 4s6vsxag - AdamStrife हां -!

)

)
)

कैसे एक SMF फोरम PHP का उपयोग करने में करने के लिए मैन्युअल डालें एक प्रयोक्ता

में पोस्ट SMF (सरल मशीन फोरम) , PHP 2008, ShortLikeAFox द्वारा 28 जुलाई

इस विशिष्ट उदाहरण SMF 1.1.5 के लिए है. मैं संस्करण किसी भी अन्य कर सकते हैं के साथ काम करेंगे गारंटी नहीं दे इसे.

तो क्या आप सरल मशीन फोरम सॉफ्टवेयर चलाने और स्वयं एक प्रयोक्ता प्रवेश करना चाहते हैं? नो प्रौब्लम. मैं इस समस्या पता है बहुत विशिष्ट लगता है, लेकिन विचारों यहाँ समझाया Wordpress जैसे मंचों और अन्य डेटाबेस सॉफ्टवेयर संकुल संचालित अन्य प्रकार के लिए अनुकूलित किया जा सकता है. इससे पहले कि हम वास्तव में यह कैसे करना है में मिलता है, ले कैसे सरल मशीन Forums उपयोगकर्ता का ट्रैक रखता है पर एक नज़र रखना. smf_members SMF डेटाबेस में एक मेज कहा जाता है. संरचना smf_members इस तरह दिखता है:

क्षेत्र टाइप अशक्त

कुंजी डिफ़ॉल्ट अतिरिक्त
ID_MEMBER mediumint (8) अहस्ताक्षरित नहीं PRI रिक्त auto_increment
memberName varchar (80) नहीं एमयूएल
dateRegistered int (10) अहस्ताक्षरित नहीं एमयूएल 0
पदों mediumint (8) अहस्ताक्षरित नहीं एमयूएल 0
ID_GROUP smallint (5) अहस्ताक्षरित नहीं एमयूएल 0
lngfile tinytext नहीं एमयूएल
lastLogin int (10) अहस्ताक्षरित नहीं एमयूएल 0
realName tinytext नहीं
instantMessages smallint (5) नहीं 0
unreadMessages smallint (5) नहीं 0
buddy_list टेक्स्ट नहीं
pm_ignore_list टेक्स्ट नहीं
messageLabels टेक्स्ट नहीं
passwd varchar (64) नहीं
emailAddress tinytext नहीं
personalText tinytext नहीं
लिंग tinyint (4) अहस्ताक्षरित नहीं 0
जन्मतिथि तिथि नहीं एमयूएल 0001-01-01
websiteTitle tinytext नहीं
websiteUrl tinytext नहीं
स्थान tinytext नहीं
ICQ tinytext नहीं
AIM (Varchar 16) नहीं
Yim varchar (32) नहीं
MSN tinytext नहीं
hideEmail tinyint (4) नहीं 0
showOnline tinyint (4) नहीं 1
timeFormat varchar (80) नहीं
हस्ताक्षर टेक्स्ट नहीं
timeOffset फ्लोट नहीं 0
अवतार tinytext नहीं
pm_email_notify tinyint (4) नहीं 0
karmaBad smallint (5) अहस्ताक्षरित नहीं 0
karmaGood smallint (5) अहस्ताक्षरित नहीं 0
usertitle tinytext नहीं
notifyAnnouncements tinyint (4) नहीं 1
notifyOnce tinyint (4) नहीं 1
notifySendBody tinyint (4) नहीं 0
notifyTypes tinyint (4) नहीं 2
memberIP tinytext नहीं
memberIP2 tinytext नहीं
secretQuestion tinytext नहीं
secretAnswer varchar (64) नहीं
ID_THEME tinyint (4) अहस्ताक्षरित नहीं 0
is_activated tinyint (3) अहस्ताक्षरित नहीं 1
validation_code varchar (10) नहीं
ID_MSG_LAST_VISIT int (10) अहस्ताक्षरित नहीं 0
additionalGroups tinytext नहीं
smileySet varchar (48) नहीं
ID_POST_GROUP smallint (5) अहस्ताक्षरित नहीं एमयूएल 0
totalTimeLoggedIn int (10) अहस्ताक्षरित नहीं 0
passwordSalt varchar (5) नहीं

खेतों हम ध्यान देने की आवश्यकता के लिए:

  • memberName स्व - explanitory.
  • - DateRegistered, आवश्यक नहीं है लेकिन अगर बाहर तारीख नहीं भरा दिसंबर को प्रदर्शित करता है पंजीकृत 31 1969. दिनांक एक युग टाइमस्टैम्प के रूप में सहेजा है. अपने सिर में timestamps की गणना करने के लिए पता नहीं है? नो प्रौब्लम. मैं जनरेटर का उपयोग मुक्त पाया यहाँ .
  • - RealName डाला जाना चाहिए. जब मैं यहाँ memberName यकीन नहीं है मैं तो बस दोहराना.
  • emailAddress स्व - explanitory.
  • - Is_activated 1 करने के लिए सेट किया जाना चाहिए जब से हम स्वयं एक सदस्य हैं सक्रिय.
  • - ID_POST_GROUP मैं झूठ नहीं होगा. मुझे यकीन है कि यह क्या है, नहीं हूँ, लेकिन यह हमेशा से 4 करने के लिए सेट किया जा रहा है. तो .... मैं हमेशा से 4 करने के लिए यह निर्धारित किया है. कार्यक्रम के लिए सबसे अच्छा तरीका नहीं है, लेकिन आप क्या कर सकते हैं?
  • passwd - कूटशब्द आप उपयोगकर्ता चाहते करने के लिए नए दे. यह असंभव SMF दस्तावेज़ीकरण देख बिना प्रवेश करने के लिए बाहर निकालने के लिए है. उचित कोड डेटाबेस के लिए एक SMF पासवर्ड एन्क्रिप्ट करने के लिए इस तरह दिखता है:

($memberName).$password) = $ Passwd sha1 (strtolower ($ memberName) पासवर्ड $.)

कोड के ऊपर की रेखा में, $ पासवर्ड उपयोगकर्ता के वास्तविक कूटशब्द है.

यह कैसे करना है:

/ / सबसे पहले, SMF डेटाबेस से कनेक्ट

$ मेजबान = होस्टनाम "; / / मेजबान नाम
$ उपयोगकर्ता नाम उपयोगकर्ता नाम = "; / / MySQL प्रयोक्ता नाम
$ Mypassword = पासवर्ड "; / / MySQL पासवर्ड
$ उपयोगकर्ता नाम = DB_name "; / / डाटाबेस का नाम

("cannot connect to server"); mysql_connect ("$ मेजबान" "$ उपयोगकर्ता नाम", "$ mypassword") या मर ("सर्वर से कनेक्ट करने के लिए नहीं कर सकते हैं");
("cannot select DB"); (Mysql_select_db "DB_name $") या मर ("DB चयन कर सकते हैं" नहीं);

$ MemberName = IronMan ";
$ RealName = "टोनी स्टार्क";
$ EmailAddress = ironMan@ironMan.com ";
is_activated $ = 1;
$ 4 = ID_POST_GROUP;

$ पासवर्ड Tony1234 = ";

($memberName).$password); $ पासवर्ड = sha1 (strtolower ($ memberName) पासवर्ड. $);

dateRegistered $ = 1216951200; / / 2 2008/07/25 AM

$ क्वेरी = "घुसाएँ में (memberName, realName, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) ($ 'मूल्यों' memberName, '$' realName smf_members, '$' emailAddress, 'is_activated $', '$' ID_POST_GROUP ', '$ $ dateRegistered पासवर्ड', ') ";
("SMF Error 101.234 "); $ परिणाम = मरने mysql_query ($ क्वेरी) या ("101.234 SMF त्रुटि");

यह सब वहाँ यह करने के लिए है!