Browsing all articles in PHP dan MySQL

Awalnya habis ngubah sebuah field yang tadinya integer dan terhubung dengan tabel yang lain, karena berbagai pertimbangan akhirnya harus diubah varchar. Jika tabel mysql tersebut belum ada isinya sih gak jadi masalah, kasus ini tabelnya sudah ada isinya oleh karena itu mau tidak mau harus di update dong isinya kan gak lucu kalo isinya jadi angka. Masalah berikutnya tabel tersebut sudah ke isi yang baru sehingga isinya jadi bervariasi ada yang masih angka dan ada yang sudah dalam bentuk kata. Jadi untuk mengupdatenya kita mesti tahu nilai untuk field tersebut angka atau bukan, kalo angka maka di update, kalo bukan gak usah di update.

Setelah googling ketemu solusi di sini untuk menyeleksi apakan nilai field tersebut angka atau bukan. Caranya adalah dengan menggunakan REGEXP sebagai berikut.

SELECT FIELD FROM TABLE WHERE FIELD REGEXP '^-?[0-9]+$';

Contoh kasus yang saya alami adalah, saya ingin mengupdate tabel users pada field city yang tadinya integer terhubung ke tabel city menjadi varchar. Intinya saya akan mengupdate nilai field city pada tabel user dengan nama city pada tabel city yang nilai field city pada tabel user berupa angka. SQL yang saya gunakan adalah sebagai berikut.

UPDATE users SET city=(SELECT name FROM city WHERE city.id=users.city) WHERE city REGEXP '^-?[0-9]+$'

dan ternyata BERHASIL :)

Abis install wordpress di php 5.3 dan pas mau setting permalink yang keluar malah blank page, kirain dari plugin yang di gunakan, coba non aktifkan plugin dan masih gak bisa juga. Terpaksa setting manual lewat phpmyadmin pada table wp_options dan key permalink_structure. Ok permalink beres :D

Rencana nambahin plugin buat sitemap generator, dari menu Plugins >> Add new, cari dg kata kunci sitemap, pilihan jatuh pada BWP Google XML Sitemaps yang menurut pengakuan si pembuatnya lebih hemat resource. Install deh tuh plugin, download berhasil saatnya aktivasi, tapi pas di klik di link Activate kok keluarnya halaman depat dan tertulis not found. duh kenapa lagi nih… download plugin testing di localhost, lancar2 aja.

Daripada pusing mending nanya simbah aka gugel dg kata kunci wordpress php 5.3 dan ketemu link ini langsung ke bagian bawah dan solusinya adalah matikan extension extension=pdo_sqlite.so dan extension=sqlite.so di file php.ini. Oh ya saya bisa mengubah php.ini karena web saya ada di vps jadi saya punya hak akses untuk mengubah file tersebut. Kalo di shared hosting yang berarti harus menghubungi pihak penyedia jasa hostingnya.

Mau aplikasi PHP kamu bisa mengirim email walaupun kamu menjalankannya di localhost dengan OS Windows? Mau tau caranya? silahkan teruskan membacanya :D .

Untuk mengirim email menggunakan fungsi mail dari localhost yang perlu dilakukan adalah mengubah konfigurasi PHP (file php.ini) pada bagian [mail function] seperti berikut.

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25
 
; For Win32 only.
;sendmail_from = webmaster@localhost
 
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = 
 
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

Read more »

Memenuhi permintaan salah satu pemberi komentar pada tulisan ini, kali ini saya akan memberikan sedikit tutorial bagaimana menggabungkan Feed on Feeds dengan CodeIgniter seperti situs ringkasan berita. Feed on Feeds merupakan script PHP yang berfungsi untuk membaca RSS dari suatu website dan menyimpannya dalam database. Sedangkan CodeIgniter merupakan framework PHP yang bisa didapatkan secara gratis. Sebenarnya kita bisa menggunakan framework lain untuk digabungkan dengan Feed on Feeds atau kita juga bisa membuat script sendiri. Penggabungan ini bisa digunakan untuk membuat website rss aggregator. Feed on Feeds berfungsi sebagai pembaca RSS sedangkan codeigniter berfungsi untuk menampilkannya sehingga bisa dilihat oleh orang banyak.

