Arsip untuk Juli, 2008

Cara Memasukkan secara manual Kelompok Pengguna Into sebuah Forum SMF Menggunakan PHP

Posted in SMF (Simple Machine Forum) , php oleh ShortLikeAFox pada 30 Juli 2008

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:

  1. Nama-nama band yang tidak dijamin akan aman untuk karakter dengan karakter pindah ke database SMF. Jadi semacam mengubah nama fungsi harus bekerja.
  2. 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!

)

)
)

Cara manual Masukkan sebuah Pengguna Into sebuah Forum SMF Menggunakan PHP

Posted in SMF (Simple Machine Forum) , php oleh ShortLikeAFox pada 28 Juli 2008

Contoh khusus ini adalah untuk SMF 1.1.5. Aku tidak dapat menjamin akan bekerja dengan versi lain.

Jadi Anda menjalankan Software Forum Mesin Wikipedia dan ingin secara manual memasukkan pengguna? Ah, itu bukan apa-apa. Aku tahu masalah ini tampaknya sangat spesifik, tetapi ide-ide dijelaskan di sini dapat disesuaikan dengan jenis lain database forum dan paket perangkat lunak lain didorong seperti Wordpress. Sebelum kita masuk ke tepat bagaimana untuk melakukan hal ini, mari kita lihat bagaimana Wikipedia Machine Forum melacak pengguna. Dalam database SMF ada meja disebut smf_members. The smf_members struktur tampak seperti ini:

Lapangan Jenis Batal

Kunci Default Ekstra
ID_MEMBER mediumint (8) unsigned NO PRI NULL AUTO_INCREMENT
memberName varchar (80) NO Mul
dateRegistered int (10) unsigned NO Mul 0
posting mediumint (8) unsigned NO Mul 0
ID_GROUP smallint (5) unsigned NO Mul 0
lngfile tinytext NO Mul
lastLogin int (10) unsigned NO Mul 0
realName tinytext NO
instantMessages smallint (5) NO 0
unreadMessages smallint (5) NO 0
buddy_list teks NO
pm_ignore_list teks NO
messageLabels teks NO
passwd varchar (64) NO
emailAddress tinytext NO
personalText tinytext NO
jenis kelamin tinyint (4) unsigned NO 0
tanggal lahir tanggal NO Mul 0001-01-01
websiteTitle tinytext NO
websiteUrl tinytext NO
tempat tinytext NO
ICQ tinytext NO
AIM varchar (16) NO
YIM varchar (32) NO
MSN tinytext NO
hideEmail tinyint (4) NO 0
showOnline tinyint (4) NO 1
TIMEFORMAT varchar (80) NO
tanda tangan teks NO
timeOffset mengapung NO 0
avatar tinytext NO
pm_email_notify tinyint (4) NO 0
karmaBad smallint (5) unsigned NO 0
karmaGood smallint (5) unsigned NO 0
usertitle tinytext NO
notifyAnnouncements tinyint (4) NO 1
notifyOnce tinyint (4) NO 1
notifySendBody tinyint (4) NO 0
notifyTypes tinyint (4) NO 2
memberIP tinytext NO
memberIP2 tinytext NO
secretQuestion tinytext NO
secretAnswer varchar (64) NO
ID_THEME tinyint (4) unsigned NO 0
is_activated tinyint (3) unsigned NO 1
validation_code varchar (10) NO
ID_MSG_LAST_VISIT int (10) unsigned NO 0
additionalGroups tinytext NO
smileySet varchar (48) NO
ID_POST_GROUP smallint (5) unsigned NO Mul 0
totalTimeLoggedIn int (10) unsigned NO 0
passwordSalt varchar (5) NO

