Tuesday, December 27, 2016

Bab 9. PHP/MySQL Untuk Programer


User Login, Profil, dan Personalisasi






Menggunakan PHP untuk Login

Pada kasus ini, Anda akan menggunakan beberapa kode dalam PHP untuk mengotorisasi username dan password dari pengguna.

Contoh
Menggunakan PHP untuk login
1.     Buka editor teks Anda, dan ciptakan sebuah file PHP baru dengan kode berikut. Simpan file tersebut dengan rahasia.php.

<?php
include 'otorisasi.inc.php';
?>
<html>
  <head>
    <title> Rahasia </title>
  </head>
  <body>
    <h1> Anda telah menemukan rahasia saya! </h1>
  </body>
</html>

2.    Buka lagi file PHP lain menggunakan kode ini, dan simpan file tersebut dengan nama otorisasi.inc.php.

<?php
// mulai atau lanjutkan sesi
session_start();
if (!isset($_SESSION['logged']) || $_SESSION['logged'] != 1) {
    header('Refresh: 5; URL=login_user.php?redireksi=' . $_SERVER['PHP_SELF']);
    echo '<p> Anda akan diredireksi ke halaman login dalam 5 detik. </p>';
    echo '<p> Jika browser Anda tidak meredireksi Anda secara otomatis, ' .
      '<a href="login_user.php?redireksi=' . $_SERVER['PHP_SELF'] .
      '">klik di sini</a> . </p>';
    die();
}
?>

3.    Ciptakan file PHP ketiga dengan kode berikut:

<?php
session_start();

// memfilter nilai-nilai yang masuk
$username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
$password = (isset($_POST['password'])) ? $_POST['password'] : '';
$redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'rahasia.php';

if (isset($_POST['submit'])) {
    if (!isset($_SESSION['logged']) || $_SESSION['logged'] != 1) {
        if (!empty($_POST['username']) && $_POST['username'] == 'rismon' &&
            !empty($_POST['password']) && $_POST['password'] == 'Dolokulu77') {
            $_SESSION['username'] = $username;
            $_SESSION['logged'] = 1;
            header ('Refresh: 5; URL=' . $redirect);
            echo '<p> Anda akan diredireksi ke halaman awal. </p>';
            echo '<p> Jik browser Anda tidak meredireksi Anda secara ' .
                'otomatis, <a href="' . $redirect . '">
                klik di sini </a>.</p>';
            die();
        } else {
            // menetapkan secara eksplisit untuk memastikan
            $_SESSION['username'] = '';
            $_SESSION['logged'] = 0;
            $error = '<p><strong> Anda telah memberikan usernam tak-valid
              dan/atau ' .
              'password!</strong> Silahkan <a href="register.php"> klik di sini ' .
              'untuk mendaftar </a> jika Anda belum melakukannya. </p>';
        }
    }
}
?>
<html>
  <head>
    <title> Login </title>
  </head>
  <body>
<?php
if (isset($error)) {
    echo $error;
}
?>
    <form action="login_user.php" method="post">
      <table>
        <tr>
          <td> Username: </td>
          <td><input type="text" name="username" maxlength="20" size="20"
            value="<?php echo $username; ?> "/></td>
        </tr><tr>
          <td> Password: </td>
          <td><input type="password" name="password" maxlength="20" size="20"
            value="<?php echo $password; ?>"/></td>
        </tr><tr>
          <td></td>
          <td>
            <input type="hidden" name="redirect" value=" <?php echo $redirect ?> "/>
            <input type="submit" name="submit" value="Login"/>
        </tr>
      </table>
    </form>
  </body>
</html>

4.    Simpan file tersebut dengan nama login_user.php.
5.    Sekarang Anda buka halaman rahasia.php yang telah Anda ciptakan. Karena Anda belum log in, file otorisasi.inc.php akan mengarahkan Anda ke halaman login_user.php, seperti berikut:



6.    Cobalah menggunakan informasi login yang salah sehingga Anda dapat melihat bagaimana halaman bekerja. Anda akan melihat halaman seperti ini:


7.    Sekarang, masukkan informasi yang tepat: rismon untuk username dan Dolokulu77 untuk password. Anda akan diarahkan ke halaman awal yang Anda tuju, karena Anda telah memberikan informasi yang benar. Anda akan melihat tampilan berikut:



Halaman PHP yang Anda ciptakan dipakai untuk mengotorisasi seorang pengguna untuk melihat halaman tertentu dari situs Anda. Ketika Anda menavigasi ke rahasia.php, file otorisasi.inc.php yang dicantumkan akan memeriksa apakah Anda berhasil memulai sebuah sesi dengan login. Jika tidak, Anda akan diarahkan kembali ke halaman login. Ini merupakan baris kode hebat untuk melakukannya:

if (!isset($_SESSION[‘logged’]) || $_SESSION[‘logged’] != 1) {

$_SESSION[‘logged’] merupakan variabel yang Anda periksa, dan nilai 1 merupakan cara lain dalam memeriksa kondisi true.

Sekarang, Anda telah memiliki username dan password yang disisipkan pada kode Anda. Jika Anda ingin beberapa user mengakses halaman tertentu, Anda perlu mengedit berikut:

if (!empty($_POST[‘username’]) && $_POST[‘username’] == ‘rismon’ &&
    !empty($_POST[‘password’]) && $_POST[‘password’] == ‘Dolokulu77’) {

Ini merupakan cara yang efektif dalam memproteksi file-file PHP Anda untuk membatasi banyaknya pengguna dan administrator yang Anda ijinkan.

Menggunakan Informasi Database-Driven
Contoh
Menciptakan tabel database
1.     Ciptakanlah sebuah skript PHP yang baru dengan kode berikut:

<?php
require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

// menciptakan tabel pengguna
$query = 'CREATE TABLE IF NOT EXISTS pengguna_situs (
        id_user INTEGER NOT NULL AUTO_INCREMENT,
        username VARCHAR(20) NOT NULL,
        password CHAR(41) NOT NULL,
         
        PRIMARY KEY (id_user)
    )
    ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

// menciptakan tabel informasi pengguna
$query = 'CREATE TABLE IF NOT EXISTS info_pengguna_situs (
        id_user INTEGER NOT NULL,
        nama_depan VARCHAR(20) NOT NULL,
        nama_belakang VARCHAR(20) NOT NULL,
        email VARCHAR(50) NOT NULL,
        kota VARCHAR(20),
        propinsi CHAR(20),
        hobby VARCHAR(255),

          FOREIGN KEY (id_user) REFERENCES pengguna_situs(id_user)
    )
    ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

// mengisi tabel pengguna
$query = 'INSERT IGNORE INTO pengguna_situs
        (id_user, username, password)
    VALUES
        (1, "john", PASSWORD("rahasia")),
        (2, "simon", PASSWORD("kripto"))';
mysql_query($query, $db) or die (mysql_error($db));

// mengisi tabel informasi pengguna
$query = 'INSERT IGNORE INTO info_pengguna_situs
        (id_user, nama_depan, nama_belakang, email, kota, propinsi, hobby)
    VALUES
        (1, "John", "Sinaga", "jsinaga@contoh.com", NULL, NULL, NULL),
        (2, "Simon", "Sihombing", "sSihombing@contoh.com", NULL, NULL, NULL)';
