Kamis, Juli 24, 2008

Install PHP MSSQL Extention (mssql.so) on Linux Slackware (UNIX)

Hari ini saya lagi kesulitan untuk "Membuat koneksi MSSQL dari PHP di Sistem Operasi Linux/UNIX khususnya Slackware 12". Hampir semua referensi yang saya temukan rata-rata minim informasi dan hasil copy paste dari Manual PHP, langsung terpikir oleh saya "blum coba udah berani jawab" :p. Okie lanjut.... Akhir (tapi belum menyelesaikan masalah) saya temukan satu Blog HOW TO GET IT DONE dari hasil pencarian di google dengan keyword "make php mssql.so" (Update: Coba deh gunakan keyword "ODBC connectivity using UNIX ODBC and FreeTDS" mungkin lebih manjur). Awalnya saya mengikuti Manual Installasi dari PHP dan FreeTDS, tapi repotnya gimana cara meng-compile kembali PHP yang sudah terinstall duluan. Kebetulan saya menggunakan Linux Slackware 12 dan menggunakan PHP yang ada dalam packet Slackware. Binunnnnn gimana cara kompile ?? OK, inilah langkah-langkah yang saya lakukan : #Ref 2008-07-25 * Ada yang lupa 1. Install unixODBC package download di http://www.unixodbc.org/
# tar -xvzf unixODBC-2.2.12.tar.gz # ./configure –prefix=/usr/local –enable-gui=no
2. Sesuai dengan instruksi manual PHP untuk menggunakan extentions MSSQL harus terinstall library FreeTDS. Silahkan download di http://www.freetds.org/ Extract paket freeTDS dan install
# tar -xvzf freetds-stable.tgz # cd freetds-x.x/ # ./configure –-with-tdsver=8.0 –-with-unixODBC=/usr/local --enable-msdblib --prefix=/usr/local/freetds # make # make install
pada saat config untuk kebutuhan PHP extention disyaratkan untuk mengaktifkan MSDlib dan ada baiknya memperhatikan prefix instalasi (defaultnya = /usr/local) Setelah selesai copy file-file berikut
# cp [tds source]/include/tds.h /usr/local/freetds/include # cp [tds source]src/tds/.libs/libtds.a /usr/local/freetds/lib
3. Download PHP source (jika tidak ada) sesuai dengan versi yang anda gunakan kemudian extract
# tar -xzf php-x.x.x.tar.gz # cd php-x.x.x/ext/mssql # phpize && ./configure --with-mssql=/usr/local/freetds # make && make install
4. Jika sudah selesai Selanjutnya perhatikan baris bagian
Libraries have been installed in: php-x.x.x/ext/mssql/modules
Copy mssql.so ke folder extetions php, misalkan
# cp php-x.x.x/ext/mssql/modules/mssql.so /usr/lib/php/extensions/
5. Edit php.ini, tambahkan baris: extension=mssql.so #Ref 2008-07-25 6. Configuration - freeTDS File : /usr/local/etc/freetds.conf (default)
[MSTEST] host = 192.168.1.100 port = 1433 tds version = 8.0
#Ref 2008-07-25 7. Configuration – unixODBC File : /usr/local/etc/odbcinst.ini
[TDS] Description = FreeTDS driver Driver = /usr/local/lib/libtdsodbc.so Setup = /usr/local/lib/libtdsodbc.so Trace = Yes TraceFile = /tmp/freetds.log FileUsage = 1
File : /usr/local/etc/odbc.ini
[MSTEST] Driver = TDS Description = MS SQL Test Trace = Yes TraceFile = /tmp/mstest.log Servername = 192.168.1.100 Database = testdb Port = 1433
8 . Restart Apache & Lihat phpinfo Hasil Test di Server
root@cppda:~# cat t.php <?php if (function_exists("mysql_connect")) { echo "MySQL Support\n"; } if (function_exists("mssql_connect")) { echo "MS-SQL Support\n"; } $DBSERVER="192.168.1.100"; $DBUSER="test"; $DBPASS="test123"; if ($cn = mssql_connect($DBSERVER, $DBUSER, $DBPASS)) { echo "Connected to $DBSERVER \n"; } ?> root@cppda:~# php t.php MySQL Support MS-SQL Support Connected to 192.168.1.100 root@cppda:~#
LETS THE ROCK NOW!!!! Reference :