Mengerti PHP dan MySQL adalah syarat yang diperlukan untuk menggabungkan Feed on Feeds dengan CodeIgniter atau dengan framework yang lain. Langkah pertama yang harus dilakukan adalah instalasi feed on feeds. Lakukan installasi feed on feeds pada sebuah direktori (jangan pada root direktori), misalnya yourdomain/feedonfeeds. Setelah installasi selesai anda akan mendapatkan sebuah database dengan enam tabel.

Langkah kedua adalah membuat tabel kategori dan tabel relasi antara table kategori dan table feed. Tabel kategori berfungsi untuk mengkategorikan RSS feed yang kita masukan pada Feed on Feeds, sedangkan tabel ralasi berfungsi untuk menghubungkan antara tabel kategori dengan tabel feed. Dengan tabel relasi ini anda bisa menghubungkan satu kategori dengan beberapa rss feed. Contoh struktur tabel kategori adalah sebagai berikut.

CREATE TABLE `fof_kategori` (
`catid` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`parentid` INT( 11 ) NOT NULL ,
`catname` VARCHAR( 255 ) NOT NULL ,
`published` ENUM( 'N', 'Y' ) NOT NULL DEFAULT 'N'
) ENGINE = MYISAM ;

sedangkan contoh struktur tabel relasinya adalah

CREATE TABLE `fof_kategori2feed` (
  `catid` INT(11) NOT NULL,
  `feed_id` INT(11) NOT NULL,
  KEY `catid` (`catid`),
  KEY `feed_id` (`feed_id`)
) ENGINE=MyISAM;

Langkah terakhir adalah menggunakan CodeIgniter atau yang lain untuk menampilkan feed item dari database. Anda bisa memasang cronjobs untuk mengupdate feed on feeds anda secara otomatis.

Anda mempunyai website yang mengijinkan pengunjung untuk memasukkan kontent ke website Anda tanpa harus login? Misalnya form komentar, buku tamu dan lain-lain. Untuk menghindari spamming atau otomatisasi, metode yang paling umum adalah memasang kode captcha dalam bentuk gambar atau yang lainnya. Untuk metode gambar sebenarnya masih mempunyai kelemahan, karena kita bisa mengakses gambar tersebut secara remote atau tanpa harus mengunjungi website. Oleh karena kelemahan tersebut website kita masih bisa di otomatisasi atau memasukkan konten tanpa harus mengunjungi website tersebut.

Cara sederhana berikut bisa digunakan untuk mencegah terjadinya hal di atas. Skenarionya adalah kita membuat kode unik setiap kali halaman form kita di load, kode unik tersebut kita simpan dalam COOKIE atau SESSION dan pada form isian kita tambahkan satu hidden field yang berisi kode unik tersebut. Pada saat form di submit kita cocokkan value pada hidden field dan value pada COOKIE atau SESSION. Jika tidak cocok maka proses pemasukan data tersebut tidak dilanjutkan.

Contohnya adalah sebagai berikut menggunakan PHP. Untuk membuat kode unik kita bisa gunakan fungsi microtime dan untuk lebih mantap kita encrypt kode unik tersebut menggunakan md5 atau sha1, sebagai contoh saya menggunakan sha1.

$kodeunik = sha1(microtime());

kemudian kita simpan dalam COOKIE atau SESSION. Jika Anda menggunkan COOKIE pastikan bahwa COOKIE diset sebelum ada header yang dikirimkan.

setcookie('kodeunik', $kodeunik, 0, '/', ''); //Jika menggunakan COOKIE atau
$_SESSION['kodeunik'] = $kodeunik; //Jika menggunakan SESSION

Kemudian pada form isian kita tambahkan hidden field

<form action="" method="post">
<input type="hidden" name="kodeunik" value="<?php echo $kodeunik; ?>" />
</form>

Pada validasi input kita tambahkan baris sebagai berikut.

$kodeunik = $_COOKIE['kodeunik']; //Jika menggunakan COOKIE atau
$kodeunik = $_SESSION['kodeunik']; // Jika menggunakan SESSION
 
if( $kodeunik != $_POST['kodeunik'] ){
     die('Silahkan kunjungi website kami.');
}

Saya sendiri sudah mencobanya dan sampai saat ini cukup efektif untuk mencegah remote submit. Selamat mencoba!