mysql_query($query, $db) or die (mysql_error($db));

echo 'Sukses!';
?>

2.    Simpan file tersebut dengan nama tabel_pengguna.php.
3.    Buka tabel_pengguna.php dengan browser Anda. PHP akan mengeksekusi kode tersebut untuk menciptakan tabel-tabel dalam database Anda dan kemudian menunjukkan pesan sukses jika semuanya berjalan dengan benar.

Pertama-tama, Anda menciptakan sebuah tabel administrasi dengan nama pengguna_situs. Ini adalah tempat dimana Anda akan menjejak siapa saja administrator yang mengelola sistem Anda.

// menciptakan tabel pengguna
$query = 'CREATE TABLE IF NOT EXISTS pengguna_situs (
        id_user INTEGER NOT NULL AUTO_INCREMENT,
        username VARCHAR(20) NOT NULL,
        password CHAR(41) NOT NULL,
             
        PRIMARY KEY (id_user)
    )
    ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

Kemudian, Anda menciptakan sebuah tabel kedua dengan nama info_pengguna_situs untuk menyimpan informasi lainnya tetang pada administrator, seperti nama, dimana asal usulnya, dan hobinya:

$query = 'CREATE TABLE IF NOT EXISTS info_pengguna_situs (
    id_user INTEGER NOT NULL,
    nama_depan VARCHAR(20) NOT NULL,
    nama_belakang VARCHAR(20) NOT NULL,
    email VARCHAR(50) NOT NULL,
    kota VARCHAR(20),
    propinsi CHAR(20),
    hobby VARCHAR(255),

    FOREIGN KEY (id_user) REFERENCES pengguna_situs(id_user)
    )
    ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

Anda kemudian menambahkan sepasang administrator dalam tabel Anda, sehingga Anda dapat mulai menciptakan bagian registrasi dari kode PHP Anda agar pengguna dapat meregister dan melakukan login, dan memperbarui informasi atau menghapus akun mereka.

$query = 'INSERT IGNORE INTO pengguna_situs
        (id_user, username, password)
    VALUES
        (1, "john", PASSWORD("rahasia")),
        (2, "simon", PASSWORD("kripto"))';
mysql_query($query, $db) or die (mysql_error($db));

$query = 'INSERT IGNORE INTO info_pengguna_situs
        (id_user, nama_depan, nama_belakang, email, kota, propinsi, hobby)
    VALUES
        (1, "John", "Sinaga", "jsinaga@contoh.com", NULL, NULL, NULL),
        (2, "Simon", "Sihombing", "sSihombing@contoh.com", NULL, NULL, NULL)';
mysql_query($query, $db) or die (mysql_error($db));

Contoh
Menjejak sesi dengan PHP dan MySQL
Pada kasus ini, Anda menciptakan sebuah sistem login pengguna yang menggunakan tabel-tabel database yang telah Anda ciptakan. Anda akan memprogramnya sehingga pengguna diharuskan memasukkan username, password, nama depan, nama belakang, dan alamat email. Bidang-bidang lain yang akan disimpan dalam tabel info_pengguna_situs bersifat opsional.
1.     Pertama-tama, ciptakanlah sebuah halaman indeks yang akan meminta informasi login, sama dengan pada contoh sebelumnya, tetapi tidak mencantumkan halaman otorisasi, sehingga Anda dapat menampilkan kontent yang berbeda berdasarkan apakah pengguna telah melakukan login atau tidak. Namai file ini dengan utama.php, dan gunakan kode berikut:

<?php
session_start();
?>
<html>
  <head>
    <title> Halaman Utama </title>
  </head>
  <body>
    <h1> Selamat Datang ke Halaman Utama! </h1>
<?php
if (isset($_SESSION['logged']) && $_SESSION['logged'] == 1) {
    // user telah melakukan login
} else {
    // user belum melakukan login
}
?>
  </body >
</html >

2.    Sekarang, modifikasilah file utama.php seperti ditunjukkan berikut, sehingga Anda dapat menampilkan konten yang berbeda, tergantung dari apakah user telah atau belum melakukan login. Cabang pertama akan tersedia ketika pengguna telah melakukan login, dan akan memuat link-link ke area personal user (yang akan Anda ciptakan nanti), sehingga user dapat memperbarui informasi personal atau menghapus akun mereka. Cabang kedua akan memuat informasi seputar benefit dari pendaftaran dan menjelaskan bagaimana proses pendaftaran dilakukan.

<?php
session_start();
?>
<html>
  <head>
    <title> Halaman Utama </title>
  </head>
  <body>
    <h1> Selamat Datang ke Halaman Utama! </h1>
<?php
if (isset($_SESSION['logged']) && $_SESSION['logged'] == 1) {
    // user telah melakukan login
   ?>
      <p>Terimakasih telah melakukan login ke sistem kami, <b><?php
    echo $_SESSION['username'];?> .</b></p>
      <p>Anda sekarang bisa <a href="personal_pengguna.php">mengklik di sini</a> untuk menuju ke
    ke area informasi personal dan memperbarui atau menghapus informasi Anda
    bila Anda ingin melakukannya.</p>
    <?php
} else {
    // user belum melakukan login
   ?>
      <p>Anda belum melakukan login ke sistem kami. Setelah Anda melakukan login,
      Anda akan memiliki akses terhadap area personal Anda bersama dengan informasi
      dari user lain. </p>
      <p>Jika Anda ingin melakukan login, <a href="login_user.php">klik
      di sini </a> untuk login. Atau jika Anda ingin menciptakan akun,
      <a href="register.php">klik di sini</a> untuk meregistrasi.</p>
    <?php
}
?>
  </body >
</html >

3.    Ciptakanlah sebuah halaman registrasi, pastikan Anda mencantumkan bidang-bidang opsional, dan bahwa username dipilih oleh user yang melakukan registrasi tidak sama dengan username yang sudah ada. Namai file tersebut dengan register.php. Jika user tidak mengisi beberap bidang yang disyaratkan, atau menggunakan username yang telah terdaftar, maka Anda akan memberitahu dan mempertahankan bidang-bidang yang telah dimasukkan, jadi pengguna tidak perlu mengetik-ulang semuanya.

<?php
session_start();

require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

$daftar_hobby = array('Komputer', 'Dansa', 'Marathon', 'Bulutangkis',
    'Golf', 'Berburu', 'Internet', 'Membaca', 'Travel', 'Lainnya');
  
// memfilter nilai-nilai yang masuk
$username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
$password = (isset($_POST['password'])) ? $_POST['password'] : '';
$nama_depan = (isset($_POST['nama_depan'])) ? trim($_POST['nama_depan']) : '';
$nama_belakang = (isset($_POST['nama_belakang'])) ? trim($_POST['nama_belakang']) : '';
$email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
$kota = (isset($_POST['kota'])) ? trim($_POST['kota']) : '';
$propinsi = (isset($_POST['propinsi'])) ? trim($_POST['propinsi']) : '';
$array_hobby = (isset($_POST['array_hobby']) && is_array($_POST['array_hobby'])) ?
$_POST['array_hobby'] : array();

