아카이브에 대한 SMF (간단한 기계 포럼)

어떻게 사용자를 도와 쉽게 사이트 SMF의 소스 비디오에

안으로 배치하는 SMF (간단한 기계 포럼) 2008, 10 년 8 월 ShortLikeAFox에

그래서 간단한 기계 포럼 기반 사이트를 설정을 담당하고 절대 안전한 방법을 허용할 인기 동영상 사이트 (유튜브, 구글 비디오, IGN 등)부터 동영상을 포함하는 사용자. 하나님은 어떤 결과가 될 알기 때문에 당신은 justifiably 두려워 사용자는 단순히 이러한 개별 사이트의 소스 코드를 사용할 수에있을 수 있습니다. 이 문제의 해결책은 될 수있는 간단합니다. 칼 벤슨은 절단과 비디오가이 패키지 안으로 나타나는 페이지의 URL을 붙여 간단하게 동영상을 포함하게 수정 패키지를 쓴 150여 사이트에 대해 작동하고 AEVAC (라는 오디오 소스 비디오 / 오디오 클립). 가장 최근의 릴리스이며, 3.1.2 버전이 그것에서 찾을 수 있습니다 하세요.

이건 내가 매우 좋습니다 모드입니다. 사용이 올바르게 그것은 크게 빈도를 줄이고 포럼 관리자 두통의 심각도 잠재력이있다.

사용자는 안으로 PHP를 사용하여 포럼 SMF 그룹을 어떻게 수동으로 삽입

안으로 배치하는 SMF (간단한 기계 포럼) , PHP는 2008 년 7 월 30 일 ShortLikeAFox에

이 튜토리얼 : 나의 가정을 잘 알고있는 당신은 게시 하는 방법 포럼에 수동으로 삽입 사용자 속으로 SMF PHP 사용하기 .

나는 최근에 데이터베이스에서 SMF 포럼에 밴드를 800 정도 이동의 도전에 직면했다. 나는 문제가 처음 게시물에 커버하지 않았어 움직이고 몇 직면 :

  1. 밴드 이름은 안전한 문자로 문자 이동 SMF 데이터베이스로 수 보장되지 않았습니다. 이름은 일종의 함수를 수정했습니다 그래서이 고용되어 있어야합니다.
  2. 밴드 암호를 필요가 없습니다. 비밀 번호 세대의 몇 가지 유형이 필요 그래서이 고용되어 있어야합니다.

단계는 내가 모든 포럼에서 밴드의 등록에 가서 이런 였을 :

밴드 데이터베이스를 엽니다

(밴드) (

생성 비밀 번호

밴드 이름 바꾸기 "안전"이름을 가진

잡아와 정보를 삽입하기 위해 필요한 사용자 생성

삽입 밴드로 smf_members

보내기 밴드 비밀 번호 이메일

)

정보는 내가 도움이 포함된 데이터베이스 밴드 : bandName, bandEmail에서 사용할 수 있었는데 bandWebsite

여기에서 사용되는 (blatently 함락되는 순간 나는 비밀 번호 기능 생성 totallyphp.co.uk ) :

기능 createRandomPassword () (

$ 문자 = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((더블) microtime () * 1000000);

$ 전 = 0;

$는 = "패스;



(동안 ($ 나는 <= 7)

33; $ 인분 포함 = 랜드 () % 33;

$ tmp를 = substr ($ 문자, $ 인분 포함, 1);

$ = $ 패스는 패스. $ tmp를;

$ 나 + +;

)

반환 달러 패스;

)

비밀 번호가 여기에 만들어 상대적으로 약하지만, 충분히 내 목적을 위해 좋다. 어떤 비밀 번호 생성 기능이 작동 것이다 여기 괜찮아요. 난이 하나가 회원을위한 쉬운 그들은 그것을 변경할 수 없습니다 선택한 경우 기억하는 것입니다 있기 때문에 선택했습니다.

그것을 어떻게하는 :

/ / 첫번째 데이터베이스 밴드 연결
$ 사용자 이름 = "bandUsername";
$ 호스트 = "bandHost";
$ mypassword = "bandPassword";
$ DB_NAME = "bandDatabase";

