どのように手動で挿入するグループのユーザーがSMFのフォーラムにはPHPを使う
このチュートリアルはあなたが私のポストに精通していると仮定: どのようにユーザーを手動で挿入するためのSMFのフォーラムのPHPを使用しています。
私は最近800かという課題に直面し、とても感動的な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に;
$私+ + ;)
$ リターンパス;
)
ここには比較的弱いのパスワードが作成されますが、十分に私の目的のために良かった。 ここに任意のパスワード生成機能は正常に動作する。 それを変更しないことを選択した場合は議員を覚えては、容易なことだ私はこの1つを選んだ。
どのようにそれを行うには:
/ /まず、バンドのデータベースに接続
$ユーザ名= " bandUsername " ;
$ホスト= " bandHost " ;
$ mypassword = " bandPassword " ;
$ db_name = " bandDatabase " ;
("cannot connect to server"); "ホスト( " $ mysql_connect 、 " $ユーザ名" 、 " $ mypassword "は) または死ぬ ( "サーバに" )を接続することはできません。
("cannot select DB"); mysql_select_db ( " $ db_name " ) または死ぬ ( " " ) DBを選択することはできません。
/ /これで、データベースからすべてのバンドをつかむ
$クエリ= " allBandsからのSELECT * " ;
$バンド= mysql_query ( $クエリ)または死ぬ( "設定エラー2222b " ) ;
$ userRows = mysql_num_rows ( $バンド) ;
/ /これで、 SMFのデータベースに接続することができます
$ホスト= " 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 ) ;
/ /今はループに各バンドを通じて必要
){私= 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 " )エコー;
/ /我々は新たなバンド名が... 。 今の我々はデータベースに挿入するために必要な情報buliding開始させてください...
$ = $ newBand memberName ;
$ = $ newBand realnameの; / /私は、本当の名前とメンバー名と同じに設定します。 したい場合には、バンドを変更することができます
$メールアドレス= $ bandEmail ;
$ websiteUrl = $ bandWebsite ; / /ので僕も彼らを入力してください可能性がバンドのウェブサイトがある
$ = $ newBand websiteTitle ;
is_activated $ = 1 ;
$ ID_POST_GROUP = 4 ;
($memberName).$realPassword); //Password must be encrypted $パスワード= SHA1を ( strtolower ( $ memberName ) 。 $ realPassword ) ; / /パスワードを暗号化する必要があります/ / SMFのデータベース内の同じ名前の確認はないメンバを確認します。 私たちは誰もが誤って2回入力してくださいしたくない
$クエリ= "のSELECT * " memberName 'のWHERE memberName = ' $ smf_members ;
("Config Error 2222343242b"); $結果= mysql_query ( $クエリ) または死ぬ ( "設定エラー2222343242b " ) ;
$ nrows = mysql_num_rows ( $結果) ;見つけた場合は、メンバー名は、 / /何もしない
( $ nrows > 0 ) ( )他(
/ /場合は、ユーザーが既にフォーラムには、署名されていませんこれを行うとしてメールを送信... 。
$クエリ= " INSERTのにsmf_members ( 、 、メールアドレス、 ID_POST_GROUP 、 passwdのwebsiteUrl 、 websiteTitle )の値( ' $ is_activated realnameのmemberName memberName ' 、 ' $ ' realnameの、 ' $ 'メールアドレス、 ' $ ' is_activated 、 ' $ ID_POST_GROUP ' 、 ' $パスワード' 、 ' $ ' websiteUrl 、 ' $ websiteTitle ' ) " ;("Config Error 2232 "); $結果= mysql_query ( $クエリ) または死ぬ ( "設定エラー2232 " ) ;
/ /これで、バンドをしてメールを送信する必要がある
$ 〜 = $メールアドレス;
$件名= "あなたのフォーラムのユーザー名とパスワード" ;/ /投稿者
$ヘッダー= "投稿者:ミー<me@mysite.com> " ;/ /あなたのメッセージ
$メッセージ.= "あなたのログイン名とパスワードを下記のとおりです。のいずれかをいつでも変更することができます場合は私たちのフォーラムに参加しない場合は、問題なのはわずかにログインしないと何もが起こったようなものだ\研究\ Ñ " ;
$メッセージ.= "ユーザ名: $ memberNameパスワード: $ realPassword \研究\ Ñ " ;/ /メールを送信
$送信済み= メール ( $ 、 $件名、 $メッセージ、 $ヘッダー) ;
( $送信済み)エコー ( " -はい! " ) ;
/ /これが私たちのエコーの最後の部分です。 は、 "はい! " メールを送信される場合にのみ印刷されます。 つまり、完全な印刷行はこのようになります:
/ /アダム闘争- 4s6vsxag - AdamStrife -はい!)
)
)






