if (isset($_POST['submit']) && $_POST['submit'] == 'Register') {
    $array_error = array();
  
    // memastikan bidang-bidang yang harus diisi
    if (empty($username)) {
    $array_error[] = 'Username tidak boleh kosong.';
    }

   // memeriksa apakah username telah ada dalam tabel atau belum
    $query = 'SELECT username FROM pengguna_situs WHERE username = "' .
    $username . '"';
    $hasil = mysql_query($query, $db) or die(mysql_error());
    if (mysql_num_rows($hasil) > 0) {
        $array_error[] = 'Nama pengguna ' . $username . ' telah terdaftar.';
        $username = '';
    }
    mysql_free_result($hasil);
  
    if (empty($password)) {
        $array_error[] = 'Password tidak boleh kosong.';
    }

   if (empty($nama_depan)) {
        $array_error[] = 'Nama depan tidak boleh kosong.';
    }

   if (empty($nama_belakang)) {
        $array_error[] = 'Nama belakang tidak boleh kosong.';
    }

   if (empty($email)) {
        $array_error[] = 'Alamat email tidak boleh kosong.';
    }

   if (count($array_error) > 0) {
        echo '<p><strong style="color:#FF000;"> Tidak dapat memproses ' .
            'registrasi.</strong></p>';
        echo '<p>Silahkan koreksi berikut:</p>';
        echo '<ul>';
        foreach ($array_error as $error) {
            echo '<li>' . $error . ' </li>';
        }
        echo '</ul>';
    } else {
        // Tidak ada error sehingga masukkan informasi ke dalam tabel.

          $query = 'INSERT INTO pengguna_situs
                (id_user, username, password)
            VALUES
                (NULL, "' . mysql_real_escape_string($username, $db) . '", ' .
                 'PASSWORD("' . mysql_real_escape_string($password,
                 $db) . '"))';
        $hasil = mysql_query($query, $db) or die(mysql_error());
        $id_user = mysql_insert_id($db);

          $query = 'INSERT INTO info_pengguna_situs
                (id_user, nama_depan, nama_belakang, email, kota, propinsi, hobby)
            VALUES
                (' . $id_user . ', ' .
                 '"' . mysql_real_escape_string($nama_depan, $db) . '", ' .
                 '"' . mysql_real_escape_string($nama_belakang, $db) . '", ' .
                 '"' . mysql_real_escape_string($email, $db) . '", ' .
                 '"' . mysql_real_escape_string($kota, $db) . '", ' .
                 '"' . mysql_real_escape_string($propinsi, $db) . '", ' .
                 '"' . mysql_real_escape_string(join(', ', $array_hobby),
                 $db) . '")';

          $hasil = mysql_query($query, $db) or die(mysql_error());
        $_SESSION['logged'] = 1;
        $_SESSION['username'] = $username;
        header('Refresh: 5; URL=utama.php');
?>
<html>
  <head>
    <title> Registrasi </title>
  </head>
  <body>
    <p><strong>Terimakasih<?php echo $username;?> telah mendaftar!</strong></p>
    <p>Registrasi Anda telah selesai. Anda akan diarahkan ke halaman yang Anda
       tuju. Jika browser Anda tidak meredireksi Anda setelah 5 detik,
       <a href="utama.php">silahkan klik di sini</a>.</p>
  </body>
</html>
<?php
        die();
    }
}
?>
<html>
  <head>
    <title> Registrasi </title>
    <style type="text/css">
     td { vertical-align: top; }
    </style>
  </head>
  <body>
    <form action="register.php" method="post">
      <table>
        <tr>
          <td><label for="username"> Username: </label></td>
          <td><input type="text" name="username" id="username" size="20"
            maxlength="20" value=" <?php echo $username;?>"/></td>
        </tr><tr>
          <td><label for="password"> Password:</label></td>
          <td><input type="password" name="password" id="password" size="20"
            maxlength="20" value="<?php echo $password;?>"/></td>
        </tr><tr>
          <td><label for="email" >Email:</label></td>
          <td><input type="text" name="email" id="email" size="20" maxlength="50"
            value="<?php echo $email; ?>"/></td>
        </tr><tr>
          <td><label for="nama_depan"> Nama Depan:</label></td>
          <td><input type="text" name="nama_depan" id="nama_depan" size="20"
            maxlength="20" value="<?php echo $nama_depan;?>"/></td>
        </tr><tr>
          <td><label for="nama_belakang">Nama Belakang:</label></td>
          <td><input type="text" name="nama_belakang" id="nama_belakang" size="20"
            maxlength="20" value="<?php echo $nama_belakang;?>"/></td>
        </tr><tr>
          <td><label for="kota">Kota:</label></td>
          <td><input type="text" name="kota" id="kota" size="20" maxlength="20"
            value="<?php echo $kota; ?>"/></td>
        </tr><tr>
          <td><label for="propinsi">Propinsi:</label></td>
          <td><input type="text" name="propinsi" id="propinsi" size="20" maxlength="20"
            value="<?php echo $propinsi;?>"/></td>
        </tr><tr>
          <td><label for="array_hobby">Hobby/Minat:</label></td>
          <td><select name="array_hobby[]" id="hobby" multiple="multiple">
<?php
foreach ($daftar_hobby as $hobby)
{
    if (in_array($hobby, $array_hobby)) {
        echo '<option value="' . $hobby . '" selected="selected"> ' . $hobby .
             ' </option>';
    } else {
    echo ' <option value="' . $hobby . '">' . $hobby . '</option>';
    }
}
?>
              </select></td>
            </tr><tr>
          <td></td>
          <td><input type="submit" name="submit" value="Register"/></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Contoh
Mengotorisasi pengguna untuk mengedit akun
1.     Modifikasilah file otorisasi.inc.php yang ditunjukkan oleh teks yang disoroti berikut:

<?php
// mulai atau lanjutkan sesi
session_start();
if (!isset($_SESSION['logged'])) {
    header('Refresh: 5; URL=login_user.php?redireksi=' . $_SERVER['PHP_SELF']);
    echo '<p> Anda akan diredireksi ke halaman login dalam 5 detik. </p>';
    echo '<p> Jika browser Anda tidak meredireksi Anda secara otomatis, ' .
      '<a href="login_user.php?redireksi=' . $_SERVER['PHP_SELF'] .
      '">klik di sini</a> . </p>';
    die();
}
?>

2.    Perbaruilah file login_user.php untuk memeriksa username dan password:

<?php
session_start();

require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

// memfilter nilai-nilai yang masuk
$username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
$password = (isset($_POST['password'])) ? $_POST['password'] : '';
$redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'rahasia.php';

if (isset($_POST['submit'])) {
    $query = 'SELECT username FROM pengguna_situs WHERE ' .
        'username = "' . mysql_real_escape_string($username, $db) . '" AND ' .
        'password = PASSWORD("' . mysql_real_escape_string($password,
          $db) . '")';
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    if (mysql_num_rows($hasil) > 0) {
        $_SESSION['username'] = $username;
        $_SESSION['logged'] = 1;
        header ('Refresh: 5; URL=' . $redirect);
        echo '<p> Anda akan diredireksi ke halaman awal. </p>';
        echo '<p> Jik browser Anda tidak meredireksi Anda secara ' .
            'otomatis, <a href="' . $redirect . '">
            klik di sini </a>.</p>';
        die();
    } else {
        $error ='<p><strong> Anda memberikan usernam tak-valid dan/atau '.
            'password!</strong> Silahkan <a href="register.php"> klik di sini ' .
            'untuk registrasi </a> jika Anda belum melakukannya.</p>';
    }
}
?>
<html>
  <head>
    <title> Login </title>
  </head>
  <body>
<?php
if (isset($error)) {
    echo $error;
}
?>
    <form action="login_user.php" method="post">
      <table>
        <tr>
          <td> Username: </td>
          <td><input type="text" name="username" maxlength="20" size="20"
            value="<?php echo $username; ?> "/></td>
        </tr><tr>
          <td> Password: </td>
          <td><input type="password" name="password" maxlength="20" size="20"
            value="<?php echo $password; ?>"/></td>
        </tr><tr>
          <td></td>
          <td>
            <input type="hidden" name="redirect" value=" <?php echo $redirect ?> "/>
            <input type="submit" name="submit" value="Login"/>
        </tr>
      </table>
    </form>
  </body>
</html>

3.    Ciptakanlah halaman personal_pengguna.php dengan kode berikut:

<?php
require 'otorisasi_komik.inc.php';
require 'otorisasi.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

?>
<html>
  <head>
    <title> Info Personal </title>
  </head>
  <body>
    <h1>Selamat datang ke area informasi personal. </h1>
    <p> Dia sini Anda dapat memperbarui informasi personal Anda, atau
        menghapus akun Anda. </p>
    <p> Informasi Anda yang sekarang Anda miliki ditampilkan berikut. </p>
    <p><a href="utama.php"> Klik di sini </a> untuk kembali ke home. </p>
<?php
$query = 'SELECT
        username, nama_depan, nama_belakang, kota, propinsi, email, hobby
    FROM
        pengguna_situs u JOIN
        info_pengguna_situs i ON u.id_user = i.id_user
    WHERE
        username = "' . mysql_real_escape_string($_SESSION
          ['username'], $db) . '"';
$hasil = mysql_query($query, $db) or die(mysql_error($db));

$baris = mysql_fetch_array($hasil);
extract($baris);
mysql_free_result($hasil);
mysql_close($db);
?>
  <ul>
    <li> Nama Depan: <?php echo $nama_depan;?></li>
    <li> Nama Belakang: <?php echo $nama_belakang;?></li>
    <li> Kota: <?php echo $kota; ?></li>
    <li> Propinsi: <?php echo $propinsi; ?></li>
    <li> Email: <?php echo $email; ?></li>
    <li> Hobby/Minat: <?php echo $hobby; ?></li>
  </ul>
  <p><a href="perbarui_akun.php"> Perbarui Akun </a> |
    <a href="hapus_akun.php"> Hapus Akun </a></p>
  </body>
</html>

Contoh
Mengedit akun pengguna
1.     Ciptakanlah halaman pertama, perbarui_akun.php, dengan kode berikut:

<?php
require 'otorisasi_komik.inc.php';
require 'otorisasi.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

$daftar_hobby = array('Komputer', 'Dansa', 'Marathon', 'Bulutangkis',
    'Golf', 'Berburu', 'Internet', 'Membaca', 'Travel', 'Lainnya');
  
if (isset($_POST['submit']) && $_POST['submit'] == 'Perbarui') {
    // memfilter nilai-nilai yang masuk
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
   $id_user = (isset($_POST['id_user'])) ? $_POST['id_user'] : '';
    $password = (isset($_POST['password'])) ? $_POST['password'] : '';
    $nama_depan = (isset($_POST['nama_depan'])) ? trim($_POST['nama_depan']) : '';
    $nama_belakang = (isset($_POST['nama_belakang'])) ? trim($_POST['nama_belakang']) : '';
    $email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
    $kota = (isset($_POST['kota'])) ? trim($_POST['kota']) : '';
    $propinsi = (isset($_POST['propinsi'])) ? trim($_POST['propinsi']) : '';
    $array_hobby = (isset($_POST['array_hobby']) && is_array($_POST['array_hobby'])) ?
    $_POST['array_hobby'] : array();
  
   $array_error = array();

    // memastikan pasangan id_user dan username yang valid
    // agar tidak ada orang yang ingin memanipulasi form untuk menghack
    // akun orang lain
    $query = 'SELECT username FROM pengguna_situs WHERE id_user =
            ' . (int)$id_user .
             ' AND username = "' . mysql_real_escape_string($_SESSION
             ['username'], $db) . '"';
    $hasil = mysql_query($query, $db) or die(mysql_error());

   if (mysql_num_rows($hasil) == 0) {
?>
<html>
  <head>
    <title> Info Pembaruan Akun </title>
  </head>
  <body>
    <p><strong> Jangan Coba untuk Menghack Form! </strong></p>
  </body>
</html>
<?php
        mysql_free_result($hasil);
        mysql_close($db);
        die();
    }
    mysql_free_result($hasil);
  
    if (empty($nama_depan)) {
        $array_error[] = 'Nama depan tidak boleh kosong.';
    }
    if (empty($nama_belakang)) {
        $array_error[] = 'Nama belakang tidak boleh kosong.';
    }
    if (empty($email)) {
        $array_error[] = 'Alamat email tidak boleh kosong.';
    }
  
    if (count($array_error) > 0) {
        echo '<p><strong style="color:#FF000;"> Tidak bisa memperbarui ' .
             'informasi akun Anda. </strong></p>';
        echo '<p> Silahkan perbaiki berikut: </p>';
        echo '<ul>';
        foreach ($array_error as $error) {
            echo '<li>' . $error . '</li>';
        }
        echo '</ul>';
    } else {
        // tidak ada error, masukkan informasi ke database.
        $query = 'UPDATE info_pengguna_situs SET
            nama_depan = "' . mysql_real_escape_string($nama_depan, $db) . '",
            nama_belakang = "' . mysql_real_escape_string($nama_belakang, $db) . '",
            email = "' . mysql_real_escape_string($email, $db) . '",
            kota = "' . mysql_real_escape_string($kota, $db) . '",
            propinsi = "' . mysql_real_escape_string($propinsi, $db) . '",
            hobby = "' . mysql_real_escape_string(join
                (', ', $array_hobby), $db) . '"
        WHERE
            id_user = ' . $id_user;
        mysql_query($query, $db) or die(mysql_error());
        mysql_close($db);
?>
<html>
  <head>
    <title> Infor Pembaruan Akun </title>
  </head>
  <body>
    <p><strong> Akun Anda telah diperbarui. </strong></p>
    <p><a href="personal_pengguna.php"> Klik di sini </a> untuk kembali
      ke akun Anda. </a></p>
  </body>
</html>
<?php
        die();
    }
} else {
    $query = 'SELECT
            u.id_user, nama_depan, nama_belakang, email, kota, propinsi, hobby
        AS hobbyku
        FROM
            pengguna_situs u JOIN info_pengguna_situs i ON u.id_user = i.id_user
        WHERE
            username = "' . mysql_real_escape_string($_SESSION['username'],
                $db) . '"';
    $hasil = mysql_query($query, $db) or die(mysql_error());
    $baris = mysql_fetch_assoc($hasil);

   extract($baris);
    $array_hobby = explode(', ', $hobbyku);
    mysql_free_result($hasil);
    mysql_close($db);
}
?>
<html>
  <head>
    <title> Info Pembaruan Akun </title>
    <style type="text/css">
      td { vertical-align: top; }
    </style>
    <script type="text/javascript">
    window.onload = function() {
        document.getElementById('cancel').onclick = goBack;
    }
    function goBack() {
        history.go(-1);
    }
    </script>
  </head>
  <body>
    <h1> Informasi Pembaruan Akun </h1>
    <form action="perbarui_akun.php" method="post">
      <table>
        <tr>
          <td> Username: </td>
          <td><input type="text" value=" <?php echo $_SESSION['username'];?>"
            disabled="disabled"/></td>
        </tr><tr>
          <td><label for="email"> Email: </label></td>
          <td><input type="text" name="email" id="email" size="20" maxlength="50"
            value="<?php echo $email;?>"/></td>
        </tr><tr>
          <td><label for="nama_depan"> Nama Depan: </label></td>
          <td><input type="text" name="nama_depan" id="nama_depan" size="20"
            maxlength="20" value="<?php echo $nama_depan;?>"/></td>
        </tr><tr>
          <td><label for="nama_belakang"> Nama Belangak: </label></td>
          <td><input type="text" name="nama_belakang" id="nama_belakang" size="20"
            maxlength="20" value="<?php echo $nama_belakang;?>"/></td>
        </tr><tr>
          <td><label for="kota">Kota:</label></td>
          <td><input type="text" name="kota" id="kota" size="20" maxlength="20"
            value="<?php echo $kota;?>"/></td>
        </tr><tr>
          <td><label for="propinsi">Propinsi:</label></td>
          <td><input type="text" name="propinsi" id="propinsi" size="20" maxlength="20"
            value="<?php echo $propinsi;?>"/></td>
        </tr><tr>
          <td><label for="hobby"> Hobby?Minat: </label></td>
          <td><select name="array_hobby[]" id="hobby" multiple="multiple" >
