Monday, February 25, 2008

Upload and Resize an Image

This is a simple and easy to learn tutorial which guides you how to upload images in jpeg file format and to resize them in order to fit them perfectly at the desired place on your website by adjusting the height and width of the original image. The basic script for uploading and resizing of the images is provided in the website. To make the script complete, you have to check the file extension, handling where to copy the file and changing the upload file name.


This script works only with JPEG images. Also I'll resize the uploaded image only if it is larger than 250x200. Else, I'll leave it as it is.

Create Upload Form
First we need to create the form to upload the image. The MAX_FILE_SIZE variable needs to be set to the maximum allowable file size (in bytes) for upload. This is set using a hidden field and for this example will set to 50,000 bytes (approx. 50 kb).



Upload Image:
Click browse to upload a local file




Process Uploaded Data
Next we need to process the uploaded information when it is submitted. I'll do it all on the same page checking for the REQUEST_METHOD to know if the page was POSTed to.

PHP uploads the file to a temp location on your server (defined in php.ini) It also includes the following:

Variable Name Description
$imgfile temporary filename (pointer)
$imgfile_name original filename
$imgfile_size size of uploaded file
$imgfile_type mime-type of uploaded file

NOTE: imgfile is the name given on the form

Before copying the file, we check that a malicious user is not trying to abuse the script by trying to work on files it should not be, such as /etc/passwd. We do this with the PHP function is_uploaded_file(). More detail about this function is at the PHP.net site.

If is_uploaded_file returns TRUE, copy the file from its temp location to where you want it using the PHP copy() function.

if (is_uploaded_file($imgfile))
{
$newfile = $uploaddir . "/" . $final_filename";
if (!copy($imgfile, $newfile))
{
// if an error occurs the file could not
// be written, read or possibly does not exist
print "Error Uploading File.";
exit();
}
}

Re-Sizing the Uploaded Image
To resize the uploaded image we use the pnmscale function which scales images in the PNM format. We use djpeg to convert the JPEG images to PNM, and cjpeg to convert them back. Here's the code to convert, scale and write out a scaled JPG image.

/*== where storing tmp img file ==*/
$tmpimg = tempnam("/tmp" "MKPH");
$newfile = "$uploaddir/scaled.jpg";

/*== CONVERT IMAGE TO PNM ==*/
if ($ext == "jpg") { system("djpeg $imgfile >$tmpimg"); }
else { echo("Extension Unknown. Please only upload a JPEG image."); exit(); }

/*== scale image using pnmscale and output using cjpeg ==*/
system("pnmscale -xy 250 200 $tmpimg | cjpeg -smoo 10 -qual 50 >$newfile");

The above functions are just the basics of the script. There are a few little things added to complete the script. Such as checking the file extension, handling where to copy the file, and changing the upload filename.

Download the complete Script Source
The directory this script runs in (or the upload directory) must be writable by the server

Page generation time





































Name:Page generation time
Version:1.1
Author:Barbos
License:Free
Homepage:Click here to visit
Download:Download Script
Description:Page generation time is an article that shows the time taken to generate a web page. The author describes an easy way to display the page generation time in a fraction of a second. The author gives three function codes for doing this quickly. He also discusses in the following headings like PHP programming and language features for easy understanding with some reference sites. Easy to learn.

Simple Login and Logout Form Using PHP





































Name:Simple Login and Logout Form Using PHP
Version:1.1
Author:Sam Colebatch
License:Free
Homepage:Click here to visit
Download:Download Script
Description: This script is written using PHP and allow the users to login into the secured area of your site. This system has a built in admin system which allows your website users or members to login into your site and logout from your site. This script performs client side validation and allow the users into the site. It is very secured and has many features and can be integrated with any online secured applications.

Shrink Image





































Name:Shrink Image
Version:1.1
Author:PHP Garage
License:Free
Homepage:Click here to visit
Download:Download Script
Description: Shrink Image is a PHP based script that requires GD library to create images. This will be useful for those who are receiving thousands of images on their website from the members or visitors. It assists them in creating smaller version of the original images that are constantly uploaded by the public thus saving the disk space. It is capable of working with files like JPG, GIF and PNGs.

Wednesday, February 20, 2008

Read Teks File to String with Function file_get_contents()