Fields kita perlu memperhatikan:

  • memberName - Explanitory Diri.
  • dateRegistered - Apakah tidak perlu, tapi jika tidak diisi menampilkan tanggal terdaftar sebagai 31 Desember 1969. Tanggal disimpan sebagai cap waktu zaman. Tidak tahu bagaimana menghitung cap waktu di kepala Anda? Ah, itu bukan apa-apa. Saya menggunakan generator bebas ditemukan di sini .
  • realName - Harus dimasukkan. Ketika aku tidak yakin aku bisa mengulang-ulang memberName di sini.
  • emailAddress - Explanitory Self.
  • is_activated - Harus di set ke 1 karena kita secara manual mengaktifkan anggota.
  • ID_POST_GROUP - Aku tidak akan berbohong. Saya tidak yakin apa ini, tapi sepertinya selalu diatur ke 4. Jadi .... Aku selalu set ke 4. Bukan cara terbaik untuk program, tetapi apa yang dapat Anda lakukan?
  • passwd - Sandi yang Anda ingin memberikan pengguna baru. Tidak mungkin untuk mengetahui cara memasukkan tanpa melihat dokumentasi SMF. Kode yang tepat untuk mengenkripsi password SMF untuk database terlihat seperti ini:

($memberName).$password) Passwd = $ sha1 (strtolower ($ memberName) sandi. $)

Dalam baris di atas kode, password $ adalah password pengguna aktual.

Cara Melakukannya:

/ / Pertama, hubungkan ke database SMF

$ host = "hostname"; / / Nama Host
$ username = "username"; / / Mysql username
$ mypassword = "password"; / / MySQL password
DB_NAME $ = "username"; / / Nama Database

("cannot connect to server"); mysql_connect ("" host $, "$ username", "$ mypassword) atau mati (" tidak dapat tersambung ke server ");
("cannot select DB"); mysql_select_db ("$ DB_NAME") atau mati ("tidak dapat memilih DB");

memberName $ = "Ironman";
$ RealName = "Tony Stark";
emailAddress $ = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

password $ = "Tony1234";

($memberName).$password); $ Password = sha1 (strtolower ($ memberName)). $ Password;

$ DateRegistered = 1216951200; / / 2008/07/25 02:00

$ query = "INSERT INTO smf_members (memberName, realName, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ memberName', '$ realName', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' $ password ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ Hasil = mysql_query ($ query) or die ("Kesalahan 101,234 SMF");

Itu semua ada untuk itu!

Cara Membuat Gambar Miniatur Menggunakan PHP

Posted in fungsi , php oleh ShortLikeAFox pada 22 Juli 2008

Jadi, Anda ingin membuat thumbnail dari gambar yang diberikan ... PHP membuat tugas ini mudah. Saya pertama kali menulis fungsi di bawah ini untuk berurusan dengan gambar upload oleh pengguna di situs saya membantu mengelola. Upload foto ke situs ini dapat JPEG, pngs, atau gifs, jadi aku harus menulis fungsi untuk menangani ketiga. Kode ini awalnya didasarkan dari fungsi yang ditemukan di webcheatsheet.com

Cara Melakukannya:

fungsi createThumbs ($ pathToImages, $ fname, pathToThumbs $, $ thumbWidth)
(

/ Parse path / untuk ekstensi

$ Info = pathinfo ($ pathToImages. $ Fname);
/ / Terus hanya jika ini adalah gambar JPEG
($info['extension']) == 'jpeg') ) if ((strtolower ($ info 'perpanjangan [']) == 'jpg') | | (strtolower ($ info perpanjangan ''] [) == 'jpeg'))
(

/ / Load gambar dan mendapatkan ukuran gambar
$ Img = imagecreatefromjpeg ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Menghitung ukuran thumbnail
$ New_width = $ thumbWidth;
$ New_height = lantai ($ tinggi * ($ thumbWidth / $ lebar));

/ / Membuat gambar sementara baru
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Copy dan mengubah ukuran gambar lama ke dalam gambar baru
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, new_width, $ new_height $, lebar, $ tinggi $);