<?php
foreach ($daftar_hobby as $hobby)
{
    if (in_array($hobby, $array_hobby)) {
        echo '<option value="' . $hobby . '" selected="selected">' . $hobby .
             '</option>';
    } else {
        echo '<option value="' . $hobby . '"> ' . $hobby . '</option>';
    }
}
?>
    </select></td>
      </tr><tr>
        <td></td>
        <td>
          <input type="hidden" name="id_user" value=" <?php echo $id_user;?>"/>
          <input type="submit" name="submit" value="Perbarui"/>
          <input type="button" id="cancel" value="Cancel"/>
        </tr>
      </table>
    </form>
  </body>
</html>

2.    Ciptakanlah halaman berikutnya dan namai dengan hapus_akun.php. Halaman ini dipakai pengguna untuk menghapus akunnya. Masukkan kode berikut:

<?php
require 'otorisasi_komik.inc.php';
require 'otorisasi.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

if (isset($_POST['submit']) && $_POST['submit'] == 'Ya') {
    $query = 'DELETE i FROM
            pengguna_situs u JOIN info_pengguna_situs i ON u.id_user = i.id_user
        WHERE u.username="' .
            mysql_real_escape_string($_SESSION['username'], $db) . '"';
    mysql_query($query, $db) or die(mysql_error($db));
  
    $query = 'DELETE FROM pengguna_situs WHERE username="' .
        mysql_real_escape_string($_SESSION['username'], $db) . '"';
    mysql_query($query, $db) or die(mysql_error($db));
    $_SESSION['logged'] = null;
    $_SESSION['username'] = null;
?>
<html>
  <head>
    <title> Hapus Akun </title>
  </head>
  <body>
    <p><strong>Akun Anda telah dihapus.</strong></p>
    <p><a href="utama.php" >Kli di sini</a> untuk kembali ke home.</a></p>
  </body>
</html>
<?php
    mysql_close($db);
    die();
} else {
?>
<html>
  <head>
    <title> Hapus Akun </title>
    <script type="text/javascript">
    window.onload = function() {
        document.getElementById('cancel').onclick = goBack;
    }
    function goBack() {
        history.go(-1);
    }
    </script>
  </head>
  <body>
    <p> Anda yakin ingin menghapus akun Anda?</p>
    <p><strong> Akun Anda tidak akan pernah bisa kembali lagi! </strong></p>
    <form action="hapus_akun.php" method="post">
      <div>
        <input type="submit" name="submit" value="Ya"/>
        <input type="button" id="cancel" value="Tidak" onclick="history.go(-1);"/>
      </div>
    </form>
  </body>
</html>
<?php
}
?>

