Tampilkan postingan dengan label PHP. Tampilkan semua postingan
Tampilkan postingan dengan label PHP. Tampilkan semua postingan

2 Instalasi Yaz Extension untuk PHP di XAMPP

Download paket yang dibutuhkan di sini

Extract, paket tersebut.
Akan ada dua folder dalam paket tersebut.
copy semua isi folder bin ke C:\xampp\apache\bin
copy isi folder ext ke C:\xampp\php\ext

Edit file C:\xampp\php\php.ini lalu tambahkan text "extension=php_yaz.dll" pada bagian extension.



Restart service apache.

14 Tutorial Membuat Halaman Login Sederhana Yang Aman

Kali ini saya akan memberikan contoh penggunaan database, session, dan enkripsi MD5 untuk menjadikannya sebagai halaman login yang cukup aman.

Kebutuhan:
- Webserver dengan dukungan PHP
- Myslq Database Server

Secara sederhana, cara kerjanya adalah sbb:
- Ketika user memasukkan username dan password-nya, maka yang pertama kali dilakukan adalah mengeceknya dalam database apakah username tersebut telah terdaftar.
- Jika telah terdaftar dan berhasil melakukan login, maka sang user akan diberi sebuah session yang diambil dari usernamenya
- Jika kesemuanya tidak sesuai maka sang user akan diredirect ke halaman login.php, sehingga terlihat seperti diam ditempat.

Pertama-tama kita buat databasenya

create database coba;
use coba;
CREATE TABLE IF NOT EXISTS `users` (
  `username` varchar(20) NOT NULL,
  `password` varchar(200) NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



selanjutnya kita buat file-file php-nya

config.php

<?php 
//membuat koneksi ke database
mysql_connect("localhost", "root", "admin");

//localhost = nama server-nya
//root  = user mysql
//admin  = password user root
 
//memilih database
mysql_select_db("coba");
?>


login.php

<?php 
//memulai session
session_start(); 

//cek adanya session, jika session sudah ada maka diarahkan ke index.php
if (ISSET($_SESSION['username'])){
header("location: index.php");
}
?>


<form method="post" action="cek.php">
<pre>Username <input name="username" type="text">
Password <input name="password" type="password">
  <input name="submit" value="Login" type="submit">

  Bukan Member? Silahkan Daftar
  <a href="signup.php">Daftar</a>
  
</pre>
</form>  


cek.php

<?php 
//memulai session
session_start(); 

//koneksi ke database
include "config.php" ; 

//mengambil data dari form
$username    = $_POST['username']; 
$password    = $_POST['password']; 

//enkripsi password dengan md5
$password_md5   = md5($password);

//cek username dan password dari database
$perintah   = "select * from  users where username='$username'&&password='$password_md5'"; 
$perintah_di_query = mysql_query($perintah); 
$ketersediaan  = mysql_num_rows($perintah_di_query); 

//Cek adanya username dan password di database dilanjutkan dengan membuat session
if ($ketersediaan >= 1 ){ 
$_SESSION['username'] = $username; 
header("location: index.php"); 
}else{
header("location: login.php"); 
}
?>


index.php

<?php 
//memulai session
session_start(); 

//cek adanya session
if (ISSET($_SESSION['username'])){
echo "Anda Login Sebagai ";
echo $_SESSION['username']; 
echo "<br><a href='logout.php'>logout</a>"; 

//jika tidak ada session
}else{
header("location: login.php");
}
?> 
<html><body>
<br><br><h2>
Home Page
<br><br></h2>
</body></html>


logout.php

<?php  
//memulai session
session_start(); 

//cek adanya session, jika session ada maka akan di unset dan dilanjutkan dengan destroy session
if(ISSET($_SESSION['username'])) { 
UNSET($_SESSION['username']); 
} 
header("location: index.php"); 
session_destroy(); 
?>


signup.php

<form method="post" action="signup_process.php">
<pre><h2>Form Pendaftaran</h2>
Username <input name="username" type="text">
Password <input name="password" type="password">
  <input name="submit" value="Daftar" type="submit">
</pre>
</form>


signup_process.php

<?php 
include "config.php";

///mengambil data dari form
$username  = $_POST['username'];
$password  = $_POST['password'];
$password_md5 = md5($password);

//cek pengisian data
if($username=='' || $password==''){
echo "Data tidak lengkap<br--><a href=signup.php>Back</a>";

//jika data sudah lengkap, dilanjutkan input data ke database
}else{
$perintah   = "insert into users values ('$username', '$password_md5')"; 
$perintah_di_query = mysql_query($perintah); 

//Jika input data berhasil, dilanjutkan dengan pemberitahuan pendaftaran berhasil
if ($perintah_di_query) {
echo "Daftar berhasil, silakan <a href='index.php'>login</a>";

//jika input data gagal, dilanjutkan dengan pemberitahuan pendaftaran gagal
}else{
echo "Daftar gagal atau username telah terdaftar silakan <a href='signup.php'>Ulangi</a> atau <a href='login.php'>Login</a>";
}
}
?>



- Pengujian dilakukan dengan membuat sebuah user dan melakukan proses login, jika berhasil maka Home Page akan tampil.

1 Security Image Menggunakan PHP

Security image adalah bentuk perlindungan terhadap suatu form dari serangan SPAM. Sebagai contoh, anda mengisi formulir pendaftaran untuk mendapatkan account tertentu dan contoh lainnya adalah pengisian kotak komentar di halaman tertentu yang menggunakan security image.

Screenshot:


----------------------------------------------------------------------------









Cara kerjanya:
- Formulir akan menampilkan security code yang di generate oleh script PHP, apabila page tersebut di refresh maka security code akan  di generate lagi sehingga berubah codenya hal ini sangat berguna sekali untuk menangkal serangan spam.
- Setelah di submit, script php akan memvalidasi data anda dan mencocok kan security code yang telah anda masukkan apabila security code tidak sama, maka proses akan di batalkan apabila security code sama, maka proses akan dilanjutkan.

Berikut file-file yang akan digunakan:
- index.html
- action.php
- captcha.php
- DoradoHeadline.ttf

File index.html

<form action="action.php" method="post">
Pesan: 

<textarea cols="50" name="message" rows="10"></textarea>



<img src="captcha.php">

Security Code: <input id="security_code" name="security_code" type="text">

<input name="submit" value="Submit" type="submit"> 
</form>


File 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 Pesan anda sudah muncul
"'.$_POST['message'].'"'; 
   echo "
<a href='index.html'>kembali</a>";
   } else { 
      // masukkan script anda jika validasi salah 
      echo 'Sorry, anda memasukkan security code yang salah
'; 
      include "index.html"; 
   } 
} else { 
      include "index.html"; 
    } 
