Cara Memasukkan secara manual Kelompok Pengguna Into sebuah Forum SMF Menggunakan PHP
Tutorial ini mengasumsikan Anda sudah familiar dengan posting saya: Bagaimana untuk secara manual Masukkan sebuah Pengguna Ke Forum SMF Menggunakan PHP .
Saya baru-baru ini menghadapi tantangan untuk bergerak 800 atau sehingga band dari database ke dalam sebuah forum SMF. Saya menghadapi beberapa masalah ketika membuat langkah bahwa saya tidak berlindung di posting pertama:
- Nama-nama band yang tidak dijamin akan aman untuk karakter dengan karakter pindah ke database SMF. Jadi semacam mengubah nama fungsi harus bekerja.
- Band tidak memiliki password. Jadi beberapa jenis kebutuhan generasi password untuk dipekerjakan.
Langkah saya pergi akan mendaftar semua band di forum jadi sedikit seperti ini:
Buka Database Band
untuk setiap (Band) (
Hasilkan Password
Ubah nama Band dengan "nama aman"
Ambil dan menghasilkan informasi yang diperlukan untuk memasukkan pengguna
Masukkan Band ke smf_members
Band Kirim email dengan password
)
Informasi yang saya telah tersedia dari database band yang berguna termasuk: bandName, bandEmail, dan bandWebsite
Berikut adalah fungsi pembuatan password dulu (blatently diambil dari totallyphp.co.uk ):
createRandomPassword fungsi () (
$ chars = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ I = 0;
$ Pass = ";
sementara ($ i <= 7) (33; $ num = rand ()% 33;
$ Tmp = substr ($ chars, $ num, 1);
$ Pass = $ pass. $ Tmp;
$ I + +;)
return $ pass;
)
Sandi dibuat di sini adalah relatif lemah, tapi cukup baik untuk tujuan saya. Setiap fungsi pembuatan password akan bekerja dengan baik di sini. Saya memilih satu ini karena akan mudah bagi anggota untuk mengingat jika mereka memilih untuk tidak mengubahnya.
Cara Do It:
/ / Pertama terhubung ke database band
$ username = "bandUsername";
$ host = "bandHost";
$ mypassword = "bandPassword";
DB_NAME $ = "bandDatabase";
("cannot connect to server"); mysql_connect ("" host $, "$ username", "$ mypassword") or die ("tidak dapat terhubung ke server");
("cannot select DB"); mysql_select_db ("$ DB_NAME) atau mati (" tidak dapat memilih DB);
/ / Sekarang ambil semua band dari database
$ Query = "SELECT FROM * allBands";
band $ = mysql_query ($ query) or die ("Config Error 2222b");
$ UserRows = mysql_num_rows ($ band);
/ / Sekarang mari kita terhubung ke SMF itu db
$ host = "smfhost"; / / Nama Host
username = $ "smfuser; / / Mysql username
$ mypassword = "smfpassword"; / / MySQL password
DB_NAME $ = "smfdatabase"; / / Nama Database
("cannot connect to server"); mysql_connect ("" host $, "$ username", "$ mypassword") or die ("tidak dapat terhubung ke server");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("tidak dapat memilih DB");
/ / $ Vaild_chars akan menjadi array karakter yang diizinkan untuk nama pengguna. Aku memutuskan untuk hanya membolehkan huruf dan angka. Ada karakter lain yang dapat digunakan yang tidak akan menimbulkan masalah, tetapi untuk alasan gaya saya memutuskan untuk pergi dengan hanya huruf dan angka
valid_chars $ = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
valid_chars $ = meledak ("", $ valid_chars);
/ / Sekarang kita perlu loop melalui band masing-masing
){ for (i = 0 $, $ i <$ userRows; $ i + +) (
($bands)){ if ($ baris = mysql_fetch_assoc ($ band)) (
/ / Ambil band informasi
ekstrak ($ baris);
/ Buat password untuk band
$ RealPassword = createRandomPassword ();
/ / Aku memilih untuk menggemakan bandname dan password sebagai bagian dari debugging saya dan agar aku dapat melihat fungsi seperti karya
gema ("<br/> bandName - realPassword $ $");
$ NewBand = "";
/ / Untuk setiap huruf dalam nama band kita akan melihat apakah itu cocok dengan karakter yang valid dari $ valid_chars. Hal itu tidak kita akan menyingkirkan dan truncate nama band
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName); $ j + +) (($band[$j])); temp $ = str_replace ($ valid_chars, "X", strtolower ($ band [$ j]));
if ($ temp == "X")band newBand $ newBand = $. $ [$ j];
)
/ / Aku echo nama baru untuk alasan yang sama saya echo nama lama dan password
echo ("- $ newBand");
/ / Kami punya nama Band baru .... sekarang mari kita mulai buliding informasi yang kita butuhkan untuk menyisipkan di db ...
$ MemberName = $ newBand;
realName $ = $ newBand; / / cara menetapkan nama asli dan nama anggota yang sama. Band bisa mengubahnya jika mereka ingin
$ EmailAddress = $ bandEmail;
$ WebsiteUrl = $ bandWebsite; / / Sejak saya memiliki band 'situs mungkin juga masukkan mereka
$ WebsiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = sha1 (strtolower ($ memberName) realPassword. $); / / Password harus dienkripsi/ / Pastikan anggota isn'ta mereka dengan nama yang sama dalam database SMF. Kami tidak ingin orang sengaja memasukkan dua kali
$ query = "SELECT * FROM WHERE smf_members memberName" memberName = '$';
("Config Error 2222343242b"); $ Hasil = mysql_query ($ query) or die ("Config Error 2222343242b");
$ Nrows = mysql_num_rows ($ hasil);/ / Jika nama anggota yang ditemukan melakukan apa-apa
if ($ nrows> 0) ()else (
/ / Jika pengguna belum mendaftar untuk forum, melakukannya dan mengirim email ....
$ query = "INSERT INTO smf_members (memberName, realName, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ memberName",' $ realName ", '$ emailAddress",' $ is_activated ", '$ ID_POST_GROUP' , '$ password', '$ websiteUrl', '$ websiteTitle') ";("Config Error 2232 "); $ Hasil = mysql_query ($ query) or die ("Kesalahan Config 2232");
/ / Sekarang kita perlu mengirim email band
$ Kepada = $ emailAddress;
$ Subject = "Anda forum username dan password";/ / Dari
$ Header = "dari: Aku <me@mysite.com>";/ / Pesan Anda
$ Pesan .= "login Anda dan password yang terdaftar di bawah Anda dapat mengubah baik kapan saja.. Jika Anda tidak ingin berpartisipasi dalam forum kami, itu bukan masalah. Hanya pernah login dan akan menjadi seperti tidak pernah terjadi. \ r \ n ";
Password $ pesan .= "Username: $ memberName: $ realPassword \ r \ n";/ / Mengirim email
sentmail $ = mail ($ kepada, $ subjek, $ pesan, $ header);
if ($ sentmail)echo ("- YA)!";
/ / Ini adalah bagian terakhir dari kami echo. The-"YA!" hanya akan dicetak jika email dikirim. Jadi garis cetakan lengkap akan terlihat seperti ini:
/ / Adam Strife - 4s6vsxag - AdamStrife - YA!)
)
)








