Custom php.ini value di Share Web Hosting

Langsung aja ya..... buat yang menggunakan Share Web Hosting yang tidak mengijinkan akses langsung ke php.ini nih ada sedikit tips kalo kamu malas buka manualnya.
  1. Menggunakan fungsi ini_set(varname,varvalue) ini_set("register_global","on")
    Please note that register_globals cannot be set at runtime (ini_set()). Although, you can use .htaccess if your host allows it as described above. An example .htaccess entry: php_flag register_globals off.
  2. Jika menggunakan apache webserver dan PHP sebagai module, konfigurasi dapat dimasukkan pada file httpd.conf dan htaccess. Dan pada option directory jangan lupa untuk menambahkan "AllowOverride Options" atau "AllowOverride All" Contoh :
    <IfModule mod_php5.c> php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on </IfModule>
  • php_value name value
  • php_flag name on|off Gunakan php_flag untuk yang nilainya on/off
  • php_admin name value tidak bisa digunakan di .htaccess
  • php_admin_flag name on|off tidak bisa digunakan di .htaccess
Tapi ingat tidak semua dapat di set lewat cara diatas, sebaiknya baca List of php.ini directives
Definition of PHP_INI_* constants
Constant Value Meaning
PHP_INI_USER 1 Entry can be set in user scripts or in Windows registry
PHP_INI_PERDIR 2 Entry can be set in php.ini, .htaccess or httpd.conf
PHP_INI_SYSTEM 4 Entry can be set in php.ini or httpd.conf
PHP_INI_ALL 7 Entry can be set anywhere
Sumber : http://id.php.net/manual/en/

Kamis, Juli 10, 2008

SQL injection !

Akhirnya kena juga batunya :p, itulah kira-kira ungkapan yang tepat karena tidak teliti dan menunda apa yang seharusnya sudah dapat dikerjakan saat itu juga. Kejadian ini memang berlangsung beberapa minggu yang lalu tapi baru hari teringat. Ya.. ya... hal yang saya anggap kecil sampai tidak pernah saya pikirkan tentang mysql_escape_string() dan mysql_real_escape_string(). So, ada apa dengan mysql_escape_string() dan mysql_real_escape_string(). Keduanya adalah fungsi build in PHP4 dan PHP5 untuk meng-Escape special characters dalam string yang digunakan dalam SQL statement. Tapi yang membedakan mysql_real_escape_string() digunakan harus lewat koneksi mysql dulu dengan fungsi mysql_connect().
"A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned. If link_identifier isn't defined, the last MySQL connection is used Quote from PHP Manual"
ingat keduanya tidak mengescape karakter '%' dan '_' (underline). Next..... akibat mengabaikan fungsi ini, salah satu client web saya memberitahukan bahwa webnya kena "hack" WOW.... Setelah saya periksa ternyata kena serangan SQL Injection :p. itu karena kelalaian saya sendiri tidak mempedulikan fungsi diatas. Sebetulnya hampir 1 tahun yang lalu saya mendapat info dari rekan saya 'scut' k-elektronik, beliau menginformasikan salah satu situs saya ada yang bolong bisa di SQL Injection hehehehehe tapi saya tidak terlalu tanggapi serius karena situs yg dimaksud versi mysql dan phpnya blum di updagrade dan server tersebut sudah siap-siap dipensiunkan (pensiun sejak 2007 awal kalo ndak salah :p). Mungkin ada yang bingung bagaimana sebuah situs bisa kena SQL Injection (seperti kejadian stus KPU Waktu pemilu 2004). Yang jelas sebuah situs bisa kena SQL injection diakibatkan diantaranya karena :
  1. Password admin untuk back-END atau bagian control panelnya tidak di encrypt menggunakan hash seperti MD5
  2. variable string untuk Query SQL tidak di escape