3.    Bukalah file utama.php dengan browser Anda untuk melihat tampilan berikut:


4.    Pengguna belum melakukan login, jadi ia tidak diijinkan untuk melakukan apapun. Pengguna diberikan pilihan untuk login jika ia telah terdaftar sebelumnya atau ia diminta untuk mendaftar untuk mengaktifasi sebuah akun. Jika pengguna ingin melakukan registrasi, tampilan yang diberikan adalah sebagai berikut:


5.    Sekarang pengguna dapat mengisi informasinya dan mendaftarkan diri sebagai pengguna situs ini. Begitu pengguna mengisi informasi ini dan menekan tombol Register, maka kode akan memeriksa apakah ada bidang-bidang yang disyaratkan belum terisi. Jika satu atau lebih bidang yang wajib diisi tidak terisi, maka form ini akan tampil kembali, dengan informasi masih ada pada form dan pesan error akan muncul yang memberitahu tentang masalah yang terjadi.



6.    Pemeriksaan juga akan dilakukan untuk melihat apakah username telah diambil oleh orang lain atau belum. Jika sudah, maka form ini akan tampil kembali, dengan informasi masih ada pada form dan pesan error akan muncul yang memberitahu tentang masalah yang terjadi.



7.    Begitu registrasi selesai dilakukan, pengguna secara otomatis akan login, dan ia akan diarahkan ke halaman home. Setelah itu, pengguna dapat menavigasi halaman-halaman informasi personal, dimana ia dapat memperbarui atau menghapus akunnya sendiri.



8.    Ketika pengguna memilih untuk memperbarui akunnya, ia akan melihat tampilan:



9.    Setelah pengguna memperbarui akunnya, pesan akan ditampilkan untuk memastikan bahwa pembaruan yang dilakukan telah selesai.


10.Terakhir, halaman untuk menghapus tampak seperti ini:




Menggunakan Cookie dalam PHP
Cookie mirip dengan sesi, seperti dijelaskan sebelumnya. Perbedaan utama antara sesi dan cookie adalah bahwa informasi sesi disimpan di server, dan informasi cookie disimpan di komputer pengguna Keuntungan dari cookie adalah bahwa Anda dapat mengendalikan panjang waktu dari masa hidup cookie, sedangkan sesi hilang ketika pengguna menutup browsernya.

Cookie merupakan secuil informasi yang disimpan di komputer pengguna oleh browsernya. Informasi tersebut secara konstan dilewatkan dalam header HTTP antara browser dan web server. Browser mengirim cookie sebagai bagian dari permintaannya ke server, dan server memperbarui data di komputer user sebagai bagian dari responnya.