/ / Simpan ke file thumbnail
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info 'perpanjangan [']) == 'gif')
(

/ / Load gambar dan mendapatkan ukuran gambar
$ Img = imagecreatefromgif ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Menghitung ukuran thumbnail
$ New_width = $ thumbWidth;
$ New_height = lantai ($ tinggi * ($ thumbWidth / $ lebar));

/ / Membuat gambar sementara baru
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Copy dan mengubah ukuran gambar lama ke dalam gambar baru
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, new_width, $ new_height $, lebar, $ tinggi $);

/ / Simpan ke file thumbnail
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info 'perpanjangan [']) == 'png')
(

/ / Load gambar dan mendapatkan ukuran gambar
$ Img = imagecreatefrompng ("($ pathToImages) ($ fname)");
$ Width = imagesx ($ img);
$ Height = imagesy ($ img);

/ / Menghitung ukuran thumbnail
$ New_width = $ thumbWidth;
$ New_height = lantai ($ tinggi * ($ thumbWidth / $ lebar));

/ / Membuat gambar baru sementara
$ Tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Copy dan mengubah ukuran gambar lama ke dalam gambar baru
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, new_width, $ new_height $, lebar, $ tinggi $);

/ / Simpan ke file thumbnail
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Bagaimana ini Bekerja

The createThumbs fungsi mengambil empat argumen.

  • $ PathToImages -> Path ke folder file gambar yang masuk Mungkin terlihat seperti ini: / home / konten / username / html / daftar / upload /
  • fname $ -> Nama file: pic1.gif, johnny.jpg, dll ...
  • pathToThumbs $ -> Path ke folder yang Anda inginkan gambar thumbnail akan masuk Anda TIDAK ingin hal ini menjadi jalur yang sama seperti $ pathToImages, karena gambar thumbnail akan memiliki nama yang sama dengan gambar asli.
  • thumbWidth $ -> Lebar bahwa Anda ingin thumbnail untuk berada dalam piksel.

Sebuah catatan penting bahwa saya harus membuat di sini adalah bahwa fungsi ini tidak ada di tempat, selain cek ekstensi file, untuk memastikan bahwa file gambar tidak mengandung berbahaya. Sejak createThumbs file () bekerja sama dengan telah diunggah diasumsikan bahwa file sudah benar diteliti.

Yang createThumbs Hal pertama () tidak adalah panggilan pathinfo () . pathinfo () istirahat bagian dari jalan ke dalam array. Hal ini berguna bagi kita, karena kita memerlukan ekstensi file untuk benar membuat thumbnail. createThumbs Next () memeriksa untuk melihat apakah kita berhadapan dengan suatu jpeg. Jika file asli adalah sebuah createThumbs jpeg menciptakan citra baru berdasarkan citra asli dengan imagecreatefromjpeg () . Langkah berikutnya adalah untuk mendapatkan lebar dan tinggi gambar ini ( imagesx () , imagesy () ). Menggunakan $ thumbWidth dan rasio dari lebar asli dan createThumbs tinggi () set lebar baru dan tinggi thumbnail. Menggunakan createThumbs baru rasio () menciptakan "kosong" gambar yang akan lebar yang sama dan tinggi thumbnail dengan imagecreatetruecolor () . imagecopyresized () digunakan untuk mengubah ukuran gambar dan menyimpannya dalam "kosong" baru saja dibuat. imagecopyresized () mungkin tampak seperti itu memerlukan banyak parameter, tetapi jika Anda lihat dokumentasi itu sebenarnya tidak terlalu rumit. Sekarang thumbnail ada sebagai gambar true color semua createThumbs perlu lakukan adalah mengkonversi file ke sebuah jpeg. Untuk melakukan hal ini imagejpeg () dipanggil.

Begitulah fungsi bekerja untuk JPEG. Ada perbedaan minimal. Pngs dan. Gifs.

Cara Menulis Kode Browser Tertentu dengan PHP

Posted in php oleh ShortLikeAFox pada 21 Juli 2008