Tips PHP kali ini akan membahas mengenai salah satu fungsi pada PHP untuk membaca isi file dan menampungnya ke dalam suatu string. Tips ini didasarkan pada pertanyaan salah seorang pembaca yang pada saat itu kebingungan ketika akan membaca isi suatu teks file dan ingin menampungnya pada sebuah data string.

Untungnya pada PHP terdapat suatu fungsi yang bernama file_get_contents(). Fungsi ini tugasnya memang membaca seluruh isi file dan kemudian ditampung ke dalam suatu string. Adapun sintaks dari fungsi file_get_contents() tersebut adalah sebagai berikut ini.

string file_get_contents ( string filename [, bool use_include_path [, resource context]])

Untuk menggunakannya sangat sekali, cukup Anda masukkan sebuah parameter yang isinya adalah suatu file yang hendak Anda baca. Contohnya adalah sebagai berikut ini. Diasumsikan Anda memiliki file teks yang bernama data.txt dan file tersebut hendak Anda baca isinya.

$myfilestring = file_get_contents("data.txt");
echo $myfilestring;
?>

Simpan script di atas menjadi read_data.php, letakkan file tersebut dan data.txt pada folder web root Anda dan coba jalankan melalui web browser. Jika setelah Anda coba di browser tampilannya menjadi kacau? Jangan kuatir, itu bisa jadi karena data dikirimkan ke browser secara mode HTML yang mana karakter seperti \n akan diabaikan. Untuk mengatasinya Anda bisa me-replace karakter \n dengan tag
. Berikut ini contohnya.