Ukuran cookie bergantung dari browser, tetapi secara umum tidak melebihi 1KB. Informasi dalam cookie dapat berupa nama, jumlah kunjungan ke situs, informasi keranjang belanja berbasis-web, atau lainnya.

Contoh
Menjejak cookie dengan PHP
Pada kasus ini akan didemonstrasikan bagaimana menggunakan cookie pada sebuah halaman untuk melihat apakah pengguna telah memiliki cookie terkait di komputernya.
1.     Ciptakanlah file pertama, dengan nama cookie_set.php:

<?php
// Cookie memiliki masa hidup 30 hari dari sekarang
$masaberlaku = time() + (60 * 60 * 24 * 30);

setcookie('username', 'test_user', $masaberlaku);
setcookie('remember_me', 'ya', $masaberlaku);

header('Refresh: 5; URL=uji_cookie.php');
?>
<html>
  <head>
    <title> Uji Cookie </title>
  </head>
  <body>
    <h1> Menetapkan Cookie </h1>
    <p> Anda akan diredireksi ke halaman uji utama dalam 5 detik. </p>
    <p> Jika browser Anda tidak meredireksi Anda secara otomatis,
      <a href="uji_cookie.php"> klik di sini </a>.</p>
  </body>
</html>

2.    Ciptakanlah file kedua, dengan nama hapus_cookie.php:

<?php
// Cookie sudah tidak berlaku lagi
$masaberlaku = time() - 1000;
setcookie('username', null, $masaberlaku);
setcookie('remember_me', null, $masaberlaku);
header('Refresh: 5; URL=uji_cookie.php');
?>
<html>
  <head>
    <title> Uji Cookie (Hapus) </title>
  </head>
  <body>
    <h1> Menghapus Cookie </h1>
      <p> Anda akan diredireksi ke halaman uji utama dalam 5 detik. </p>
      <p> Jika browser Anda tidak meredireksi Anda secara otomatis,
        <a href="uji_cookie.php"> klik di sini </a>.</p>
  </body>
</html>

3.    Ciptakanlah file ketiga, lihat_cookie.php:

<html>
  <head>
    <title> Uji Cookie (Melihat) </title>
  </head>
  <body>
    <h1> Kedua Cookie ini ditetapkan: </h1>
<?php
if (!empty($_COOKIE)) {
    echo '<pre>';
    print_r($_COOKIE);
    echo '</pre>';
} else {
    echo '<p> Tidak ada cookie yang ditetapkan. </p>';
}
?>
<p><a href="uji_cookie.php"> Kembali ke halaman uji utama </a></p>
</body>
</html>

4.    Ciptakanlah file keempat, uji_cookie.php:

<html>
  <head>
    <title> Uji Cookie </title>
  </head>
  <body>
    <h1> Ini adalah halaman uji cookie </h1>
    <p><a href="cookie_set.php"> Tetapkan Cookie </a></p>
    <p><a href="lihat_cookie.php"> Lihat Cookie </a></p>
    <p><a href="hapus_cookie.php"> Hapus Cookie </a></p>
  </body>
</html>

5.    Halaman uji_cookie.php merupakan titik navigasi awal, dengan opsi untuk menetapkan, melihat, dan menghapus cookie.



6.    Link Tetapkan Cookie akan mengarahkan Anda ke cookie_set.php, yang menetapkan dua variabel cookie dengan nama username dan remember_me.



7.    Anda kemudian bisa menavigasi ke lihat_cookie.php. Halaman ini untuk memeriksa apakah nilai-nilai cookie valid. Jika tidak, maka halaman ini akan mengatakan “Tidak ada cookie yang ditetapkan”. Jika cookie berhasil ditetapkan, maka layar akan menampilkan berikut:



8.    Cobalah tutup browser Anda dan kemudian buka kembali untuk mengunjungi lihat_cookie.php. Anda akan melihat bahwa kedua cookie tersebut masih aktif. Kedua cookie ditetapkan dengan masa hidup 30 hari dari ketika ditetapkan. Jika Anda ingin menghapusnya, Anda dapat mengunjungi link Hapus Cookie. Link ini akan memanggil hapus_cookie.php, yang menetapkan masa berlaku kedua cookie telah berakhir.




Registrasi Administrator
Pada bagian terakhir pada bab ini, Anda telah belajar bagaiman melakukan login untuk mengubah informasi dan menghapusnya berdasarkan hak akses. Pada bagian ini, administrator disyaratkan untuk melakukan login sebelum ia dapat melihat siapa saja pengguna yang telah terdaftar dalam database pendaftaran. Hanya administrator tertentu yang dapat memiliki hak istimewa dalam melakukan operasi-operasi tertentu. Sebagai contoh:
D       Pengguna dengan hak administrasi level 0 adalah pengguna biasa.
D       Pengguna dengan hak administrasi level 2 diperbolehkan untuk memperbarui akun pengguna lain, tetapi tidak bisa menghapusnya.
D       Pengguna dengan hak administrasi level 1 diperbolehkan untuk memperbarui dan menghapus akun lain.
Hal ini berguna ketika seorang pengguna, misalnya karena alasan tertentu, tidak bisa melakukan login ke situs, dan administrator dibutuhkan untuk mereset password, mengubah username, dan seterusnya. Tetapi, Anda tentu tidak menginginkan sembarang administrator diijinkan untuk melakukan hal itu.

Contoh
Bagian administrasi
1.     Tulislah file pertama, dengan nama hak_admin.php:

<?php
require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

// memperbarui tabel pengguna
$query = 'ALTER TABLE pengguna_situs
    ADD COLUMN level_admin TINYINT UNSIGNED NOT NULL DEFAULT 0
    AFTER password';
mysql_query($query, $db) or die (mysql_error($db));

// memberikan satu hak administratif
$query = 'UPDATE pengguna_situs SET level_admin = 1 WHERE username = "Rismon"';
mysql_query($query, $db) or die (mysql_error($db));

echo 'Sukses!';
?>

2.    Jalankan hak_admin.php dengan browser Anda, dan Anda akan melihat pesan sukses.
3.    Modifikasilah file login_user.php sebagai berikut:

<?php
session_start();

require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

// memfilter nilai-nilai yang masuk
$username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
$password = (isset($_POST['password'])) ? $_POST['password'] : '';
$redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'utama.php';

if (isset($_POST['submit'])) {
    $query = 'SELECT level_admin FROM pengguna_situs WHERE ' .
        'username = "' . mysql_real_escape_string($username, $db)
          . '" AND ' .
        'password = PASSWORD("' . mysql_real_escape_string($password,
          $db) . '")';
    $hasil = mysql_query($query, $db) or die(mysql_error($db));
    if (mysql_num_rows($hasil) > 0) {
       $baris = mysql_fetch_assoc($hasil);
        $_SESSION['username'] = $username;
        $_SESSION['logged'] = 1;
       $_SESSION['level_admin'] = $baris['level_admin'];
        header ('Refresh: 5; URL=' . $redirect);
        echo '<p> Anda akan diredireksi ke halaman awal. </p>';
        echo '<p> Jik browser Anda tidak meredireksi Anda secara ' .
            'otomatis, <a href="' . $redirect . '">
            klik di sini </a>.</p>';
        die();
    } else {
       // menetapkan secara eksplisit untuk memastikan
        $_SESSION['username'] = '';
        $_SESSION['logged'] = 0;
        $_SESSION['level_admin'] = 0;
         
        $error ='<p><strong> Anda memberikan usernam tak-valid dan/atau '.
            'password!</strong> Silahkan <a href="register.php"> klik di sini ' .
            'untuk registrasi </a> jika Anda belum melakukannya.</p>';
    }
}
?>
<html>
  <head>
    <title> Login </title>
  </head>
  <body>