Dan bagaimana mengatasi supaya tidak kena SQL injection, sangat disarankan untuk menggunakan fungsi mysql_escape_string() atau mysql_real_escape_string(). Seandainya saya tidak menggunakan fungsi tadi gimana ?? Trus dimana saya letakkan fungsi tersebut ?? apakah disemua variable ??? Untuk lengkap dan panjang lebarnya nih disini http://www.php.net/manual/en/security.database.sql-injection.php

Selasa, Juli 08, 2008

Lupa password MySQL (Re-Post php-id.org)

Sangat menyebalkan jika suatu saat kita lupa password MySQL kita. Kalo hanya user saja tidak mengapa. Tetapi bagaimana jika password root pun juga hilang dari ingatan ? Berikut caranya: 0. berdoa 1. matikan service mysqld 2. jalankan service mysqld dengan tambahan opsi "--skip-grant-tables" 3. jalankan mysql-client dengan tambahan opsi "-u root -p" 4. jalankan query: "UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';" 5. jalankan command: "FLUSH PRIVILEGES" sukses? ref: tech-faq.com Source

Senin, Juli 07, 2008

Optopro 2 Beta.1 Run Test

Project Optopro 2 kini dalam tahap uji coba ke-2. Tepatnya hari ini 7 Juli 2008 Optopro 2 Beta.1 diujicoba di Optik Rame Gallery Tomohon. Proses ujicoba dimulai tadi pagi pkl 09.00 dimana sebelumnya telah dilakukan konversi data dari Optopro v1 ke Optopro 2. Upgrade v1 ke v2 data yang dapat dikonversi :
  1. Data Pelanggan
    • Profile
    • Optometry
    • Data Kunjungan
    • Resep (Rx Kacamata)
  2. Data Item
    • Lensa
    • Frame
    • Asesoris
    • Cairan/Solution
    • Jasa
    • Lain-lain
  3. User Akses
Berikut tampilan Optopro 2 CSO Module #Ref 2.0.1 Optopro 2 Requirement
  • Windows XP+, Linux with KDE
  • PHP 5.2+
  • MySQL 5.0+
  • Apache 2+
  • FireFox 2+ (recomend FireFox 3) or Internet Explore 7+ optional
What is Optopro ? Optopro ada aplikasi yang dikembangkan untuk kebutuhan system management Optical berbasis Web di dukung dengan teknologi Web2 (AJAX).

Tips Untuk System Administrator (repost)

Re-post “Tips Untuk System Administrator”

Bekerja sebagai seorang System Administrator (sysadmin) tidaklah sesulit atau semudah yang anda bayangkan. Namun jauhkan dulu bayangan anda dari seorang sysadmin pada perusahaan besar sekaliber Yahoo dan Google, atau sysadmin pada perusahaan telekomunikasi sekelas XL, Telkom, Indosat dan lainnya di Indonesia. Coba anda bayangkan sebuah warnet kecil atau perusahaan kecil yang hanya memiliki 10 unit komputer workstation dengan 1 atau 2 buah server yang menjalankan service dns, proxy, web dan mail selain juga berfungsi sebagai internet gateway.

Berikut beberapa tips yang saya praktekan sebagai seorang sysadmin. Tulisan ini berdasarkan pengalaman pribadi saya dalam mengelola server dan workstation beserta jaringannya di beberapa warnet kecil, beberapa kantor pemerintah, beberapa perusahaan hingga ISP juga masukan dari teman-teman sesama sysadmin, beberapa diantaranya adalah referensi yang pernah saya baca di internet tapi saya lupa penulisnya. Beritahu saya jika anda menemukan tulisan anda disini, saya dengan senang hati akan mengupdate tulisan ini dan mencantumkan nama anda tentunya.

Tips ini pasti sudah basi bagi para sysadmin kawakan, tapi mungkin berguna bagi para sysadmin pemula dalam bersikap dan bertindak sebagai seorang sysadmin pada tempatnya bekerja.