("cannot connect to server"); ) mysql_connect ( "$ 호스트", "$ username"을, "$ 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 ( "$ 호스트", "$ username"을, "$ 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;

/ / 이제 우리는 밴드에 필요한 각 루프를 통해

){ ($ 나는 <$ userRows; $ 나 + ($ 전 = 0; +)

($bands)){ (밴드))하면 ($ 행 = mysql_fetch_assoc ($

/ / 압축을 풉니다 밴드 정보
) 추출 ($ 행;
비밀 번호 밴드 만들기 / /
$ realPassword = createRandomPassword ();
/ / 내가 내 비밀 번호를 디버깅 같은 부분 bandname 메아리 선택하고 그래서 같은 기능을 볼 수 있습니다 내 작품
) 에코 ( "신청 <br/> bandName $ - $ realPassword";
$ newBand = "";
달러 valid_chars을 유효한 문자가 각각 / / 들어 문자를 일치가 있는지보고에 우리가가는 밴드의 이름. 그것은 그것의 이름을 밴드 않습니다 잘라야가는 우리가 안 와서 그걸 없애
($bandName); $j ++ ){ 0 ($ j를 =; $ j를 <나 strlen ($ bandName); $ j를 + +) (

($band[$j])); $ 온도 = str_replace ($) valid_chars, "X"는, strtolower가 ($ j를 밴드 [달러]);
== 경우 ($ 임시직에서 "X")

$ newBand = $ newBand. $ 밴드 달러를 일본] [;

)
/ / 나는 비밀 번호를 옛 이름과 이유를 나는 에코 에코와 같은 새 이름을위한
"에코 (- $ newBand");
/ / 우리는 이름을 가진 새로운 밴드 .... 지금 가자 dB 삽입에 시작 buliding 필요한 정보를 우리가 ...
$ memberName = $ newBand;
$ 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 이름으로 동일한 회원이 반드시 그들의이 아닙니다. 우리는 두 사람이 실수를 입력하고 싶지 않아
$ 쿼리 = "선택 * 제품부터 어디 = '$ memberName'"을 memberName smf_members;
("Config Error 2222343242b"); $ 결과 = mysql_query ($ 쿼리) 또는 죽을 ( "구성 오류 2222343242b");
$ nRows = mysql_num_rows ($ 결과);

/ / 경우 회원 이름은 아무것도하지 않고 발견
)면 ($ nRows> 0) (

또 (

/ / 경우 사용자가 아니 이미 포럼에 서명까지 이메일을 보낼 수 있도록하고 ....
$ 쿼리 = "삽입 속으로 (realName, emailAddress, ID_POST_GROUP, passwd, websiteUrl, websiteTitle is_activated memberName) 가치 ( '$ memberName', '$', emailAddress ',', '$ 달러를 is_activated'달러 realName '을 smf_members ID_POST_GROUP' , '$ 암호', '$ websiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ 결과 = mysql_query ($ 쿼리) 또는 죽을 ( "구성 오류 2232");

/ / 이제 우리는 밴드 이메일을 보낼 필요
$에 = $ emailAddress;
$ 제목 = "당신의 포럼 이름과 비밀 번호";

/ /에서
달러에서 헤더 = ": 저요 <me@mysite.com>";

/ / 귀하의 메시지
$ 메시지가 .= "귀하의 로그인 및 비밀 번호는 아래와 같습니다. 언제든지 중 하나에서 변경할 수 있습니다. 당신은 우리의 포럼에 참여하지 않으려면, 그건 아무 문제 없어. 그냥 로그 결코 그것은 다신 이런 일 없었됩니다. \를 r에 \ 안내 n ";
$ 메시지가 .= "사용자 이름 : $ memberName 비밀 번호 : $ realPassword \ r에 \ n";

/ / 이메일을 보낼
$ 보냄 = 메일을 ($로, $ 제목, $ 메시지, $ 헤더);
) 만약 ($ 보냄

"에코 (- 예!");
/ / 이것은 에코 부분 우리의 마지막입니다. "- 네!" 발송됩니다 이메일을 경우에만 인쇄됩니다. 이 그래서 전체 인쇄물의 같은 모양 라인 :
/ / 아담과 증오 - 4s6vsxag - AdamStrife - 그래!

)

)
)

으로 SMF 포럼 PHP를 사용하여 사용자를 어떻게 수동으로 삽입

안으로 배치하는 SMF (간단한 기계 포럼) , PHP는 2008 년 7 월 28 일 ShortLikeAFox에

이 특정 예제는 SMF 1.1.5 나이다. 제가 버전이 다른 어떤 수있는 작동하지 않습니다 보장 그것.

그래서 당신은 간단한 기계 포럼 소프트웨어를 실행하고 수동으로 사용자를 입력하고 싶어? 문제 없어요. 나는이 문제를 알고 매우 구체적인 보이지만 아이디어가 여기 포럼 및 기타 데이터베이스 기반 소프트웨어 패키지의 다른 유형 Wordpress 같은 적응 수 있습니다 설명했다. 우리가이 일을 정확하게하는 방법에 들어가기 전에,의 간단한 기계 포럼은 사용자를 추적 방법에 대해 살펴보겠습니다. SMF 데이터베이스에는 테이블이라고합니다 smf_members. 이 구조를 smf_members 같이 보입니다 :

분야 유형