<?php
if (isset($error)) {
    echo $error;
}
?>
    <form action="login_user.php" method="post">
      <table>
        <tr>
          <td> Username: </td>
          <td><input type="text" name="username" maxlength="20" size="20"
            value="<?php echo $username; ?> "/></td>
        </tr><tr>
          <td> Password: </td>
          <td><input type="password" name="password" maxlength="20" size="20"
            value="<?php echo $password; ?>"/></td>
        </tr><tr>
          <td></td>
          <td>
            <input type="hidden" name="redirect" value=" <?php echo $redirect ?> "/>
            <input type="submit" name="submit" value="Login"/>
        </tr>
      </table>
    </form>
  </body>
</html>

4.    Lakukan beberapa modifikasi pada utama.php:

<?php
session_start();
?>
<html>
  <head>
    <title> Halaman Utama </title>
  </head>
  <body>
    <h1> Selamat Datang ke Halaman Utama! </h1>
<?php
if (isset($_SESSION['logged']) && $_SESSION['logged'] == 1) {
    // user telah melakukan login
   ?>
      <p>Terimakasih telah melakukan login ke sistem kami, <b><?php
    echo $_SESSION['username'];?> .</b></p>
      <p>Anda sekarang bisa <a href="personal_pengguna.php">mengklik di sini</a> untuk menuju ke
    ke area informasi personal dan memperbarui atau menghapus informasi Anda
    bila Anda ingin melakukannya.</p>
    <?php
   if ($_SESSION['level_admin'] > 0) {
    echo '<p><a href="area_admin.php"> Klik di sini </a> untuk mengakses ' .
        'perangkat administrasi. </p>';
    }
} else {
    // user belum melakukan login
   ?>
      <p>Anda belum melakukan login ke sistem kami. Setelah Anda melakukan login,
      Anda akan memiliki akses terhadap area personal Anda bersama dengan informasi
      dari user lain. </p>
      <p>Jika Anda ingin melakukan login, <a href="login_user.php">klik
      di sini </a> untuk login. Atau jika Anda ingin menciptakan akun,
      <a href="register.php">klik di sini</a> untuk meregistrasi.</p>
    <?php
}
?>
  </body >
</html >

5.    Ciptakanlah halaman area_admin.php dengan kode berikut:

<?php
include 'otorisasi.inc.php';

if ($_SESSION['level_admin'] < 1) {
    header('Refresh: 5; URL=personal_pengguna.php');
    echo '<p><strong></strong> Anda tidak terotorisasi untuk melihat halaman ini
      . </strong></p>';
    echo '<p> Anda sekarang diarahkan ke halaman utama.
      Jika browser Anda ' .
      'tidak mengarahkan Anda secara otomatis, <a href="utama.php"> klik ' .
      'di sini </a>.</p>';
    die();
}

require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));
?>

