Rabu, 12 September 2012

Validator.php

Ada lagi nih share ilmu nya :D
 
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        if(isset($_POST['submit'])){
           $nama=$_REQUEST['nama'];
           if(isset($_POST['submit'])){
               $gender=$_REQUEST['gender'];
           }
           else{
               $gender='';
           }
            $cek='';
        }
        else{
            $nama='';
            $gender='';
            $cek="Harus diisi lengkap!!";
        }
        ?>
    <html>
        <head></head>
        <body>
            <h1><?echo $cek ?></h1><br>
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method ="post" name="form1">
                <p>Nama : <input type="text" name="nama" value="<?php echo $nama ?>"/></p>
                <p>Jenis Kelamin : <input type="radio" name="gender" value="L"
                                          <?php ($gender=="L")? print 'checked=""': print '';?>/>
                    Laki-Laki
                    <input type="radio" name="gender" value="P"
                        <?php ($gender=="P")? print 'checked=""': print ''; ?>/>
                    Perempuan</p>
                <input type="submit" name="submit" value="Submit"/>
            </form>
            <?php
            if(isset($_POST['submit'])){//apakah data ter-submit?
                /*membuat variabel untuk menyimpan data yang dikirim*/
                $nama=$_REQUEST['nama'];
                if(isset($_POST['gender'])){
                    $gender=$_REQUEST['gender'];
                }
                else{
                    $gender='';
                }
            //cek apakah data yang dikirim tidak kosong
                if($nama=='' || $gender==''){
                    echo'<h2>Maaf Data Kurang Lengkap</h2>';
                }else{
                    /*cek jenis kelamin*/
                    if($gender=='L'){
                        echo '<h2>Selamat Datang Bro, '. $nama.' !!</h2>';
                    }else{
                        echo '<h2>Selamat Datang Sis, '. $nama.' !!</h2>';
                    }
                    }
                echo "<a href='".$_SERVER['PHP_SELF']."'>Reset</a>";// hasil
            }
            ?>


MenuDariJOption.java

Mau share ilmu nih :)

package Package1;
import javax.swing.JOptionPane;
/**
 *
 * @author Rani
 */
public class MenuDariJOption {
private static String name;
           private static String des;
           private static String gender;
           private static String kelamin;
           private static int validDes;
           static StringBuilder binerHasil = new StringBuilder();
           static StringBuilder hexaHasil = new StringBuilder();
           static StringBuilder oktalHasil = new StringBuilder();
           static String sc;
           public static void keBiner(int n) {
                 if (n > 1) {
                     keBiner(n / 2);
                 }
              System.out.print(n % 2);
              binerHasil.append(n % 2);
              // binerHasil.append("\033");
          }

           public static void keHexa(int n) {//int n : parameter
                 char[] daftarHexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
                        if (n > 0) {
                           keHexa(n / 16);
                           System.out.print(daftarHexa[n % 16]);
                           hexaHasil.append(daftarHexa[n % 16]);
                       }
            }

            public static void keOktal(int n) {
                  char[] daftarOktal = {'0', '1', '2', '3', '4', '5', '6', '7'};
                         if (n > 0) {
                            keOktal(n / 8);
                            System.out.print(daftarOktal[n % 8]);
                            oktalHasil.append(daftarOktal[n % 8]);
                  }
             }
            public static void inputDesJOption() {
              des = JOptionPane.showInputDialog("Masukkan Bilangan Desimal : ");
            try {
            if (des.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Bilangan Desimalnya wajib diisi !!");
                inputDesJOption();
            }
         } catch (NullPointerException npa) {
            JOptionPane.showMessageDialog(null, "Haram lho kalo ngga diisi !!");
            inputDesJOption();
            }
        }
            public static void outHasilBiner() {
          inputDesJOption();
          try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : ");
            keBiner(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Biner hasilnya : " + binerHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            // reset object binerHasil
            binerHasil = new StringBuilder();

        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilBiner();
          }
      }

    public static void outHasilHexa() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : ");
            keHexa(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Hexa hasilnya : " + hexaHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            hexaHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilHexa();
          }
      }

    public static void outHasilOktal() {
        inputDesJOption();
        try {//untuk melakukan penanganan kesalahan
            validDes = Integer.parseInt(des);
            System.out.print("\n Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : ");
            keOktal(validDes);
            System.out.println("\n");
            JOptionPane.showMessageDialog(null, "Bilangan desimal : " + des + " jika dijadikan Oktal hasilnya : " + oktalHasil, "HASIL KONVERSI", JOptionPane.PLAIN_MESSAGE);
            oktalHasil = new StringBuilder();
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "'" + des + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outHasilOktal();
          }
      }
