Selasa, 29 Maret 2011

Security Image


Apa itu Security Image/ Security Code?
Security image adalah suatu bentuk perlindungan terhadap suatu form dari serangan SPAM.

Sebagai contoh pernakah anda mengisi formulir pendaftaran untuk mendapatkan email account di yahoo??
Lihat bagian bawah diatas tombol submit, di situ ada security code yang muncul…dan anda harus mengisi security code tersebut
Berikut file-file yang akan kita gunakan :
1. script form.htm
2. script action.php
3. script captchasecurityimages.php
4. file font
Penjelasan:
====================================================================
 ingat ini hanya contoh, anda bisa mengembangkan sendiri script anda
====================================================================
1. script form.htm
——-
    <form action=”action.php” method=”post”>
        Pesan: <input type=”text” name=”message” /><br />
        <img src=”captchasecurityimages.php?width=100&height=40&character=5″ /><br />
        Security Code: <input id=”security_code” name=”security_code” type=”text” /><br />
        <input type=”submit” name=”submit” value=”Submit” />
    </form>
——-
2. script action.php
——-
<?php 
session_start();
if( isset($_POST['submit'])) {
   if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
      // masukkan script anda jika validasi benar
      echo ‘Terimakasih Pasan anda:  “‘.$_POST['message'].’”‘;
   } else {
      // masukkan script anda jika validasi salah
      echo ‘Sorry, anda memasukkan security code yang salah<br />’;
      include “form.htm”;
   }
} else {
      include “form.htm”;
    }