Jadi Anda ingin menulis kode yang hanya muncul pada browser tertentu ... Ada beberapa alasan untuk ingin melakukan hal ini. Pertama kali saya pribadi yang dibutuhkan untuk melakukan hal ini terjadi ketika saya mencoba untuk menanamkan sebuah mp3 pada halaman tertentu. Untuk beberapa alasan aku tidak bisa menulis kode sehingga mp3 akan bermain pada browser saya uji pada (IE, Firefox, dan Opera), dan memvalidasi pada saat yang sama. Jika Aku ingat benar, itu Internet Explorer yang menyebabkan masalah. Solusi ini saya datang dengan adalah menggunakan PHP kecil untuk mengetahui bila pengguna menggunakan IE, dan kemudian menanamkan mp3 dalam kode non-berlaku jika itu kasusnya.

Solusi ini menyebabkan mp3 selalu bermain dengan benar dan halaman selalu validasi, karena validator W3C tidak pernah mengidentifikasi diri sebagai IE. Ini mungkin bukan cara yang paling etis untuk mencapai kepatuhan W3C, tetapi bekerja.

Lain kali aku mengingat perlu menulis kode khusus browser adalah ketika aku sedang mengalami masalah dengan IE 6 tidak menampilkan saya. Png gambar dengan benar. I googled sekeliling dan menemukan beberapa solusi untuk masalah ini, namun mereka berdua akhirnya mengacaukan lokasi lapisan keseluruhan pada halaman saya. Alih-alih mengatasi masalah masalah itu, saya pergi dengan solusi cepat dan memutuskan untuk ditampilkan. Gifs bila pengguna telah IE 6. Jika pengguna memiliki browser yang lain png masalah. Saya pikir itu terlalu buruk baginya.

Cara melakukannya:

Pertama yang perlu untuk menulis sedikit garis kode untuk mengetahui apa yang pengguna browser Anda. Berikut adalah cara untuk melakukannya dengan PHP:

  • 'HTTP_USER_AGENT' ]; $ VisitorsOS = $ _SERVER ['HTTP_USER_AGENT'];

Berikut adalah tiga contoh dari apa yang $ visitorsOS dapat terlihat seperti

  • Mozilla/4.0 (compatible; MSIE 6,0; Windows NT 5.1; SV1;. NET CLR 1.0.3705;. NET
  • Opera/9.51 (Windows NT 5,1; U; pl)
  • Mozilla/5.0 (Windows; U; Windows NT 5,1; en-US; rv: 1.9) Gecko/2008052906 Firefox

Pengguna pertama memiliki Internet Explorer 6, Opera kedua 9,51, dan Firefox ketiga.

Setelah kita mengetahui informasi yang lebih daripada yang kita benar-benar membutuhkan tentang komputer pengunjung, kita perlu menaruh informasi bahwa untuk menggunakan baik. Katakanlah Anda ingin menulis kode yang hanya akan muncul jika pengguna menjalankan versi Internet Explorer. Dalam hal ini Anda akan melakukan hal ini:

('MSIE',$visitorsOS)){ if (eregi ('MSIE', $ visitorsOS)) (

KODE BAHWA hanya akan muncul jika PENGGUNA HAS IE

)

else (

KODE yang akan muncul di SEMUA KASUS LAINNYA

)

Saya menggunakan eregi, kasus sensitif cocok dengan ekspresi reguler, bukan ereg, kasus pertandingan sensitif ekspresi reguler. Saya tidak ingat jika saya melakukan ini keluar dari paranoia, atau jika aku benar-benar menemukan kasus di mana Internet Explorer mengidentifikasi diri sebagai MSIE. Dalam kasus eregi baik tidak akan menyakiti sesuatu sehingga apa yang saya gunakan. Ingin menulis kode untuk versi khusus IE hanya akan membutuhkan perubahan kecil. bukan ... (eregi ('MSIE' ...) Saya akan menggunakan sesuatu seperti (eregi ('MSIE 6,0' ...) jika saya ingin kode yang hanya muncul untuk MSIE 6.0.