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

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

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

तो तुम साइट एक सरल मशीनों फोरम आधारित स्थापित करने के आरोप में हैं और की अनुमति देने के लिए एक आसान रास्ता चाहते लोकप्रिय वीडियो साइटों (YouTube, Google Video, IGN, आदि) से वीडियो एम्बेड करने के लिए उपयोगकर्ताओं को. You may justifiably be afraid in allowing users to simply use the embed code from those individual sites, because God knows what the results will be. इस समस्या के समाधान के रूप में के रूप में किया जा सकता है सरल है. कार्ल बेन्सन कि काटने और वीडियो यह पैकेज अंदर प्रकट होता पृष्ठ के यूआरएल चिपकाने के रूप में सरल रूप में वीडियो embedding देता है एक संशोधन पैकेज लिखा था पर 150 साइटों के लिए और काम करता है AEVAC (ऑडियो एंबेड वीडियो / ऑडियो क्लिप्स) कहा जाता है. सबसे हाल ही में रिलीज संस्करण 3.1.2 है और इसे यहां पाया जा सकता है.

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

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

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

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

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

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

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

खुला बैंड डेटाबेस

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

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

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

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

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

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

)

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

यहाँ मैं प्रयोग करते हैं कूटशब्द पीढ़ी समारोह है (blatently totallyphp.co.uk से) ले लिया:

समारोह createRandomPassword () (

$ घर का काम = "abcdefghijkmnopqrstuvwxyz023456789";

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

$ i = 0;

$ = "पास;



($ जब मैं <= 7) (

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

$ tmp = substr ($ घर का काम, $ 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 ($ क्वेरी) या मरने के ( "कॉन्फिग त्रुटि 2222b");
$ userRows = mysql_num_rows ($ बैंड);

/ / अब 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 ();
/ / मैं अपने debugging के भाग के रूप में और bandname और पासवर्ड प्रतिध्वनित करने के लिए के रूप में काम करता है तो मैं ने इस समारोह में देख सकते हैं चुनें
प्रतिध्वनि ( "<br/> $ bandName - $ realPassword");
$ newBand = "";
बैंड के नाम से हम अगर डॉलर से valid_chars एक वैध चरित्र मैच को देखने के लिए देखने के लिए जा रहे हैं प्रत्येक पत्र / / के लिए. यह हम मिल इसे से मुक्त करने के लिए जा रहे हैं नहीं करता है और इस बैंड का नाम truncate
($bandName); $j ++ ){ ($ j = 0; $ j <strlen ($ bandName); $ j + +) (के लिए

($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ बैंड [$ j]));
($ अगर temp == "X")

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

)
/ / मैं मैं पुराने नाम और पासवर्ड प्रतिध्वनित एक ही कारण के लिए नया नाम प्रतिध्वनित
( "- $ newBand") प्रतिध्वनित;
/ / हम नए बैंड का नाम है .... अब के हम db में डालने के लिए आवश्यकता जानकारी buliding शुरु करते हैं ...
$ = $ newBand memberName;
$ = $ newBand realName; / / मैं असली नाम और सदस्य के नाम एक ही निर्धारित किया है. अगर वे चाहते हैं इस बैंड इसे बदल सकते हैं
$ emailAddress = $ bandEmail;
$ websiteUrl = $ bandWebsite; / / चूँकि मैं भी उन्हें दर्ज हो सकता है इस बैंड 'वेबसाइटों है
$ = $ newBand websiteTitle;
$ = 1 is_activated;
$ ID_POST_GROUP = 4;
($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) () अगर

और (

/ / यदि उपयोगकर्ता पहले ही मंचों के लिए साइन अप नहीं है ऐसा करते हैं और एक ईमेल भेज ....
$ क्वेरी = "INSERT जांच smf_members (,, emailAddress,, ID_POST_GROUP,, websiteUrl passwd, websiteTitle) मान ( '$ is_activated realName memberName memberName', '$' realName, '$' 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) अगर

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

)

)
)

कैसे स्वयं डालें एक उपयोगकर्ता के लिए एक SMF फोरम में php का उपयोग

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

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

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

मैदान प्रकार बातिल

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

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

  • 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 डेटाबेस से कनेक्ट

$ मेजबान = "hostname"; / / होस्ट नाम
$ प्रयोक्ता नाम = "उपयोगकर्ता नाम", / / 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";
$ = 1 is_activated;
$ ID_POST_GROUP = 4;

$ कूटशब्द = "Tony1234";

($memberName).$password); $ कूटशब्द = sha1 (strtolower ($ memberName). $ पासवर्ड);

$ = 1216951200 dateRegistered; / / 7-25-2008 2 AM

$ क्वेरी = "INSERT में, '$' emailAddress, '$' is_activated, '$ realName' '$ memberName' (,, emailAddress,, ID_POST_GROUP,, dateRegistered passwd is_activated realName) memberName मूल्यों ( '$ smf_members ID_POST_GROUP', ' $ कूटशब्द ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ परिणाम = mysql_query ($ क्वेरी) या मरने के ( "SMF त्रुटि 101,234");

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