<html>
  <head>
    <title> Administration Area </title>
    <style type="text/css">
    th { background-color: #999;}
    .baris_ganjil { background-color: #EEE; }
    .baris_genap { background-color: #FFF; }
    </style>
  </head>
  <body>
    <h1> Selamat Datang Ke Area Administrasi. </h1>
    <p> Di sini Anda bisa melihat dan mengelola pengguna lainnya. </p>
    <p><a href="utama.php" > Klik di sini </a> untuk kembali ke halaman home. </p>
    <table style="width:70%">
      <tr><th> Username </th><th> Nama Depan </th><th> Nama Belakang </th></tr>
<?php
$query = 'SELECT
        u.id_user, username, nama_depan, nama_belakang
    FROM
        pengguna_situs u JOIN
        info_pengguna_situs i ON u.id_user = i.id_user
    ORDER BY
        username ASC';
$hasil = mysql_query($query, $db) or die(mysql_error($db));

$ganjil = true;
while ($baris = mysql_fetch_array($hasil)) {
    echo ($ganjil == true) ? '<tr class="baris_ganjil">' : ' <tr class="baris_genap">';
    $ganjil = !$ganjil;
    echo '<td><a href="perbarui_pengguna.php?id=' . $baris['id_user']. '">' .
    $baris['username'] . '</a></td>';
    echo '<td>' . $baris['nama_depan'] . '</td>';
    echo '<td>' . $baris['nama_belakang'] . '</td>';
    echo '</tr>';
}
mysql_free_result($hasil);
mysql_close($db);
?>
    </table>
  </body>
</html>

6.    Ciptakanlah file perbarui_pengguna.php berikut:

<?php
include 'otorisasi.inc.php';

if ($_SESSION['level_admin'] < 1) {
    header('Refresh: 5; URL=personal_pengguna.php');
    echo '<p><strong></strong> Anda tidak terotorisasi untuk melihat halaman ini
      . </strong></p>';
    echo '<p> Anda sekarang diarahkan ke halaman utama.
      Jika browser Anda ' .
      'tidak mengarahkan Anda secara otomatis, <a href="utama.php"> klik ' .
      'di sini </a>.</p>';
    die();
}

require 'otorisasi_komik.inc.php';

$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Tidak bisa terhubung. Periksa parameter-parameter koneksi.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

$daftar_hobby = array('Komputer', 'Dansa', 'Marathon', 'Bulutangkis',
    'Golf', 'Berburu', 'Internet', 'Membaca', 'Travel', 'Lainnya');

if (isset($_POST['submit']) && $_POST['submit'] == 'Perbarui') {
    // memfilter nilai-nilai yang masuk
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';
   $id_user = (isset($_POST['id_user'])) ? $_POST['id_user'] : '';
    $password = (isset($_POST['password'])) ? $_POST['password'] : '';
    $nama_depan = (isset($_POST['nama_depan'])) ? trim($_POST['nama_depan']) : '';
    $nama_belakang = (isset($_POST['nama_belakang'])) ? trim($_POST['nama_belakang']) : '';
    $email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
    $kota = (isset($_POST['kota'])) ? trim($_POST['kota']) : '';
    $propinsi = (isset($_POST['propinsi'])) ? trim($_POST['propinsi']) : '';
    $array_hobby = (isset($_POST['array_hobby']) && is_array($_POST['array_hobby'])) ?
    $_POST['array_hobby'] : array();
  
    // menghapus rekaman pengguna
    if (isset($_POST['hapus'])) {
        $query = 'DELETE FROM info_pengguna_situs WHERE id_user = ' . $id_user;
        mysql_query($query, $db) or die(mysql_error());
         
        $query = 'DELETE FROM pengguna_situs WHERE id_user = ' . $id_user;
        mysql_query($query, $db) or die(mysql_error());
?>
<html>
  <head>
    <title> Info Pembaruan Akun </title>
  </head>
  <body>
    <p><strong> Akun telah dihapus. </strong></p>
    <p><a href="area_admin.php"> Klik di sini </a> untuk kembali ke
      area admin. </a></p>
  </body>
</html>
<?php
        die();
    }
    $array_error = array();
    if (empty($username)) {
        $array_error[] = 'Username tidak boleh kosong.';
    }

   // memeriksa apakah username telah ada dalam database
    $query = 'SELECT username FROM pengguna_situs WHERE username = "' .
    $username . '" AND id_user != ' . $id_user;
    $hasil = mysql_query($query, $db) or die(mysql_error());
    if (mysql_num_rows($hasil) > 0) {
        $array_error[] = 'Username ' . $username . ' telah terdaftar.';
        $username = '';
    }
    mysql_free_result($hasil);

   if (empty($nama_depan)) {
        $array_error[] = 'Nama depan tidak boleh kosong.';
    }
    if (empty($nama_belakang)) {
        $array_error[] = 'Nama belakang tidak boleh kosong.';
    }
    if (empty($email)) {
        $array_error[] = 'Alamat email tidak boleh kosong.';
    }
    if (count($array_error) > 0) {
        echo '<p><strong style="color:#FF000;"> Tidak bisa memperbarui ' .
             'informasi akun. </strong></p>';
        echo '<p> Silahkan perbaiki berikut:</p>';
        echo '<ul>';
        foreach ($array_error as $error) {
            echo '<li>' . $error . '</li>';
        }
        echo ' < /ul > ';
    } else {
        // Tidak ada error, jadi masukkan informasi ke database.
        if (!empty($password)) {
            $query = 'UPDATE pengguna_situs SET
                password = PASSWORD("' .
                    mysql_real_escape_string($password, $db) . '")
                WHERE
                    id_user = ' . $id_user;
            mysql_query($query, $db) or die(mysql_error());
        }

          $query = 'UPDATE pengguna_situs u, info_pengguna_situs SET
            username = "' . mysql_real_escape_string($username, $db) . '",
            nama_depan = "' . mysql_real_escape_string($nama_depan,
              $db) . '",
            nama_belakang = "' . mysql_real_escape_string($nama_belakang, $db) . '",
            email = "' . mysql_real_escape_string($email, $db) . '",
            kota = "' . mysql_real_escape_string($kota, $db) . '",
            propinsi = "' . mysql_real_escape_string($propinsi, $db) . '",
            hobby = "' . mysql_real_escape_string(join(', ', $array_hobby),
              $db) . '"
        WHERE
            u.id_user = ' . $id_user;
        mysql_query($query, $db) or die(mysql_error());
        mysql_close($db);
?>
<html>
  <head>
    <title> Info Pembaruan Akun </title>
  </head>
  <body>
    <p><strong> Informasi akun telah diperbarui. </strong></p>
    <p><a href="area_admin.php" > Klik di sini </a> untuk kembali ke
      area admin. </a></p>
  </body>
</html>
<?php
        die();
    }
} else {
    $id_user = (isset($_GET['id'])) ? $_GET['id'] : 0;
    if ($id_user == 0) {
        header('Location: area_admin.php');
        die();
    }
  
    $query = 'SELECT
    username, nama_depan, nama_belakang, email, kota, propinsi, hobby
        AS hobby_ku
    FROM
        pengguna_situs u JOIN info_pengguna_situs i ON u.id_user = i.id_user
    WHERE
        u.id_user = ' . $id_user;
    $hasil = mysql_query($query, $db) or die(mysql_error());

   if (mysql_num_rows($hasil) == 0)
    {
        header('Location: area_admin.php');
        die();
    }
  
    $baris = mysql_fetch_assoc($hasil);
    extract($baris);
    $password = '';
    $array_hobby = explode(', ', $hobby_ku);
    mysql_free_result($hasil);
    mysql_close($db);
}
?>
<html>
  <head>
    <title> Info Pembaruan Akun </title>
    <style type="text/css">
      td { vertical-align: top; }
    </style>
    <script type="text/javascript">
    window.onload = function() {
        document.getElementById('cancel').onclick = goBack;
    }
    function goBack() {
        history.go(-1);
    }
    </script>
  </head>
  <body>
    <h1> Informasi Pembaruan Akun </h1>
    <form action="perbarui_akun.php" method="post">
      <table>
        <tr>
          <td> Username: </td>
          <td><input type="text" value=" <?php echo $_SESSION['username'];?>"
            disabled="disabled"/></td>
        </tr><tr>
          <td><label for="email"> Email: </label></td>
          <td><input type="text" name="email" id="email" size="20" maxlength="50"
            value="<?php echo $email;?>"/></td>
        </tr><tr>
          <td><label for="nama_depan"> Nama Depan: </label></td>
          <td><input type="text" name="nama_depan" id="nama_depan" size="20"
            maxlength="20" value="<?php echo $nama_depan;?>"/></td>
        </tr><tr>
          <td><label for="nama_belakang"> Nama Belangak: </label></td>
          <td><input type="text" name="nama_belakang" id="nama_belakang" size="20"
            maxlength="20" value="<?php echo $nama_belakang;?>"/></td>
        </tr><tr>
          <td><label for="kota">Kota:</label></td>
          <td><input type="text" name="kota" id="kota" size="20" maxlength="20"
            value="<?php echo $kota;?>"/></td>
        </tr><tr>
          <td><label for="propinsi">Propinsi:</label></td>
          <td><input type="text" name="propinsi" id="propinsi" size="20" maxlength="20"
            value="<?php echo $propinsi;?>"/></td>
        </tr><tr>
          <td><label for="hobby"> Hobby?Minat: </label></td>
          <td><select name="array_hobby[]" id="hobby" multiple="multiple" >
<?php
foreach ($daftar_hobby as $hobby)
{
    if (in_array($hobby, $array_hobby)) {
        echo '<option value="' . $hobby . '" selected="selected">' . $hobby .
             '</option>';
    } else {
        echo '<option value="' . $hobby . '"> ' . $hobby . '</option>';
    }
}
?>
    </select></td>
<?php
if ($_SESSION['level_admin'] == 1) {
    echo '</tr><tr>';
    echo '<td></td>';
    echo '<td><input type="checkbox" id="hapus" name="hapus"/>' .
         ' <label for="hapus"> Hapus </label></td>';
}
?>
      </tr><tr>
        <td></td>
        <td>
          <input type="hidden" name="id_user" value=" <?php echo $id_user;?>"/>
          <input type="submit" name="submit" value="Perbarui"/>
          <input type="button" id="cancel" value="Cancel"/>
        </tr>
      </table>
    </form>
  </body>
</html>

7.    Jalankan halaman utama.php dan lakukan login username Rismon dan password Dolokulu77 sebagai administrator. Tampilan akan menjadi berikut:




8.    Klik pada link perangkat administrasi yang membawa ke area_admin.php, seperti ditampilkan berikut:




9.    Klik pada salah satu username, yang membawa ke perbarui_pengguna.php, seperti ditampilkan berikut:









No comments:

Post a Comment