//menampilkan input dialog nama
    public static void inpNama() {
        name = JOptionPane.showInputDialog("Masukkan nama Anda : ");
        try {
            if (name.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong !!");
                inpNama();
            }
        } catch (NullPointerException npe) {
            JOptionPane.showMessageDialog(null, "Harap diisi nama dulu doonk !!");
            inpNama();
        }
    }
    //menampilkan input dialog jenis Kelamin (gender)

    public static void jenisKelamin() {
        gender = JOptionPane.showInputDialog("Masukkan Jenis Kelamin Anda (cowok/cewek) : ");
        try {
            if (gender.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Harus diisi lho yaa .... Jenis Kelamin ???");
                jenisKelamin();
            }
        } catch (NullPointerException npt) {
            JOptionPane.showMessageDialog(null, "Apa jenis kelamin kamu ???");
            jenisKelamin();
        }
        if ("cowok".equals(gender)) {
            kelamin = "Saudara, ";
        } else {
            if ("cewek".equals(gender)) {
                kelamin = "Saudari, ";
            } else {
                JOptionPane.showMessageDialog(null, "Hanya bisa diisi cowok dan cewek saja !!");
                jenisKelamin();
            }
        }

    }
    //Terbilang
    String[] angka = {"", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"};

    private String sebut(int x) {
        String bilang = "";
        int y = x / 100;
        if (y > 0) {
            bilang = angka[y] + " Ratus ";
            if (y == 1) {
                bilang = "Seratus ";
            }
            x %= 100;
        }
        if (x < 12) {
            bilang += angka[x];
        } else {
            y = x / 10;
            x %= 10;
            if (y == 1) {
                bilang += angka[x] + " Belas";
            } else {
                bilang += angka[y] + " Puluh " + angka[x];
            }
        }
        return bilang;
    }

    private String terbilang(long x) {
        int y;
        String bilang = "";
        String[] satuan = {"", " Ribu ", " Juta ", " Milyar ", " Trilyun ", " Quadrilyun ", " Quintilyun "};
        if (x > Math.pow(10, 20)) {
            return "Bilangan terlalu besar";
        }
        for (int i = 6; i > 0; i--) {
            y = (int) (x / Math.pow(10, i * 3));
            if (y > 0) {
                if (y == 1 && i == 1) {
                    bilang += " Seribu ";
                } else {
                    bilang += sebut(y) + satuan[i];
                }
            }
            x %= Math.pow(10, i * 3);
        }
        bilang += sebut((int) x);
        return bilang;
    }

    public static void outTerbilang() {
        sc = JOptionPane.showInputDialog("Masukan Bilangan yang akan disebut : ");
        try {
            if (sc.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Waa.. mana bilangannya ?? Isi dulu yaa.. !!");
                outTerbilang();
            } else {

                JOptionPane.showMessageDialog(null, new MenuDariJOption().terbilang(new Long(sc)), "TERBILANG", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Jangan keluar dulu, harus diisi dulu.. !!");
            outTerbilang();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + sc + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            outTerbilang();
        }
    }
    public static void hasilPecahan() {
        int desimal;

        String str = JOptionPane.showInputDialog("Masukkan bilangan yang akan dipecah : ");
        try {
            if (str.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Kok kosong ?? Isi dulu ya.. !!");
                hasilPecahan();
            } else {

                desimal = Integer.parseInt(str);

                int satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, sepuluh, sebelas, duabelas, tigabelas;
                satu = desimal / 100000;
                desimal %= 100000;

                dua = desimal / 50000;
                desimal %= 50000;

                tiga = desimal / 20000;
                desimal %= 20000;

                empat = desimal / 10000;
                desimal %= 10000;

                lima = desimal / 5000;
                desimal %= 5000;

                enam = desimal / 2000;
                desimal %= 2000;

                tujuh = desimal / 1000;
                desimal %= 1000;

                delapan = desimal / 500;
                desimal %= 500;

                sembilan = desimal / 200;
                desimal %= 200;

                sepuluh = desimal / 100;
                desimal %= 100;

                sebelas = desimal / 50;
                desimal %= 50;

                duabelas = desimal / 10;
                desimal %= 10;

                tigabelas = desimal / 1;
                desimal %= 1;


                JOptionPane.showMessageDialog(null, "Jumlah seratus ribuan = " + satu
                        + "\nJumlah lima puluh ribuan = " + dua
                        + "\nJumlah dua puluh ribuan = " + tiga
                        + "\nJumlah sepuluh ribuan = " + empat
                        + "\nJumlah lima ribuan = " + lima
                        + "\nJumlah dua ribuan = " + enam
                        + "\nJumlah seribuan = " + tujuh
                        + "\nJumlah lima ratusan = " + delapan
                        + "\nJumlah dua ratusan = " + sembilan
                        + "\nJumlah seratusan = " + sepuluh
                        + "\nJumlah lima puluhan = " + sebelas
                        + "\nJumlah lima satuan = " + duabelas
                        + "\nJumlah satuan = " + tigabelas, "PECAHAN", JOptionPane.INFORMATION_MESSAGE);
            }
        } catch (NullPointerException not) {
            JOptionPane.showMessageDialog(null, "Eitss mau kemana ?? Isi dulu bilangannya.. !!");
            hasilPecahan();
        } catch (NumberFormatException nae) {
            JOptionPane.showMessageDialog(null, "Hey '" + str + "'"
                    + " .... bukan angka !!"
                    + "\nMasukkan angka saja !!");
            hasilPecahan();
        }
    }
public static void kembaliMenu() {
        inpNama();
        jenisKelamin();
    }
public static void menuJOption() {
        inpNama();
        jenisKelamin();
        String[] pilihan = {"BINER", "HEXA", "OKTAL", "TERBILANG", "PECAHAN", "KEMBALI", "KELUAR"};
        while (true) {
            int response = JOptionPane.showOptionDialog(
                    null, "Selamat Datang " + kelamin + name + " !!"
                    + "\nPilih Konversi Bilangan dibawah ini?"// Pesan
                    , "Konversi Bilangan" // Judul di Tittlebar
                    , JOptionPane.YES_NO_OPTION // Tipe Option
                    , JOptionPane.PLAIN_MESSAGE // Tipe Pesan
                    , null, pilihan, null // Default button
                    );
            switch (response) {
                case 0:
                    outHasilBiner();
                    break;
                case 1:
                    outHasilHexa();
                    break;
                case 2:
                    outHasilOktal();
                    break;
                case 3:
                    outTerbilang();
                    break;
                case 4:
                    hasilPecahan();
                    break;
                case 5:
                    kembaliMenu();
                    break;
                case 6:
                case -1:
                    System.exit(0);
                default:
                    JOptionPane.showMessageDialog(null, "response salah"
                            + response);
                    break;
            }
        }
    }
public static void main(String[] args) {
        menuJOption();
    }
}

 Pertama kita harus memasukkan nama dulu


Jika tidak mengisi nama akan keluar peringatan seperti ini

Setelah mengisi nama, kita harus mengisi jenis kelamin

Jenis kelamin juga tidak boleh kosong

Setelah itu akan keluar pilihan seperti ini

Kemudian masukkan angka desimalnya

Apabila tidak mengisi bilangan desimal akan keluar peringatan seperti ini

Setelah itu kita konversikan ke biner, hexa dan oktal



Setelah itu kita konversikan ke terbilang maupun pecahan



Semoga bermanfaat :)


Rabu, 05 September 2012

KonversiBiner.php

Kalo yang ini PHP nih B)