기본 여분의
ID_MEMBER mediumint (8) 서명 아니오 PRI의 NULL은 auto_increment
memberName (80) varchar 아니오 MUL
dateRegistered int (10) 서명 아니오 MUL 0
게시물 mediumint (8) 서명 아니오 MUL 0
ID_GROUP smallint (5) 서명 아니오 MUL 0
lngfile tinytext 아니오 MUL
lastLogin int (10) 서명 아니오 MUL 0
realName tinytext 아니오
instantMessages (5) smallint 아니오 0
unreadMessages (5) smallint 아니오 0
buddy_list 본문 아니오
pm_ignore_list 본문 아니오
messageLabels 본문 아니오
passwd (64) varchar 아니오
emailAddress tinytext 아니오  
personalText tinytext 아니오
성별 tinyint (4) 서명 아니오 0
생년월일 날짜 아니오 MUL 0001-01-01
websiteTitle tinytext 아니오
websiteUrl tinytext 아니오
위치 tinytext 아니오
ICQ에 tinytext 아니오
AIM에 (16) varchar 아니오
Yim (32) varchar 아니오
MSN tinytext 아니오
hideEmail (4) tinyint 아니오 0
showOnline (4) tinyint 아니오 1
timeFormat (80) varchar 아니오
서명 본문 아니오
timeOffset 플로트 아니오 0
화신 tinytext 아니오
pm_email_notify (4) tinyint 아니오 0
karmaBad smallint (5) 서명 아니오 0
karmaGood smallint (5) 서명 아니오 0
usertitle tinytext 아니오
notifyAnnouncements (4) tinyint 아니오 1
notifyOnce (4) tinyint 아니오 1
notifySendBody (4) tinyint 아니오 0
notifyTypes (4) tinyint 아니오 2
memberIP tinytext 아니오
memberIP2 tinytext 아니오
secretQuestion tinytext 아니오
secretAnswer (64) varchar 아니오
ID_THEME tinyint (4) 서명 아니오 0
is_activated tinyint (3) 서명 아니오 1
validation_code (10) varchar 아니오
ID_MSG_LAST_VISIT int (10) 서명 아니오 0
additionalGroups tinytext 아니오
smileySet (48) varchar 아니오
ID_POST_GROUP smallint (5) 서명 아니오 MUL 0
totalTimeLoggedIn int (10) 서명 아니오 0
passwordSalt (5) varchar 아니오

필드는 우리가 집중해야합니다 :

  • memberName - 자기 explanitory.
  • dateRegistered - 12 월로인가되지 필요한, 디스플레이 등록 날짜를 기입하지 않은 경우지만, 31 1969. 날짜는 획기 타임 스탬프로 저장됩니다. 어떻게 머리에 타임 스탬프를 계산해야할지 모르겠어요? 문제 없어요. 난 발전기를 사용하여 무료로 찾은 이곳 .
  • realName은 - 삽입합니다. 내가 여기에 memberName 반복이 아니라 그냥 내 자신이 물론 이죠.
  • emailAddress - 자기 explanitory.
  • 이후 우리는 회원을 수동으로 활성화하는 1 is_activated는 방법 - 설정해야됩니다.
  • ID_POST_GROUP - 내가 거짓말을하지 않습니다. 난이게 뭔지 모르겠지만, 그것은 항상 4로 설정 것으로 보인다. 그래서 .... 난 항상 4로 설정합니다. 프로그램에 대한 최선의 방법은 아니지만, 무엇을 당신이 할 수 있습니까?
  • passwd - 비밀 번호는 사용자가 새로운하려는 제공합니다. 그것은 불가능한 방법에 입력 알아낼 SMF 설명서를보고하지 않고있다. 올바른 코드는 데이터베이스에 대한 SMF 비밀 번호를 암호화하는 같이 보입니다 :

($memberName).$password) $)은 passwd memberName = sha1을 (를 strtolower ($. 달러를 비밀 번호)

코드의 위 라인에서 $ 암호는 사용자의 실제 암호입니다.

그것을 어떻게하는 :

/ / 먼저, SMF 데이터베이스에 연결

$ 호스트 = "호스트 이름"; / / 호스트 이름
$ 사용자 이름 = "사용자 이름"; / / mysql을 사용자 이름
$ mypassword = "비밀 번호"; / / mysql을 비밀 번호
$ DB_NAME = "사용자 이름"; / / 데이터베이스 이름

("cannot connect to server"); ) mysql_connect ( "$ 호스트", "$ username"을, "$ 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; / / 2008년 7월 25일 오전 2시

$ 쿼리 = "삽입 속으로 (realName, emailAddress, ID_POST_GROUP, passwd, dateRegistered is_activated memberName) 가치 ( '$ memberName', '$', emailAddress ',', '$ 달러를 is_activated'달러 realName '을 smf_members ID_POST_GROUP', ' $ 암호 ','$ dateRegistered ') ";
("SMF Error 101.234 "); $ 결과 = mysql_query ($ 쿼리) 또는 죽을 ( "SMF 오류 101.234");

그게 전부가 그것입니다!