?>
——-
3. script captchasecurityimages.php
——-
<?php
session_start();
class CaptchaSecurityImages {
var $font = ‘monofont.ttf’;
function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = ’23456789bcdfghjkmnpqrstvwxyz’; 
$code = ”;
$i = 0;
while ($i < $characters) { 
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}
function CaptchaSecurityImages($width=’120′,$height=’40′,$characters=’6′) {
$code = $this->generateCode($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.75;
$image = @imagecreate($width, $height) or die(‘Cannot Initialize new GD image stream’);
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 20, 40, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
/* generate random lines in background */
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
/* create textbox and add text */
$textbox = imagettfbbox($font_size, 0, $this->font, $code);
$x = ($width – $textbox[4])/2;
$y = ($height – $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code);
/* output captcha image to browser */
imagejpeg($image);
imagedestroy($image);
$_SESSION['security_code'] = $code;
}
}
$width = isset($_GET['width']) ? $_GET['width'] : ’120′;
$height = isset($_GET['height']) ? $_GET['height'] : ’40′;
$characters = isset($_GET['characters']) ? $_GET['characters'] : ’6′;
header(‘Content-Type: image/jpeg’);
$captcha = new captchasecurityimages($width,$height,$characters);
?>
——-
4. file font
Gunakan font: monofont.ttf
*keterangan: 
Anda harus mengupload juga file font nya, sebagai contoh saya menggunakan font “monofont.ttf”, file font yang ukurannya paling kecil cocok buat website, semua file di atas harus di tempatkan pada directory/ folder yang sama.
Sumber :
-berbagai sumber (luarnegri)
Download Ebooknya disini -> Download Ebook Tutorial PHP

Buat Polling (PHP)


Pasti pembaca sekalian tidak asing lagi dengan yang namanya ?polling?. Polling merupakan
tempat pemungutan suara dimana pengunjung dapat memberikan suaranya. Dengan adanya polling,
kita dapat mengetahui makanan apa yang paling digemari orang Indonesia, bahasa pemrograman apa yang paling disukai, dll tergantung jenis polling tersebut. Nah, kali ini, saya akan mengajarkan
kepada anda bagaimana cara membuat polling dengan metode operasi file (tanpa database).
Dalam contoh kali ini, saya membuat polling tentang ?bahasa pemrograman web apa yang
paling anda suka.? Karena ini hanya contoh, saya hanya menyertakan 2 pilihan yakni PHP dan
ASP.Anda dapat menambahkan sendiri pilihan yang ketiga, keempat,dst.
Mari kita mulai membuat polling. Siapkan 4 file berikut :
1. ?asp.txt? lalu ketikkan angka 0 di dalamnya.
2. ?php.txt? lalu ketikkan angka 0 di dalamnya.
Ingat.. Jangan lupa ketikkan angka 0 pada ‘asp.txt’ dan ‘php.txt’. Ini sangat penting. Ada seorang teman yang mengatakan bahwa kenapa program polling ini tidak jalan. Mungkin karena dia lupa mengetik angka 0 didalamnya..
3. File gambar ?poll.jpg? dengan ukuran 100x10px. Ini untuk membuat persentase polling.
Yang ini juga penting. Buat gambar ‘poll.jpg’ dengan photoshop/corel draw atau software pengolah gambar lainnya..
4. ?Index.php? lalu ketikkan script berikut :

<title>Polling dengan operasi file created by Ivan</title>
<style type=”text/css”>
<!–
.style1 {font-size: 24px}
.style2 {color: #0000FF}
–>
</style>
<form name=”form1″ method=”post” action=”index. php?isi=polling”>
<p>
<label><span class=”style1″>Polling</span></label>
</p>
<p>
<label>Bahasa pemrograman web apa yang anda suka ? </label>
</p>
<p>
<label>
<input type=”radio” name=”vote” value=”php”>
PHP</label>
<br>
<label>
<input type=”radio” name=”vote” value=”asp”>
ASP</label>
</p>
<p>
<label>
<input type=”submit” name=”Submit” value=”Submit”>
</label>
<br>
</p>
</form>
<?php
if(@$_GET['isi'])
{
$vote = $_POST['vote'];
if ($vote == “”) // jika belum menentukan pilihan
{
print “<font color=red>Anda belum mengisi polling</font>”;
exit;
}
if($vote == “php”) // menambah 1 untuk pilihan php
{
$buka = fopen(“php.txt”,”r”);
$baca = fgets($buka,65535);
fclose($buka);
$buka = fopen(“php.txt”,”w”);
$baca++;
fwrite($buka,$baca);
fclose($buka);
}
if($vote == “asp”) //menambah 1 untuk pilihan asp
{
$buka = fopen(“asp.txt”,”r”);
$baca = fgets($buka,65535);
fclose($buka);
$buka = fopen(“asp.txt”,”w”);
$baca++;
fwrite($buka,$baca);
fclose($buka);
}
$buka_php = fopen(“php.txt”,”r”);
$bacaphp = fgets($buka_php,65535); //membaca nilai php yang telah di vote
fclose($buka_php);
$buka_asp = fopen(“asp.txt”,”r”);
$bacaasp = fgets($buka_asp,65535); //membaca nilai asp yang telah di vote
fclose($buka_asp);
$total_pemilih = $bacaphp+$bacaasp; //jumlah pemilih
$persentase_php = ($bacaphp/$total_pemilih)*100;
$persentase_asp = ($bacaasp/$total_pemilih*100);
print “Total pemilih : $total_pemilih <br><br>”;
print “PHP : “; printf (“%1.0f”,”$persentase_php”); print ” % <img src=poll.jpg
width=$persentase_php height=10> $bacaphp pemilih<br>”;
print “ASP : “; printf (“%1.0f”,”$persentase_asp”); print ” % <img src=poll.jpg
width=$persentase_asp height=10> $bacaasp pemilih<br>”;
}
?>

Pengatur Waktu Session dan Logout Otomatis



Banyak hal terjadi jika seseorang telah berhasil login sebagai user, dan tentunya login ini ada ketika user akan memanfaatkan layanan dari suatu website, bukan karena sebab yang lain, seperti tingkat sekuritas yang buruk. Selalu ada masa idle. Idle di sini bermakna user tidak melakukan apa-apa sama sekali di website tersebut, tidak berpindah halaman, tidak memasukkan input pada form manapun, dan tidak ada hal apapun yang
 
menyebabkan sebuah halaman website terrefresh, dengan kata lain user tidak melakukan apa pun pada website yang sedang dia kunjungi. Sungguh user yang aneh. :D~~. Tapi hal seperti ini dapat terjadi jika user sedang asik mengunjungi website yang lain, dan lupa akan website yang dia kunjungi sebelumnya. Tentunya keadaan user pada website yang dikunjungi sebelumnya dianggap sebagai condition yang idle oleh website tersebut. Tidak ada hal apapun yang terjadi di website sebelumnya. Atau kondisi lain, dimana seorang user yang telah 10 menit meninggalkan pc-nya dalam keadaan lupa melogout accountnya. Sungguh terlalu. Di sinilah fungsi pengatur waktu session benar-benar dibutuhkan.
 

Berikut adalah alogartimanya:

File index.php  :
<?php
require_once “functions.php”;
if (( $_POST['username'] == ‘admin’ ) && ( $_POST['password'] == ‘admin’)) 
{
$_SESSION['user'] = $_POST['username'];
login_validate();
header(“location: admin.php”);
}
else if ( empty($_POST['username']) && empty($_POST['password']) )
{
header(“location: login.php”);
}
?>
Selanjutnya file intinya yaitu,
functions.php :
<?php
session_start();
function login_validate() {
    $timeout = 30; 
    $_SESSION["expires_by"] = time() + $timeout;
}
function login_check() {
    $exp_time = $_SESSION["expires_by"];
    if (time() < $exp_time) {
        login_validate();
        return true; 
    } else {
        unset($_SESSION["expires_by"]);
        return false; 
    }
}
?>
Kemudian admin.php, barisan code dalam admin.php ini penulis ibaratkan seperti kondisi dari admin yang telah berhasil login. Jika lebih dari 30 detik maka user secara otomatis akan di logout.  Nilai 30 detik ini diambil dari variable $timeout yang ada di functions.php.
File Admin.php :
<?
require_once “functions.php”;
if (ISSET($_SESSION['user']))
{
    if (!login_check()) {
        header(“Location: logout.php”);
        exit(0);
        }
    else {
        echo “Jika tidak ada kegiatan sama sekali, anda akan logout secara otomatis … “;
        }    
}
else
{
    echo “Anda tidak berhak untuk ngapa-ngapain … !! :D”;
}
?>
Selanjutnya halaman login usernya, login.php :
<html>
<head><title>Login Page …!</title></head>
<body>
<form action=index.php method=POST>
<table border=0 bcolor=#DFDFDF><tr><td>username</td><td><input type=text name=username></td></tr>
<tr><td>password</td><td><input type=password name=password></td></tr>
<tr><td></td><td><input type=submit name=submit value=submit></td></tr>
</table>
</form>
</body>
</html>
Terlihat jelas pada baris ke 4 di atas, halaman login page memiliki action, menuju index.php, yang kemudian menghasilkan 2 variable POST, yaitu $_POST[‘username’], dan $_POST[‘password’]. Kedua variable inilah yang kemudian dicek pada halaman index.php.
Dan yang terakhir adalah logout.php :
<?php
require_once “functions.php”;
unset($_SESSION['user']);
session_destroy();
header(“location: login.php”);
?>
Cara kerja source code di atas cukup sederhana, lihat barisan code index.php,
……
if (( $_POST['username'] == ‘admin’ ) && ( $_POST['password'] == ‘admin’)) 
{
$_SESSION['user'] = $_POST['username'];
login_validate();
header(“location: admin.php”);
}
else if ( empty($_POST['username']) && empty($_POST['password']) )
{
header(“location: login.php”);
}
….
Penjelasannya adalah sebagai berikut, Jika user memasukkan username dan password yang cocok ( dalam kasus ini username dan passwordnya adalah admin ) maka user akan diberikan sebuah variable session, yakni $_SESSION['user'],  dan akan ditambahkan sebuah variable baru yang nantinya variable ini berfungsi sebagai timer, yakni    
$timeout = 30;
Variable tersebut berada dalam fungsi login_validate() pada script functions.php. Sedangkan masih dalam fungsi login_validate, lompat ke barisan code dibawahnya yaitu :
$_SESSION["expires_by"] = time() + $timeout;
Disinilah letak timer yang sebenarnya, kehebatan dari session adalah dapat melakukan passing value walaupun halamannya berbeda. Jelasnya $_SESSION["expires_by"] mengambil nilainya dari waktu ketika user pertama kali login yaitu time() di tambah dengan 30 detik kedepannya, yakni isi dari variable $timeout.
Nah, dari situ, lihat ke bagian fungsi yang ada di bawahnya, pada functions.php :

function login_check() {
    $exp_time = $_SESSION["expires_by"];
    if (time() < $exp_time) {
        login_validate();
        return true; 
    } else {
        unset($_SESSION["expires_by"]);
        return false; 
    }
}
….
Ya,  lihat baris :  
$exp_time = $_SESSION["expires_by"];
Varibale $exp_time itu memiliki nilai dari $_SESSION["expires_by"],
Untuk kejelesannya penulis berikan contoh seperti ini, jika user login pada waktu jam 5, maka $_SESSION["expires_by"] berisi jam ke 5,  menit ke 0, dan detik ke 30. Dan secara alami pun diketahui bahwa yang namanya waktu pasti akan terus bertambah tentunya. Tapi karena berada dalam fungsi, variable $_SESSION["expires_by"] ini tidak akan bertambah, walaupun time() terus berlanjutnya.
Lompat ke baris selanjutnya : 
    if (time() < $exp_time) {
        login_validate();
        return true;
Dalam baris tersebut sederhananya adalah, jika waktu yang sekarang berjalan lebih kecil nilainya dari nilai yang ada pada $_SESSION["expires_by"],  maka tambahkan 30 detik lagi, dan jika waktu pada time() sama dengan nilai $_SESSION["expires_by"] maka user akan otomatis logout
Selanjutnya … 

else {
        unset($_SESSION["expires_by"]);
        return false; 
    }
Jika waktu yang sekarang berjalan itu lebih besar dari nilai yang ada pada $_SESSION["expires_by"], maka lakukan logout.

Senin, 28 Maret 2011

Web Science


Web Science
 
Web itu selalu berkembang dan kita butuh untuk mengerti itu untuk mengantisipasi perkembangan masa depan, mengidentifikasi peluang-peluang dan ancaman-ancaman, dan membangun suatu prinsip atau pengetahuan baru. Ilmu pengetahuan tidak perlu ada sepanjang waktu, itu muncul secara periodik. Gabungan atau persimpangan antara 2 atau lebih ilmu pengetahuan itu namanya ilmu pengetahuan kognitif.
Tujuan dari web itu sendiri adalah sebagai berikut :
  • Untuk mempromosikan dan mendorong dan mendorong penelitian kolaboratif untuk mempelajari pengembangan web.
  • Untuk memberikan forum global bagi para akademis, pemerintah, dan industri untuk mengembangkannya.
  • Untuk mendorong perkembangan dari web dan memungkinkan merancang inovasi kurikulum untuk prinsip atau pengetahuan baru dari web science. Jadi, untuk melatih generasi-generasi pendatang dari peneliti web itu sendiri.
Yang penting dari web science adalah web science itu interdispliner. Maksudnya adalah ilmu yang saling berhubungan, berkaitan satu sama lain, seperti matematika, fisika, kecerdasan buatan, sosial-budaya, ilmu politik, hukum, media, rekayasa web, biologi, ekologi, geografis yang didalamnya perlu kita pahami.
Web science pada waktu dulu kita perlu mengetahui struktur dari web, bentuk dari web, bagaimana membangun web yang menyediakan keamanan dan untuk mempublikasikan koneksi web dari link yang satu ke link yang lain sehingga mereka membuat siklus. Jadi, koneksi akan ada, dan web kecil dipublikasikan atau masyarakat mempengaruhi web yang lebih besar itu dengan memahami faktor-faktor ilmiah, teknis dan sosial.
Web science pada masa sekarang, fenomenanya sukarela. Maksudnya adalah dikontribusi oleh seorang relawan, contohnya seperti wikipedia. Web sosial mempengaruhi apapun seperti pendidikan, lingkungan, dan isu.
Web science pada masa yang akan datang diharapkan web tersebut dapat terkait data informasi yang bisa dihubungkan bersama. Data bisa berada dimana-mana, sehingga kita tidak perlu khawatir bagaimana mendapatkannya kembali.