<?php
        if (isset($_POST['decimal'])) {//apakah data ter-submit?
            $decimal = $_POST['decimal'];
            $original = $_POST['decimal'];
            $binary='';
            if (preg_match('/[^0-9]/',$decimal)) {//memastikan inputan adalah angka
                die("Maaf. Inputan salah..");
            }
            else {
                while ($decimal > 0) {// Looping memutuskan apakah 1 atau 0 yang di
                 if ($decimal%2 == 0) {//menambah 0
                     $binary .= 0;//$binary=0+$binary;
                     $decimal /= 2;//$binary=$binary/2;
                 }


            else {//menambah 1
                $binary .= 1;//$binary=1+$binary
                $decimal = ($decimal1/2)-0.5;
            }
        }
            $result = strrev($binary);//hasile diwalik
            echo "Bilangan $original (desimal) dalam biner adalah $result.
            <a href='KonversiBiner.php'>Back</a>to the script";
        }
  }
    else {
    ?>
    <html>
        <head><title>Konversi Desimal ke Biner</title>
        </head>
        <body> tes
            <form action="<?php echo $_SERVER['PHP_SELF']; ?>"
                  method="POST">
                <h3>Masukkan bilangan Desimal disini (cepat!!);
                </h3><input type="text" size="50" name="decimal">
                <input type="submit" value="konversikan!">
            </form>
            <?php
                echo "<br>",$_SERVER['PHP_SELF'];
            ?>
        </body>
    </html>
    <?php
    }
    ?>


