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