Kenali semua hardware yang ada di lingkungan kerja anda. Anda akan kebingungan setengah mati ketika salah satu komputer di tempat anda bekerja rusak, entah rusak hardwarenya atau hanya softwarenya sehingga harus diinstall ulang sedangkan anda tidak memiliki drivernya. Anda hanya dapat mendownload drivernya dari internet tentunya jika anda mengenal persis hardwarenya.

Kuasailah lebih dari satu sistem operasi. Setiap sistem operasi memiliki keunggulan tersendiri. Anda tentunya harus dapat menggabungkan keunggulan-keunggulan ini hingga tercipta sebuah jaringan komputer yang handal dalam mendukung kinerja teman-teman sekantor anda atau pengguna warnet tempat anda bekerja.

Pahami aplikasi yang sering digunakan di kantor/warnet tempat anda bekerja. Ruang lingkup pekerjaan sysadmin tidak hanya menginstall dan mengawasi kinerja server, workstation, jaringan atau printer. Tak jarang sysadmin juga akan didera dengan pertanyaan sepele, contohnya seperti “bagaimana memasukan gambar di word?”. Tentunya anda malu bukan jika orang sekantor mengatakan anda “sysadmin kok nggak bisa ini… nggak bisa itu”. Padahal memang mereka aja yang bego dan itu bukan salah satu skill yang anda jual di CV saat melamar kerja.

Jangan pernah memberikan password super user anda kepada orang lain selain kepada sesama sysadmin di tempat anda bekerja. Akses super user selain merupakan kebanggaan seorang sysadmin juga merupakan nyawa anda dalam bekerja. Kehilangan akses ini adalah malapetaka bagi anda apalagi jika didalamnya tersimpan data-data penting perusahaan. Anda harus bekerja ekstra (mungkin sendirian) untuk mendapatkan kembali akses ini beserta data-data di dalamnya dengan cara apapun secepatnya.

Berikan akses terbatas bagi pengguna workstation atau server. Masih berkaitan dengan tip sebelumnya, disinilah letak perbedaan seorang sysadmin dengan karyawan lainnya hehehe.

Biasakanlah mencatat semua kejadian. Sejauh yang saya tahu, jarang pemimpin perusahaan/warnet yang meminta laporan harian, mingguan atau bulanan dari sysadminnya atau dari departemen IT-nya. Tapi sebaiknya kejadian sekecil apapun yang terjadi pada lingkup pekerjaan sysadmin bisa tercatat untuk mempermudah dalam mengatasi masalah-masalah baru yang mungkin timbul dikemudian hari.

Aktifkan system logging di server dan router dan siapkan waktu khusus hanya untuk membaca berkas log ini. Hampir tidak ada perusahaan kecil/warnet yang menggaji 2 orang atau lebih sysadmin, sedangkan anda sendiri tidak mungkin berada di depan layar komputer selama 24 jam. Dengan mengaktifkan system logging ini anda akan tau apa saja yang terjadi selama anda away from keyboard (AFK). Jika memungkinkan buatlah server khusus untuk sentralisasi berkas log ini (syslog server). Selain system log, ada beberapa berkas log lain yang seperti tidak berguna antara lain access log web dan proxy server namun sebenarnya sangat penting dalam menganalisa atau memantau aktivitas keluar masuk jaringan komputer kantor/warnet tempat anda bekerja.

Install tool seperti MRTG untuk memantau penggunaan bandwidth lokal maupun ke internet juga CPU/Memory load pada server dan workstation. Dengan hanya memantau grafik MRTG ini, anda akan segera mengetahui keanehan yang terjadi didalam jaringan atau komputer-komputer yang berada di jaringan anda. Jika anda masih pemula dalam menggunakan tool seperti ini, percaya saya, bahwa anda akan betah seharian memandang naik-turun grafik ini.

