כיצד ידנית הוספת המשתמש SMF פורום באמצעות PHP

פורסם ב SMF (פורום מכונה פשוטה) , PHP על ידי ShortLikeAFox ב 28 יולי 2008

זו דוגמה ספציפית היא עבור SMF 1.1.5. אני לא יכול להבטיח שזה יעבוד עם כל גירסה אחרת.

אז אתה מפעיל מכונה פשוטה פורום תוכנה רוצה להזין ידנית משתמש? אין בעיה. אני מכיר את הבעיה הזו נראה מאוד ספציפי, אבל הרעיונות הסביר כאן ניתן להתאים סוגים אחרים של פורומים אחרים מונעים באתר חבילות תוכנה כגון Wordpress. לפני שניכנס בדיוק איך לעשות את זה, בוא נסתכל איך שומר פשוט מכונת פורומים המסלול של משתמשים. באתר SMF יש טבלה בשם smf_members. Smf_members המבנה נראה כך:

שדה סוג בטל

מפתח ברירת מחדל נוסף
ID_MEMBER mediumint (8) לא חתום NO PRI NULL 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
שם אמיתי 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 בראש שלך? אין בעיה. אני משתמש גנרטור חינם נמצא כאן .
  • שם אמיתי - צריך להיות מוכנס. כאשר אני לא בטוח שאני פשוט חוזר memberName כאן.
  • emailAddress - Explanitory עצמי.
  • is_activated - חייב להיות מוגדר 1 מאז אנחנו ידנית שהפעיל חבר.
  • ID_POST_GROUP - אני לא אשקר. אני לא בטוח מה זה, אבל זה תמיד נראה מוגדר 4. אז .... אני תמיד להגדיר את זה 4. לא הדרך הכי טובה בתוכנית, אבל מה אפשר לעשות?
  • passwd - סיסמה שאתה רוצה לתת את המשתמש החדש. אי אפשר להבין איך להיכנס בלי להסתכל בתיעוד SMF. הקוד הנכון כדי להצפין את הסיסמה SMF עבור מסד הנתונים נראה כך:

($memberName).$password) $ Passwd = sha1 (strtolower ($ memberName). $ הסיסמה)

בשורה מעל הקוד, הסיסמה היא הסיסמה $ בפועל של המשתמש.

איך עושים את זה:

/ / ראשון, להתחבר אל מסד הנתונים של SMF

המארח $ = "המארח": / / שם מארח
$ username = "שם משתמש"; / / שם המשתמש Mysql
mypassword $ = "הסיסמה"; / / סיסמה Mysql
db_name $ = "שם משתמש"; / / שם מסד נתונים

("cannot connect to server"); mysql_connect ("המארח $," $ username "," $ mypassword ") או למות (" לא יכול להתחבר לשרת ");
("cannot select DB"); mysql_select_db ("$ db_name") או למות ("לא יכול לבחור DB");

memberName $ = "איש ברזל";
שם אמיתי $ = "טוני סטארק";
emailAddress $ = "ironMan@ironMan.com";
$ Is_activated = 1;
ID_POST_GROUP $ = 4;

הסיסמה $ = "Tony1234";

($memberName).$password); הסיסמה $ = sha1 (strtolower ($ memberName). $ סיסמה);

$ DateRegistered = 1216951200: / / 2008/07/25 02:00

שאילתה $ = "INSERT INTO smf_members (memberName, שם אמיתי, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ memberName', '$ שם אמיתי', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' הסיסמה $ ',' $ dateRegistered ') ";
("SMF Error 101.234 "); התוצאה $ = mysql_query ($ query) או למות ("SMF שגיאה 101.234");

זה כל מה שיש זה!