$myfilestring = file_get_contents("data.txt");
echo str_replace("\n", "
", $myfilestring);
?>

Contoh berikutnya adalah dengan menggunakan path.

$fstr = file_get_contents("/home/sonyak/public_html/data.txt");
echo $fstr;
?>

Fungsi file_get_contents() ini tersedia pada PHP versi 4 dan setelahnya. Selamat mencoba.

Referensi

* PHP Manual

Demikian tulisan singkat mengenai penggunaan fungsi file_get_contents() pada PHP untuk mengambil isi seluruh file ke dalam suatu string. Semoga berguna bagi Anda semuanya.

Delete File With Function unlink()

Beberapa waktu yang lalu ada salah seorang rekan penulis yang menanyakan mengenai bagaimana caranya menghapus suatu file pada PHP. Mudah sekali jawabannya. Anda bisa menggunakan fungsi unlink() untuk menghapus suatu file dari suatu file system. Berikut ini adalah sintaks dari fungsi unlink() pada PHP.

bool unlink ( string filename [, resource context])

Contoh penggunaannya adalah seperti berikut ini. Semisal Anda hendak menghapus file data.dat yang ada pada folder web root Anda.

if (unlink("data.txt")) {
echo "Data telah terhapus";
}
else
{
echo "Data tidak bisa dihapus";
}
?>

Kita lihat di atas bahwa jika proses penghapusan file berhasil, maka fungsi unlink() akan menghasilkan nilai TRUE, sebaliknya jika gagal maka akan mengembalikan nilai FALSE. Mudah bukan?

Fungsi ini tersedia pada PHP versi 3, 4 dan setelahnya. Selamat mencoba.

Referensi

* PHP Manual

Demikian tulisan singkat mengenai penggunaan fungsi unlink() untuk menghapus suatu file. Semoga berguna bagi Anda semuanya.

Create "Forget Password" with PHP

Saya banyak mendapatkan pertanyaan seputar cara membuat fasilitas "forget password" pada aplikasi web. Untuk itu pada kesempatan kali ini saya akan mencoba berbagai konsep dan logika mengenai cara pembuatan fasilitas "forget password" ini. Sebelumnya saya akan jelaskan terlebih dahulu apa itu fasilitas "forget password". Fasilitas ini seringkali kita jumpai pada jasa layanan web, misalnya webmail, portal, social network (Friendster, Orkut dan lain-lain). Intinya fasilitas "forget password" ini ditujukan bagi orang-orang yang memiliki account di suatu layanan web dan dia lupa dengan password account yang dimilikinya.

Sekarang mari kita coba untuk mensimulasikan pembuatan fasilitas "forget password" ini. Ceritanya saya akan membuat sebuah aplikasi web dengan fasilitas login. Aplikasi web ini adalah aplikasi web mirip seperti friendster. Mari kita buat struktur database-nya (dengan MySQL).

create table anggota
(
uname varchar(20),
passwd varchar(30),
nama varchar(100),
alamat varchar(100),
email varchar(255)
)

Kemudian coba isi dengan beberapa data seperti berikut ini.

insert into anggota (uname,nama,email) values ('ari','Ari','ari@sony-ak.com');
insert into anggota (uname,nama,email) values ('agus','Agus','agus@sony-ak.com');
insert into anggota (uname,nama,email) values ('budi','Budi','budi@sony-ak.com');
insert into anggota (uname,nama,email) values ('ika','Ika','ika@sony-ak.com');

Struktur database di atas sangatlah sederhana, karena pada simulasi ini kita hanya membutuhkan satu tabel saja. Dari tabel anggota di atas, maka kolom-kolom yang akan kita manfaatkan hanya ada dua, yaitu uname dan email. Kolom uname akan kita gunakan untuk mencari username orang yang lupa password-nya. Sedangkan kolom email akan kita gunakan untuk mengirimkan e-mail yang berisi informasi password kepada username yang lupa password-nya tadi.

Berikut ini adalah gambar layar login "bohong-bohongan" dari aplikasi kita dan berisi link untuk ke halaman "forget password".

Sekarang kita akan buat tampilan dari halaman "forget password" nya.

Berikut ini adalah potongan dari code tag FORM dari halaman di atas.


Masukkan username Anda. Berikutnya kami akan mengirimkan password ke
alamat e-mail yang terasosiasi dengan username tersebut.


Username:





Jika Anda menekan tombol "Send Password" pada halaman "forget password" di atas, maka dia akan menjalankan file p_forget_password.php. File p_forget_password.php inilah yang akan berisi script PHP kita untuk mencari username dan mengirimkan password ke alamat e-mail si pemegang username tersebut.

Sekarang saya akan jabarkan logika dan konsep dari apa yang akan kita lakukan pada script p_forget_password.php tersebut.

1. Melakukan koneksi ke database
Untuk ini Anda harus tahu cara koneksi ke database, dalam hal ini MySQL.
2. Melakukan query ke database untuk mencari username yang dimaksud
Untuk ini Anda harus paham perintah SQL SELECT.
3. Mengirimkan data password ke e-mail si pemegang username tadi
Untuk ini Anda harus mengetahui cara mengirim e-mail dengan PHP (menggunakan fungsi mail()).

Konsep di atas adalah konsep yang sangat dasar sekali bagi suatu fasilitas "forget password" dan saya harap Anda mengerti. Apabila Anda sudah paham, maka akan sangat mudah nantinya bagi Anda untuk mengembangkannya lebih lanjut.

Berikut ini adalah contoh isi script p_forget_password.php. Script ini merupakan implementasi dari konsep di atas.

//isi variabel untuk kepentingan mysql
$server = "localhost"; //isi dengan nama server database mysql
$username = "cyber"; //isi dengan username mysql
$password = "cyberpass"; //isi dengan password db mysql
$db_name = "testdb"; //isi dengan nama db mysql

//lakukan koneksi ke database
$db = mysql_connect($server,$username,$password) or DIE("Connection to database failed, perhaps the service is down !!");
mysql_select_db($db_name) or DIE("Database name not available !!");

//tampung variabel dari form forget_password.htm
$uname = $_POST['username'];

//lakukan query ke database untuk mencari username tersebut
$profile = mysql_query("select * from anggota where uname = '" . $uname . "'", $db);
$rowcount = mysql_num_rows($profile);
if ($rowcount == 1) {
//username ditemukan, sekarang kirim e-mail...
$header = "From: Admin \n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$header .= "X-Mailer: sony-ak.com (php; 1.00)\n";
$body = "Your password is: " . mysql_result($profile, 0, "passwd");
mail(mysql_result($profile,0,"email"), "Your password info", $body, $header);
header("Location: forget_password.htm");
}

?>

Silakan coba jalankan script di atas, modifikasi beberapa bagian dan sesuaikan dengan keadaan Anda, dan coba lihat hasilnya. Anda bisa mendownload source code lengkapnya pada bagian akhir dari tulisan ini.

Referensi

* Dari berbagai sumber di internet dan pengalaman sendiri.

Demikian tulisan mengenai contoh cara membuat fasilitas "forget password" dengan menggunakan PHP dan MySQL. Semoga berguna bagi Anda semuanya.