Tutup semua layanan yang tidak penting pada server anda. Anda mungkin akan dikatakan sebagai sysadmin yang terlalu paranoid. Tapi ketahuilah, hanya sysadmin yang paranoid yang bisa menjadi seorang sysadmin handal. Lagipula untuk apa menjalankan service yang tidak akan digunakan? atau mengapa harus membiarkan paket data bebas lalu lalang lewat port 6660-7000 atau port 5050 jika di kantor anda melarang karyawannya chatting selama jam kerja?.

Un-install semua aplikasi yang tidak dibutuhkan di workstation. Kali ini anda mungkin akan dikatakan sebagai seorang sysadmin yang kejam, tapi itulah tugas anda. Perbiasakan diri anda untuk tidak mau direpotkan dengan aplikasi-aplikasi yang sebenarnya tidak penting dan tidak pernah digunakan di kantor yang justru mengganggu aplikasi-aplikasi penting yang sering digunakan.

Jangan perbaiki sesuatu yang tidak rusak! “If it ain’t broke, don’t fix it”, saya pertama kali diperkenalkan dengan kata ini oleh seorang teman yang juga salah satu guru komputer saya -Iwan Kilis. Hal ini sering menjadi penyakit sysadmin pemula dikarenakan rasa ingin tahu yang sangat besar. Kebiasaan mengutak-atik konfigurasi atau mengupgrade sebuah software yang sedang running well bisa menjadi salah satu sumber malapetaka. Apalagi jika anda melakukannya pada sebuah server penting yang melayani seluruh kegiatan kantor/warnet anda. Jika memungkinkan, lakukan ini pada mesin uji coba yang tidak penting.

Ikuti perkembangan sistem operasi dan aplikasi yang digunakan di kantor/warnet tempat anda bekerja. Segera upgrade jika dibutuhkan. Saya tahu, anda mungkin bilang tip ini kontra dengan tip sebelumnya diatas (jangan kuatir, anda nantinya akan mengerti hubungan dan perbedaannya). Untuk itu anda perlu mengetahui perbedaan versi lama dan baru sebuah software, apa saja yang ditambahkan, ditambalkan atau malah dikurangi dari versi sebelumnya. Lakukan upgrade hanya jika anda menemukan perbedaan penting yang akan memberikan pengaruh besar terhadap kinerja kantor/warnet anda. Misalnya security patch atau tambahan fitur baru yang menurut anda berguna.

Bergaul! Ya.. bergaul, mendaftarlah pada mailing-list atau forum yang membahas sistem operasi dan aplikasi (software) serta hardware yang sering anda hadapi dalam pekerjaan anda sebagai seorang sysadmin. Dalam bertanya, berikan petunjuk yang lengkap misalnya log atau konfigurasi anda, sebab peserta mailing-list atau forum yang anda ikuti bukan paranormal. Malu bertanya, sesat dijalan, tapi perlu diingat pula bahwa terlalu banyak bertanya artinya tidak tahu malu, cobalah sekali sekali menjawab pertanyaan orang lain tentunya anda harus memberikan jawaban yang tidak asal-asalan. Perhatikan tata tertib mailing-list atau forum yang anda ikuti, selalu ucapkan terima kasih atas saran-saran yang diberikan.

Diatas semua tips yang saya tulis disini, yang terpenting yang harus dikuasai oleh seorang sysadmin adalah ketelitian. Anda akan terlihat sangat bodoh jika tidak teliti.

README, FAQ, CHANGELOG, INSTALL, SETUP, HOWTO adalah beberapa nama berkas yang akan sering anda baca. Jangan malu atau merasa bodoh ketika anda terlihat sedang membaca berkas ini berulang kali, sebab berkas ini dibuat untuk dibaca.

Menjadi seorang sysadmin adalah sebuah kesempatan dan kepercayaan yang diberikan, bukan keputusan anda sendiri, jadi pergunakan kesempatan dan kepercayaan tersebut sebaik-baiknya.

Terima kasih :

Aplikasi Pengenalan Wajah menggunakan PHP

Meskipun PHP bukanlah bahasa yang paling umum digunakan untuk pengenalan wajah (Python dengan pustaka seperti OpenCV dan face_recognition le...