?>


File captcha.php

<?php 
session_start();

class CaptchaSecurityImages {

   var $font = './DoradoHeadline.ttf';
   
   function generateCode($characters) {
      /* list all possible characters, similar looking characters and vowels have been removed */
      $possible = 'BCDFGHJKMNPQRSTVWXYZ23456789bcdfghjkmnpqrstvwxyz';
      $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.50;
      $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');

      /* set the colours */
      $background_color = imagecolorallocate($image, 255, 255, 255);

      /* red text */
      //$text_color = imagecolorallocate($image, 220, 10, 10);

      /* black text */
      $text_color = imagecolorallocate($image, 1, 1, 1);

 $rndR = rand(98,198);
 $rndG = rand(98,198);
 $rndB = rand(98,198);
      $noise_color = imagecolorallocate($image, $rndR, $rndG, $rndB);

      /* 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) or die('Error in imagettfbbox function');
      $x = ($width - $textbox[4])/2;
      $y = ($height - $textbox[5])/2;
      imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');

      // Show the image.
 if (function_exists('imagegif'))
 {
  header('Content-type: image/gif');
  imagegif($image);
 }
 else
 {
  header('Content-type: image/png');
  imagepng($image);
 }

 // Bail out.
 imagedestroy($image);

      $_SESSION['security_code'] = $code;

      die();


   }

}

$width = isset($_GET['width']) && $_GET['height'] < 600 ? $_GET['width'] : '132';
$height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '36';
$characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';

$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>

3 Membuat Kalkulator Online

Buat file index.html dengan isi sbb:
<title>Kalkulator Online</title> 
 
 
<form name="form1" method="post" action="hitung.php"> 
<p>Operator matematika </p> 
<p> 
<input name="angka" id="angka" type="text"> 
<select name="operator" id="operator"> 
<option>+</option> 
<option>-</option> 
<option>*</option> 
<option>/</option> 
</select> 
<input name="angka2" id="angka2" type="text">  
<input name="Submit" value="Hitung" type="submit"> 
</p> 
</form> 
<form name="form2" method="post" action="hitung2.php"> 
<p>Konstanta matematika </p>
<p> 
<input name="angka" id="angka" type="text"> 
<select name="operator" id="operator"> 
<option>abs</option> 
<option>floor</option> 
      <option>round</option> 
      <option>decbin</option> 
      <option>bindec</option> 
      <option>decoct</option> 
      <option>octdec</option> 
      <option>dechex</option> 
      <option>hexdec</option> 
      <option>sin</option> 
      <option>cos</option> 
      <option>tan</option> 
      <option>log</option> 
      <option>sqrt</option> 
    </select> 
    <input name="Submit" value="Hitung" type="submit"> 
</p> 
  <p>Keterangan :</p> 
  <table width="100%" border="0"> 
    <tbody><tr> 
      <td>+</td> 
      <td>=</td> 
      <td>Tambah.</td> 
    </tr> 
    <tr> 
      <td>-</td> 
      <td>=</td> 
      <td>Kurang.</td> 
    </tr> 
    <tr> 
      <td>*</td> 
      <td>=</td> 
      <td>Kali.</td> 
    </tr> 
    <tr> 
      <td>/</td> 
      <td>=</td> 
      <td>Bagi.</td> 
    </tr> 
    <tr>
 <td width="4%">abs</td> 
      <td width="2%">=</td> 
      <td width="94%">Mencari nilai absolut .</td> 
</tr><tr> 
   <td>floor</td> 
   <td>=</td> 
   <td>Pembulatan nilai. </td> 
 </tr> 
<tr> 
      <td>round</td> 
      <td>=</td> 
      <td>Membulatkan angka di belakang koma. </td> 
    </tr> 
    <tr> 
      <td>decbin</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan biner. </td> 
    </tr> 
    <tr> 
      <td>bindec</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan desimal. (kebalikan dari decbin) </td> 
    </tr> 
    <tr> 
      <td>decoct</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan oktal. </td> 
    </tr> 
    <tr> 
      <td>octdec</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan desimal (kebalikan dari decoct) </td> 
    </tr> 
    <tr> 
      <td>dechex</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan Hexadesimal. </td> 
    </tr> 
    <tr> 
      <td>hexdec</td> 
      <td>=</td> 
      <td>Mengkonversi menjadi bilangan desimal (kebalikan dari dechex). </td> 
</tr>
<tr> 
      <td>sin</td> 
      <td>=</td> 
      <td>sine</td> 
    </tr> 
    <tr> 
      <td>cos</td> 
      <td>=</td> 
      <td>cosine</td> 
    </tr> 
    <tr> 
      <td>tan</td> 
      <td>=</td> 
      <td>tangent</td> 
    </tr> 
    <tr> 
      <td>log</td> 
      <td>=</td> 
      <td>log</td> 
    </tr> 
<tr> 
      <td>sqrt</td> 
      <td>=</td> 
      <td>akar</td> 
    </tr> 
  </tbody></table> 
</form>


Selanjutnya file hitung.php
<?php  
$angka = $_POST['angka']; 
$angka2 = $_POST['angka2']; 
$operator = $_POST['operator']; 
if ($operator == '+'){ 
$hasil = $angka+$angka2;} 
if ($operator == '-'){ 
$hasil = $angka-$angka2;}
if ($operator == '*'){ 
$hasil = $angka*$angka2;} 
if ($operator == '/'){ 
$hasil = $angka/$angka2;} 
echo "$hasil"; 
echo "
<input type='button' value='kembali' onclick='history.back()'>";
?>


Dan yang terakhir file hitung2.php
<?php 
$angka = $_POST['angka']; 
$operator = $_POST['operator']; 
if ($operator == 'abs'){ 
$hasil = abs($angka);} 
if ($operator == 'floor'){ 
$hasil = floor($angka);} 
if ($operator == 'round'){ 
$hasil = round($angka);} 
if ($operator == 'decbin'){ 
$hasil = decbin($angka);} 
if ($operator == 'bindec'){ 
$hasil = bindec($angka);} 
if ($operator == 'decoct'){ 
$hasil = octdec($angka);} 
if ($operator == 'octdec'){ 
$hasil = octdec($angka);} 
if ($operator == 'dechex'){
$hasil = dechex($angka);} 
if ($operator == 'hexdec'){ 
$hasil = hexdec($angka);} 
if ($operator == 'sin'){ 
$hasil = sin($angka);} 
if ($operator == 'cos'){ 
$hasil = cos($angka);} 
if ($operator == 'tan'){ 
$hasil = tan($angka);} 
if ($operator == 'log'){ 
$hasil = log($angka);} 
if ($operator == 'sqrt'){ 
$hasil = sqrt($angka);} 
echo "$hasil"; 
echo "<br><input type='button' value='kembali' onclick='history.back()'>";
?>

4 Nginx webserver dengan dukungan PHP dan MySQL


Login sebagai super user

sudo su

Install paket-paket pendukung

apt-get install mysql-server mysql-client nginx php5-fpm

/etc/init.d/nginx start

Sampai tahap ini, nginx sudah terpasang.
Arahkan browser ke http://localhost maka akan muncuk default html nginx







Konfigurasi nginx

edit file /etc/nginx/sites-available/default kurang lebih seperti berikut

server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name example.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
        }

        location /doc {
                root /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root /usr/share;
                autoindex off;
        }

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #       proxy_pass http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}

*kofigurasi data disesuaikan

save konfigurasi dan restart nginx

/etc/init.d/nginx restart

Untuk menguji php sudah berjalan, buat sebuah contoh file yaitu /usr/share/nginx/www/info.php yang berisi



<?php
phpinfo();
?>


Simpan konfigurasi, lalu arahkan browser ke http://localhost/info.php
Jika halaman seperti dibawah muncul, maka php telah berfungsi






















Install dukungan mysql pada php

apt-get install php5-mysql

restart php-fpm

/etc/init.d/php5-fpm restart

Arahkan browser ke http://localhost/info.php lalu scroll ke bagian modules. Jika terdapat halaman seperti dibawah, maka dukungan mysql pada php telah terpasang.