수동으로 삽입하는 방법은 그룹 사용자의 SMF 포럼로 PHP 사용하기

SMF (간단한 기계 포럼), 7 월 ShortLikeAFox로 PHP는 30, 2008에 게시됨

이 튜토리얼은 당신이 내 게시물에 익숙하다고 가정합니다 : 수동으로 삽입하는 방법은 사용자가 SMF 포럼은 PHP를 사용하여.

저는 최근에 800 또는 정말 감동적의 도전에 직면 an SMF 포럼에 데이터베이스에서 밴드. 내가 문제를 이동할 때 그 첫 번째 게시물에 커버하지 않았어 만드는 몇 직면 :

  1. 밴드 이름을 문자로 이동하여 캐릭터에 대한 SMF 데이터베이스에 안전을 보장되지 않았다. 그래서 이름은 일종의 고용 기능을 수정해야했다.
  2. 밴드의 비밀 번호가없습니다. 그럼 비밀 번호를 세대의 일부 유형을 필요로 고용한다.

제가 포럼에서 모든 밴드의 등록에 갔었 단계 이런 작은 간 :

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

(밴드) (

생성 비밀 번호

밴드의 이름을 바꿉니다 "안전"이름을 가진

잡아를 생성하는 데 필요한 정보를 사용자가 삽입

삽입 밴드로 smf_members

밴드의 암호가 포함된 이메일을 보내

)

정보가 포함된 데이터베이스에 유용하게 사용 됐을 밴드 :에서 제공했다, bandEmail, bandName 및 bandWebsite

저는 여기에 사용되는 비밀 번호를 생성 기능입니다 (blatently totallyphp.co.uk) 촬영 :

기능 createRandomPassword () (

$ 문자 = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand (()를 두 번 microtime () * 1000000);

$ 전 = 0;

$ = "패스;



($ 동안 <= 7) (

33; $ NUM 개의 = 랜드 () % 33;

$ tmp를 = substr ($ 문자, $ NUM 개, 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);

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

){= 0 ($ 위해; $ 나는 <$ userRows; $ 난 + +) (

($bands)){ ($ 경우 행 = mysql_fetch_assoc ($ 밴드)) (

/ / 추출 밴드 정보
추출 ($ 행);
/ / 그 밴드에 대한 비밀 번호를 만드십시오
$ realPassword = createRandomPassword ();
/ / 난 내 디버깅의 일환으로하고 bandname 이름과 비밀 번호를 반향으로 작품을 선택해서 볼 수있는 기능
에코 ( "신청 <br/> $ bandName - $ realPassword");
$ newBand = "";
밴드의 이름으로 우리가 만약 valid_chars $에서 유효한 문자가 일치하는지 찾아봐야하는 각 문자 / / 들어. 그건 우리가 떨쳐가는거야하지 않으며 밴드 이름을 잘라야
($bandName); $j ++ ){ ($ j를 = 0; $ j를 <나 strlen ($ bandName); $ j를 + +) (위한

($band[$j])); $ 임시직 = str_replace ($ valid_chars, "X"는, strtolower ($ 밴드 [$ j를]));
($ 만약 온도 == "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 데이터베이스에있는 동일한 이름을 가진 그들의 않다고 확신 회원 확인합니다. 우리는 아무도 실수를 두 번 입력하고 싶지 않아
$ 쿼리 = "선택 *에서"memberName '어디 memberName ='$ smf_members;
("Config Error 2222343242b"); $ 결과 = mysql_query ($ 쿼리) 또는 죽을 ( "구성 오류 2222343242b");
$ nRows = mysql_num_rows ($ 결과);

회원 이름을 찾을 수있다면 / / 아무것도하지
($ nRows> 0) ()

다른 (

/ / 만약 사용자가 이미 포럼에 대한이므로 가입하지 말고 이메일을 보내주 ....
$ 쿼리 = "삽입 INTO를 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>";

/ / 귀하의 메시지
$ 메시지 .= "귀하의 로그인 및 비밀 번호를 아래에 나와있습니다. 당신은 언제든지 변경할 수있습니다. 만약 당신이 우리의 포럼에 참여하고 싶지 않아, 아무 문제 없어요. 그냥 로그 못하고 아무 일도 일어나지 않은 것처럼 될 것입니다 . \ 연구 \ n ";
$ 메시지 .= "사용자 : $ memberName 비밀 번호 : $ realPassword \ 연구 \ n";

/ / 이메일을 보내
$ 보냄 = 메일 ($, $ 제목, $ 메시지, $ 헤더);
($ 보냄)

에코 ( "- 네!");
/ / 이것이 우리 에코의 마지막 부분입니다. "- YES를!" 이메일을 보낸 경우에만 인쇄됩니다. 그래서 전체 출력물 라인이 같이 표시됩니다 :
/ / 아담 증오 - 4s6vsxag - AdamStrife - 그래!

)

)
)

코멘트를 남겨주