수동으로 삽입하는 방법은 그룹 사용자의 SMF 포럼로 PHP 사용하기
이 튜토리얼은 당신이 내 게시물에 익숙하다고 가정합니다 : 수동으로 삽입하는 방법은 사용자가 SMF 포럼은 PHP를 사용하여.
저는 최근에 800 또는 정말 감동적의 도전에 직면 an SMF 포럼에 데이터베이스에서 밴드. 내가 문제를 이동할 때 그 첫 번째 게시물에 커버하지 않았어 만드는 몇 직면 :
- 밴드 이름을 문자로 이동하여 캐릭터에 대한 SMF 데이터베이스에 안전을 보장되지 않았다. 그래서 이름은 일종의 고용 기능을 수정해야했다.
- 밴드의 비밀 번호가없습니다. 그럼 비밀 번호를 세대의 일부 유형을 필요로 고용한다.
제가 포럼에서 모든 밴드의 등록에 갔었 단계 이런 작은 간 :
밴드 데이터베이스를 엽니다
각 (밴드) (
생성 비밀 번호
밴드의 이름을 바꿉니다 "안전"이름을 가진
잡아를 생성하는 데 필요한 정보를 사용자가 삽입
삽입 밴드로 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 - 그래!)
)
)






