Hasilnya kaya begini


KonversiBilangan.java

Kesalahan saya fatal banget di coding ini hrrrr. Hanya kurang "static String kelamin; " fatal banget kan? Nah, enough deh basa basi nya. Sekarang saya akan memberikan coding yang benar :D taraaaaaaaaa


package Package1;

import java.util.Scanner;
import javax.swing.JOptionPane;

public class KonversiBilangan {
    //global variable
    static String name;//object
    static String kelamin;
    static int bilDes;//variable

    //fungsi/method rekursi
   public static void Biner(int n){
    if(n>1) {Biner(n/2);}
    System.out.print(n%2);
}
public static void Hexa(int n){
    char[] daftarHexa={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    int sisaBagi = n%16;
    if(n>0){
        Hexa((n - sisaBagi) / 16);
    }
    System.out.print(daftarHexa[n%16]);
}
public static void Oktal(int n){
    char[] daftarOktal={'0','1','2','3','4','5','6','7'};
    int sisaBagi = n %8;
    if(n>0){
        Oktal((n - sisaBagi) / 8);
        System.out.print(daftarOktal[n%8]);
    }
}
public static void inputDes(){
    System.out.print("Masukkan Bilangan Desimal= ");
    Scanner inputan=new Scanner(System.in);
    bilDes=inputan.nextInt();
    //return bilDes
}
public static void tampilBiner(){
    inputDes();
    System.out.print("Binernya adalah ");
    Biner(bilDes);
}
public static void tampilHexa(){
    inputDes();
    System.out.print("Hexanya Adalah ");
    Hexa(bilDes);
}
public static void tampilOktal(){
    inputDes();
    System.out.print("Oktalnya adalah ");
    Oktal(bilDes);
}
public static int inpBil (){
    System.out.println("=========================================="
            + "\nSelamat datang "+kelamin+" "+name+"");
    System.out.println("Silahkan memilih menu konversi "
            + "Bilangan ke: "+
            "\n1. Biner \n2. Hexa \n3. Oktal \n4. Exit");
    System.out.print("Masukkan Angka Menu= ");
    Scanner inputan=new Scanner(System.in);
    int pilmenu=inputan.nextInt();
    return pilmenu;
}
public static void menU(int pil){
    System.out.println("\033");//clear screen
    switch(pil){
        case 1: tampilBiner(); break;
        case 2: tampilHexa(); break;
        case 3: tampilOktal(); break;
        case 4: System.out.println("Kamsia ya, sudah mampir.");
                System.exit(0); break;//memberikan kondisi FALSE
        default:System.out.println("(Maaf. Pilih angka 1-4 saja!)");
        break;
    }
    System.out.println("\033");//clear screen
}
public static void main(String arg[]){
    name=JOptionPane.showInputDialog("Masukkan nama Anda : ");//menampilkan input dialog untuk memasukkan nama
    //menampilkan Option Dialog untuk memilih jenis kelamin
        String[] choices = {"Perempuan", "Laki-Laki", "WARIA"};

        String Perempuan= "Nona";
        String Laki= "Abang";
        while (true) {
            int response = JOptionPane.showOptionDialog(
                               null
                             , "Apa jenis kelamin Anda ?"
                             , "Jenis Kelamin"
                             , JOptionPane.YES_NO_OPTION
                             , JOptionPane.QUESTION_MESSAGE
                             , null
                             , choices
                             , "Quit"
                           );
        switch(response){
            case 0: kelamin=Perempuan;
                break;
            case 1: kelamin=Laki;
                break;
            case 2:
                System.out.println("MAAF KAMI TIDAK MENERIMA SELAIN PEREMPUAN / LAKI-LAKI");
                     System.exit(0); break;
        }
    do{
        menU(inpBil());
    }
    while(true);
        }
}
}

Dan jika di-run hasilnya seperti ini nih






Kamis, 02 Agustus 2012

Attitude

Pengertian
Perilaku manusia juga dilatar belakangi oleh sikap. Sikap sendiri memeiliki pengertian sebagai “organisasi pendapat, keyakinan seseorang mengenai objek atau situasi relatif yang relatif ajeg yang disertai adanya perasaan tertentu dan memberikan dasar kepada organisme untuk membuat respon atau perilaku dalam cara tertentu yang dipilihnya”. Atau dalam bahasa sederhana sikap adalah kesediaan beraksi terhadap suatu hal.

Sikap memiliki beberapa pengertian dan definisi sebagai berikut :
• Sikap adalah predisposisi mental untuk melakukan suatu tindakan (Kimmball Young (1945)
• Sikap adalah keajegan dan kekhasan perilaku seseorang dalam hubungan dengan stimulus manusia atau kejadian-kejadian tertentu (Sherif & sherif 1956)
• Sikap adalah predidposisi yang dipelajari untuk merespon secara konsisten dalam tatacara tertentu dan berkenaan dengan objek tertentu (Fishbein & Ajzen 1975)
• Kesimpulannya pengertain sikap adalah kecenderungan untuk bertindak dan bereaksi terhadap stimulus atau rangsangan.

Komponen sikap
Sikap merupakan hubungan dari berbagai komponen yang terdiri atas :
a. Komponen kognitif : yaitu komponen yang tersusun atas dasar pengetahuan dan informasi yang dimilki seseorang tentang objek sikapnya atau komponen yang berkaitan dengan pengetahuan, pandangan, keyakinan atau bagaimana mempersepsi objek
b. Komponen afektif : komponen yang bersifat evaluatif yang berhubungan dengan rasa senang dan tidak senang
c. Komponen konatif : kesiapan seseorang untuk bertingkah laku yang berhubungan dengan objek sikapnya atau komponen yang berhubungan dengan kecenderungan bertindak terhadap objek

Ciri-ciri sikap
Sikap memiliki ciri-ciri sebagai berikut :
a. Sikap tidak dibawa sejak lahir
Berarti manusia dilahirkan tidak membawa sikap tertentu pada suatu objek. Oleh karenanya maka sikap terbentuk selama perkembangan individu yang bersangkutan. Karena terbentuk selama perkembangan maka sikap dapat berubah, dapat dibentuk dan dipelajari. Namun kecenderungannya sikap bersifat tetap.
b. Sikap selalu berhubungan dengan objek
Sikap terbentuk karena hubungan dengan objek-objek tertentu, melalui persepsi terhadap objek tersebut.
c. Sikap dapat tertuju pada satu objek dan sekumpulan objek
Bila seseorang memiliki sikap negatif pada satu orang maaka ia akan menunjukkan sikap yang negatif pada kelompok orang tersebut.
d. Sikap itu dapat berlangsung lama atau sebentar
Jika sikap sudah menjadi nilai dalam kehidupan seseorang maka akan berlangsung lama bertahan, tetapi jika sikap belum mendalam dalam diri seseorang maka sikap relaatif dapat berubah.
e. Sikap mengandung perasaan atau motivasi
Sikap terhaadap sesuaatu akan diikuti oleh perasaan tertentu baik positif maupun negatif. Sikap juga mengandung motivasi atau daya dorong untuk berperilaku.
Sumber: http://nadhirin.blogspot.com/

Minggu, 22 Juli 2012

Perkembangan PHP

PHP: Hypertext Preprocessor adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. PHP banyak dipakai untuk memrogram situs web dinamis. PHP dapat digunakan untuk membangun sebuah CMS.

Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama Form Interpreted (FI), yang wujudnya berupa sekumpulan skrip yang digunakan untuk mengolah data formulir dari web.

Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi sumber terbuka, maka banyak pemrogram yang tertarik untuk ikut mengembangkan PHP.

Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini, interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan.

Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP diubah menjadi akronim berulang PHP: Hypertext Preprocessing.

Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.

Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.