Menggunakan PHP dan MySQL
7.1 Memodifikasi
Template
Karena semua
halaman pada bab ini dan bab berikutnya akan menjadi bagian dari aplikasi Web
yang sama, akan lebih baik bila menggunakan sistem template yang sama. Daripada
membuat template yang baru, tata-letak dari Bab 3 akan digunakan kembali,
dengan sedikit modifikasi pada beberapa link navigasi pada file kepala
(header).
Membuat file kepala
1. Buka file kepala.html pada editor teks Anda.
2. Ubah beberap link yang ada (Skript 7.1).
<li><a
href="indeks.php">Halaman Beranda</a></li>
<li><a
href="registrasi.php">Registrasi</a></li>
<li><a
href="lihat_user.php">Lihat User</a></li>
<li><a
href="password.php">Ubah Password</a></li>
<li><a
href="#">Link Lima</a></li>
Semua contoh pada bab ini akan
melibatkan halaman registrasi, daftar user, dan pengubahan password. Link
kalkulator dan form tanggal dari Bab 3 dihapus.
3. Simpan file sebagai kepala.html.
4. Uji file kepala baru dengan menjalankan indeks.php pada browser Web Anda
(Gambar 7.1).
SKRIPT 7.1
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
<head>
<title><?php echo $judul_hal;?></title>
<link rel="stylesheet"
href="style.css" type="text/css"
media="screen"/>
<meta
http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
</head>
<body>
<div
id="kepala">
<h1>Situs Web Anda</h1>
<h2>Slogan hidup Anda...</h2>
</div>
<div
id="navigasi">
<ul>
<li><a
href="indeks.php">Halaman Beranda</a></li>
<li><a
href="registrasi.php">Registrasi</a></li>
<li><a
href="lihat_user.php">Lihat User</a></li>
<li><a
href="password.php">Ubah Password</a></li>
<li><a
href="#">Link Lima</a></li>
</ul>
</div>
<div
id="isi"><!-- Awal dari isi halaman spesifik. -->
<!-- Skript
3.2 - kepala.html -->
</body>
</html>
|
Gambar 7.1 Halaman
beranda yang dibangkitkan secara dinamis yang memiliki beberapa link navigasi.
7.2
Terhubung Ke MySQL
Langkah pertama
untuk berinteraksi dengan MySQL adalah melakukan koneksi ke server menggunakan
fungsi mysqli_connect():
$dbc = mysqli_connect (namahost, namauser, password, nama_db);
Tiga argumen
pertama yang dikirim ke fungsi adalah (namahost, namauser, dan password) adalah
nilai-nilai yang dipilih oleh user. Nilai host di sini adalah localhost.
Argumen keempat
adalah nama database yang digunakan. Ini ekivalen dengan
USE namadatabase
Jik koneksi
dilakukan, variabel $dbc akan menjadi titik referensi untuk semua interaksi
dengan database. Hampir semua fungsi PHP yang bekerja dengan MySQL akan
mengambil argumen ini sebagai argumen pertama.
Jika ada masalah
dengan koneksi, Anda dapat memanggil fungsi mysqli_connect_error(), yang
menghasilkan pesan error koneksi.
Menghubungkan ke dan memilih database
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda
(Skript 7.2).
<?php
# Skritp 7.2 - mysqli_connect.php
File ini akan dicantumkan oleh
skript PHP lain, jadi ia tidak perlu memuat HTML apapun.
SKRIPT 7.2
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php # Skritp 7.2 - mysqli_connect.php
// File ini memuat informasi akses database.
// File ini melakukan koneksi ke MySQL
// dan menyeleksi database.
// Menetapkan konstanta-konstanta informasi akses
database:
DEFINE ('DB_USER', 'rismon');
DEFINE ('DB_PASSWORD', '1977sihol1');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'namasitusku');
// Melakukan koneksi:
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD,
DB_NAME)
OR die ('Tidak dapat terhubung ke MySQL: ' .
mysqli_connect_error());
?>
|
2. Tetapkan nama host, nama user, password, dan nama database sebagai
konstanta.
//
Menetapkan konstanta-konstanta informasi akses database:
DEFINE
('DB_USER', 'rismon');
DEFINE
('DB_PASSWORD', '1977sihol1');
DEFINE
('DB_HOST', 'localhost');
DEFINE
('DB_NAME', 'namasitusku');
Tiga konstanta pertama ditetapkan
ketika Anda melakukan instalasi server PHP/MySQL. Anda bisa mengunduh beberapa
server seperti WAMP server untuk kebutuhan ini.
3. Lakukan koneksi ke MySQL.
//
Melakukan koneksi:
$dbc
= @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR
die ('Tidak dapat terhubung ke MySQL: ' . mysqli_connect_error());
Jika koneksi tidak berhasil
dilakukan, maka pesan error koneksi akan ditampilkan (Gambar 7.2).
Gambar 7.2 Jika koneksi
tidak berhasil dilakukan, pesan informatif akan ditampilkan dan skript berhenti
dijalankan.
4. Simpan file dengan nama mysqli_connect.php.
7.3
Mengeksekusi Query Sederhana
Setelah Anda
berhasil melakukan koneksi ke database yang dipilih, Anda dapat melakukan
query. Query ini dapat berupa penyisipan, pembaruan, penghapusan, atau
operasi-operasi join yang lebih kompleks. Pada kasus tersebut, fungsi PHP untuk
mengeksekusi sebuah query adalah mysqli_query():
hasil = mysqli_query(dbc, query);
Fungsi tersebut
mengambil koneksi database sebagai argumen pertamanya dan query sebagai argumen
kedua. Jadi, contoh eksekusi atas sebuah query tampak seperti ini:
$r = mysqli_query($dbc, $q);
Mengeksekusi query sederhana
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda
(Skript 7.3).
$judul_hal
= 'Registrasi';
include
('kepala.html');
2. Ciptakan kondisional untuk pengiriman form dan inisialisasi $arrayError.
//
Memeriksa apakah form telah disubmit:
if
(isset($_POST['disubmit'])) {
$arrayError = array(); // Inisialisasi array
error.
3. Validasi nama depan.
//
Memeriksa nama depan:
if
(empty($_POST['nama_depan'])) {
$arrayError[] = 'Anda lupa memasukkan nama
depan.';
}
else {
$fn = trim($_POST['nama_depan']);
}
4. Validasi nama belakang dan alamat email.
//
Memeriksa nama belakang:
if
(empty($_POST['nama_belakang'])) {
$arrayError[] = 'Anda lupa memasukkan nama
belakang.';
}
else {
$ln = trim($_POST['nama_belakang']);
}
//
Memeriksa alamat email:
if
(empty($_POST['email'])) {
$arrayError[] = 'Anda lupa memasukkan alamat
email.';
}
else {
$e = trim($_POST['email']);
}
5. Validasi password.
//
Memeriksa password dan mencocokkan password konfirmasi:
if
(!empty($_POST['pass1'])) {
if ($_POST['pass1'] != $_POST['pass2']) {
$arrayError[] = 'Password Anda tidak
cocok dengan password konfirmasi.';
} else {
$p = trim($_POST['pass1']);
}
}
else {
$arrayError[] = 'Anda lupa memasukkan
password Anda.';
}
6. Periksa apakah tidak ada masalah dengan registrasi user.
if
(empty($arrayError)) {
7. Tambahkan user ke dalam database.
//
Registrasi user di dalam database...
require_once
('mysqli_connect.php'); // Koneksi ke db.
//
Melakukan query:
$q
= "INSERT INTO pengguna (nama_depan, nama_belakang, email, pass,
tanggal_registrasi)
VALUES
('$fn', '$ln', '$e', SHA1('$p'), NOW() )";
$r
= @mysqli_query ($dbc, $q); // Menjalankan query.
8. Laporkan keberhasilan query.
if
($r) { // If it ran OK.
// Menampilkan pesan:
echo '<h1>Terimakasih!</h1>
<p>Anda sekarang telah
terdaftar!</p><p><br /></p>';
}
else { // Jika ada masalah.
// Pesan error:
echo '<h1>Error sistem</h1>
<p class="error">Anda belum
terdaftar!.</p>';
// Pesan debugging:
echo '<p>' . mysqli_error($dbc) .
'<br /><br />Query: ' . $q . '</p>';
}
// Akhir dari if ($r) IF.
9. Tutup koneksi database dan tutupk kode HTML.
//
Mencantumkan file kaki dan keluar skript:
include
('kaki.html');
exit();
10. Tampilkan pesan error dan tutup kondisional.
} else { // Melaporkan arrayError.
echo '<h1>Error!</h1>
<p
class="error">Berikut adalah error yang terjadi:<br />';
foreach ($arrayError as $psn) { //
Menampilkan tiap error.
echo " - $psn<br />\n";
}
echo '</p><p>Silahkan
coba lagi.</p><p><br /></p>';
} // Keluar dari if (empty($arrayError)) IF.
}
// Keluar dari kondisional utama.
11. Tutup kode PHP dan awali form HTML.
?>
<h1>Registrasi</h1>
<form
action="registrasi.php" method="post">
<p>Nama Depan: <input
type="text" name="nama_depan" size="15"
maxlength="20"
value="<?php if (isset($_POST['nama_depan'])) echo
$_POST['nama_depan']; ?>" /></p>
<p>Nama Belakang: <input
type="text" name="nama_belakang" size="15"
maxlength="40"
value="<?php if (isset($_POST['nama_belakang'])) echo
$_POST['nama_belakang']; ?>" /></p>
<p>Alamat Email: <input
type="text" name="email" size="20"
maxlength="80"
value="<?php
if (isset($_POST['email'])) echo $_POST['email']; ?>" /> </p>
<p>Password: <input
type="password" name="pass1" size="10"
maxlength="20" /></p>
<p>Konfirmasi Password: <input
type="password" name="pass2" size="10"
maxlength="20" /></p>
<p><input type="submit"
name="submit" value="Registrasi" /></p>
<input type="hidden"
name="disubmit" value="TRUE" />
</form>
12. Tutup template.
<?php
include
('kaki.html');
?>
13. Simpan file sebagai registrasi.php.
SKRIPT 7.3
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<?php # Skript 7.3 - registrasi.php
$judul_hal = 'Registrasi';
include ('kepala.html');
// Memeriksa apakah form telah disubmit:
if (isset($_POST['disubmit'])) {
$arrayError =
array(); // Inisialisasi array error.
// Memeriksa nama
depan:
if (empty($_POST['nama_depan']))
{
$arrayError[]
= 'Anda lupa memasukkan nama depan.';
} else {
$fn =
trim($_POST['nama_depan']);
}
// Memeriksa nama
belakang:
if
(empty($_POST['nama_belakang'])) {
$arrayError[]
= 'Anda lupa memasukkan nama belakang.';
} else {
$ln =
trim($_POST['nama_belakang']);
}
// Memeriksa
alamat email:
if
(empty($_POST['email'])) {
$arrayError[]
= 'Anda lupa memasukkan alamat email.';
} else {
$e = trim($_POST['email']);
}
// Memeriksa
password dan mencocokkan password konfirmasi:
if
(!empty($_POST['pass1'])) {
if
($_POST['pass1'] != $_POST['pass2']) {
$arrayError[]
= 'Password Anda tidak cocok dengan password konfirmasi.';
} else {
$p =
trim($_POST['pass1']);
}
} else {
$arrayError[]
= 'Anda lupa memasukkan password Anda.';
}
if
(empty($arrayError)) { // Jika segala sesuatu OK.
// Registrasi
user di dalam database...
require_once
('mysqli_connect.php'); // Koneksi ke db.
// Melakukan
query:
$q = "INSERT INTO pengguna (nama_depan, nama_belakang, email,
pass, tanggal_registrasi)
VALUES
('$fn', '$ln', '$e', SHA1('$p'), NOW() )";
$r = @mysqli_query
($dbc, $q); // Menjalankan query.
if ($r) { //
If it ran OK.
//
Menampilkan pesan:
echo
'<h1>Terimakasih!</h1>
<p>Anda
sekarang telah terdaftar!</p><p><br /></p>';
} else { //
Jika ada masalah.
// Pesan
error:
echo
'<h1>Error sistem</h1>
<p
class="error">Anda belum terdaftar!.</p>';
// Pesan
debugging:
echo
'<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $q .
'</p>';
} // Akhir dari
if ($r) IF.
mysqli_close($dbc);
// Menutup koneksi ke database.
// Mencantumkan
file kaki dan keluar skript:
include
('kaki.html');
exit();
} else { //
Melaporkan arrayError.
echo
'<h1>Error!</h1>
<p
class="error">Berikut adalah error yang terjadi:<br />';
foreach
($arrayError as $psn) { // Menampilkan tiap error.
echo "
- $psn<br />\n";
}
echo
'</p><p>Silahkan coba lagi.</p><p><br
/></p>';
} // Keluar dari
if (empty($arrayError)) IF.
} // Keluar dari kondisional utama.
?>
<h1>Registrasi</h1>
<form action="registrasi.php"
method="post">
<p>Nama Depan: <input type="text"
name="nama_depan" size="15" maxlength="20"
value="<?php if (isset($_POST['nama_depan'])) echo
$_POST['nama_depan']; ?>" /></p>
<p>Nama Belakang: <input type="text"
name="nama_belakang" size="15" maxlength="40"
value="<?php if
(isset($_POST['nama_belakang'])) echo
$_POST['nama_belakang']; ?>" /></p>
<p>Alamat Email: <input type="text"
name="email" size="20" maxlength="80"
value="<?php if (isset($_POST['email'])) echo
$_POST['email']; ?>" />
</p>
<p>Password: <input type="password"
name="pass1" size="10" maxlength="20"
/></p>
<p>Konfirmasi Password: <input type="password" name="pass2"
size="10" maxlength="20"
/></p>
<p><input type="submit"
name="submit" value="Registrasi" /></p>
<input type="hidden"
name="disubmit" value="TRUE" />
</form>
<?php
include ('kaki.html');
?>
|
Gambar 7.3 Tampilan
halaman registrasi.php
Gambar 7.4 Konfirmasi
ketika user telah berhasil didaftarkan.
Gambar 7.5 Pesan error
ditampilkan ketika form tidak diisi dengan benar.
7.4
Membaca Hasil Query
Bab 6 telah
mendemonstrasikan bagaimana mengeksekusi query-query sederhana pada sebuah
database MySQL. Sekarang waktunya bagi Anda untuk mendemonstrasikannya di dalam
file PHP.
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda
(Skript 7.4).
<?php
# Skript 7.4 - lihat_user.php
//
Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal
= 'Melihat Semua User';
include
('kepala.html');
//
Header halaman:
echo
'<h1>Daftar User Yang Terdaftar</h1>';
2. Koneksi ke database dan lakukan query:
require_once
('mysqli_connect.php'); // Koneksi ke db.
//
Melakukan query:
$q
= "SELECT CONCAT(nama_belakang, ', ', nama_depan) AS nama,
DATE_FORMAT(tanggal_registrasi,
'%M %d, %Y') AS dr FROM pengguna
ORDER
BY tanggal_registrasi ASC";
$r
= @mysqli_query ($dbc, $q); // Menjalankan query.
3. Tampilkan hasil query.
if
($r) { // Jika OK, tampilkan semua rekaman.
// Kepala tabel.
echo '<table align="center"
cellspacing="3" cellpadding="3" width="75%">
<tr><td
align="left"><b>Name</b></td><tdalign="left">
<b>Tanggal
Daftar</b></td></tr>';
// Menampilkan semua rekaman:
while ($baris = mysqli_fetch_array($r,
MYSQLI_ASSOC)) {
echo '<tr><td
align="left">' .
$baris['nama'] . '</td><td
align="left">'
. $baris['dr'] . '</td></tr>';
}
echo '</table>'; // Tutup tabel.
4. Bebesakan resouce.
mysqli_free_result
($r); // Membebaskan resource
5. Sempurnakan kondisional utama.
}
else { // If it did not run OK.
// Pesan umum:
echo '<p
class="error">Daftar user tidak bisa dibaca. Maaf...</p>';
// Pesan debugging:
echo '<p>' . mysqli_error($dbc) .
'<br/><br />Query: ' . $q . '</p>';
}
// Akhir dari if ($r) IF.
6. Tutup koneksi database dan halaman.
mysqli_close($dbc);
// Tutup koneksi database
include
('kaki.html');
?>
7. Simpan file dengan nama lihat_user.php, tempatkan pada direktori Web,
dan uji dengan browser Web Anda (Gambar 7.6).
SKRIPT 7.4
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<?php # Skript 7.4 - lihat_user.php
// Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal = 'Melihat Semua User';
include ('kepala.html');
// Header halaman:
echo '<h1>Daftar User Yang Terdaftar</h1>';
require_once ('mysqli_connect.php'); // Koneksi ke db.
// Melakukan query:
$q = "SELECT CONCAT(nama_belakang, ', ', nama_depan)
AS nama,
DATE_FORMAT(tanggal_registrasi, '%M %d, %Y') AS dr FROM
pengguna
ORDER BY tanggal_registrasi ASC";
$r = @mysqli_query ($dbc, $q); // Menjalankan query.
if ($r) { // Jika OK, tampilkan semua rekaman.
// Kepala tabel.
echo '<table
align="center" cellspacing="3" cellpadding="3"
width="75%">
<tr><td align="left"><b>Nama</b></td><tdalign="left">
<b>Tanggal
Daftar</b></td></tr>';
// Menampilkan
semua rekaman:
while ($baris =
mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo
'<tr><td align="left">' .
$baris['nama']
. '</td><td align="left">'
. $baris['dr']
. '</td></tr>';
}
echo
'</table>'; // Tutup tabel.
mysqli_free_result ($r); // Membebaskan resource
} else { // Jika ada masalah.
// Pesan umum:
echo '<p
class="error">Daftar user tidak bisa dibaca. Maaf...</p>';
// Pesan
debugging:
echo '<p>'
. mysqli_error($dbc) . '<br/><br />Query: ' . $q . '</p>';
} // Akhir dari if ($r) IF.
mysqli_close($dbc); // Tutup koneksi database
include ('kaki.html');
?>
|
Gambar 7.6 Semua rekaman
dibaca dari database dan ditampilkan pada browser Web.
7.5
Mengamankan SQL
Keamanan
database dilakukan dengan:
1. Melindungi informasi akses MySQL.
2. Tidak memberitahu informasi terlalu banyak mengenai database.
3. Hati-hati dengan query, khususnya yang melibatkan data yang disubmit
oleh user.
Oleh karena
alasan ini, fungsi mysqli_real_escape_string() sebaiknya digunakan pada tiap
masukan teks pada sebuah form. Untuk mendemonstrasikannya, halaman
registrasi.php akan diperbaiki.
1. Bukan halaman registrasi.php pada editor teks atau IDE Anda.
2. Pindahkan inklusi file myslqi_connect.php ke tepat sebelum kondisional
utama (Skript 7.5).
3. Ubah validasi agar menggunakan fungsi mysqli_real_escape_string().
// Memeriksa nama depan:
if (empty($_POST['nama_depan'])) {
$arrayError[] = 'Anda lupa memasukkan
nama depan.';
} else {
$fn =
mysqli_real_escape_string($dbc, trim($_POST['nama_depan']));
}
// Memeriksa nama belakang:
if (empty($_POST['nama_belakang'])) {
$arrayError[] = 'Anda lupa memasukkan
nama belakang.';
} else {
$ln =
mysqli_real_escape_string($dbc, trim($_POST['nama_belakang']));
}
// Memeriksa alamat email:
if (empty($_POST['email'])) {
$arrayError[] = 'Anda lupa memasukkan
alamat email.';
} else {
$e =
mysqli_real_escape_string($dbc, trim($_POST['email']));
}
// Memeriksa password dan mencocokkan
password konfirmasi:
if (!empty($_POST['pass1'])) {
if ($_POST['pass1'] != $_POST['pass2']) {
$arrayError[] = 'Password Anda tidak
cocok dengan password konfirmasi.';
} else {
$p = mysqli_real_escape_string($dbc,
trim($_POST['pass1']));
}
} else {
$arrayError[] = 'Anda lupa memasukkan
password Anda.';
}
4. Tambahkan panggilan kedua pada mysqli_cloce() tepat sebelum akhir dari
kondisional utama.
5. Simpan file dengan nama registrasi.php, tempatkan pada direktori Web,
dan uji dengan browser Web Anda (Gambar 7.7 dan Gambar 7.8).
SKRIPT 7.5
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php # Skript 7.5 - registrasi.php
$judul_hal = 'Registrasi';
include ('kepala.html');
// Memeriksa apakah form telah disubmit:
if (isset($_POST['disubmit'])) {
// Registrasi user di dalam database...
require_once ('mysqli_connect.php'); //
Koneksi ke db.
$arrayError =
array(); // Inisialisasi array error.
// Memeriksa nama
depan:
if
(empty($_POST['nama_depan'])) {
$arrayError[]
= 'Anda lupa memasukkan nama depan.';
} else {
$fn = mysqli_real_escape_string($dbc,
trim($_POST['nama_depan']));
}
// Memeriksa nama
belakang:
if
(empty($_POST['nama_belakang'])) {
$arrayError[]
= 'Anda lupa memasukkan nama belakang.';
} else {
$ln = mysqli_real_escape_string($dbc,
trim($_POST['nama_belakang']));
}
// Memeriksa
alamat email:
if
(empty($_POST['email'])) {
$arrayError[]
= 'Anda lupa memasukkan alamat email.';
} else {
$e = mysqli_real_escape_string($dbc,
trim($_POST['email']));
}
// Memeriksa
password dan mencocokkan password konfirmasi:
if (!empty($_POST['pass1']))
{
if
($_POST['pass1'] != $_POST['pass2']) {
$arrayError[] = 'Password Anda tidak cocok dengan password
konfirmasi.';
} else {
$p = mysqli_real_escape_string($dbc,
trim($_POST['pass1']));
}
} else {
$arrayError[]
= 'Anda lupa memasukkan password Anda.';
}
if
(empty($arrayError)) { // Jika segala sesuatu OK.
// Melakukan
query:
$q = "INSERT INTO pengguna (nama_depan, nama_belakang, email,
pass, tanggal_registrasi)
VALUES
('$fn', '$ln', '$e', SHA1('$p'), NOW() )";
$r =
@mysqli_query ($dbc, $q); // Menjalankan query.
if ($r) { //
If it ran OK.
//
Menampilkan pesan:
echo
'<h1>Terimakasih!</h1>
<p>Anda sekarang telah terdaftar!</p><p><br
/></p>';
} else { //
Jika ada masalah.
// Pesan
error:
echo
'<h1>Error sistem</h1>
<p
class="error">Anda belum terdaftar!.</p>';
// Pesan
debugging:
echo
'<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $q .
'</p>';
} // Akhir dari
if ($r) IF.
mysqli_close($dbc); // Menutup koneksi ke database.
// Mencantumkan
file kaki dan keluar skript:
include
('kaki.html');
exit();
} else { //
Melaporkan arrayError.
echo
'<h1>Error!</h1>
<p
class="error">Berikut adalah error yang terjadi:<br />';
foreach
($arrayError as $psn) { // Menampilkan tiap error.
echo "
- $psn<br />\n";
}
echo
'</p><p>Silahkan coba lagi.</p><p><br
/></p>';
} // Keluar dari
if (empty($arrayError)) IF.
mysqli_close($dbc); // Menutup koneksi ke
database.
} // Keluar dari kondisional utama.
?>
<h1>Registrasi</h1>
<form action="registrasi.php"
method="post">
<p>Nama Depan: <input type="text"
name="nama_depan" size="15" maxlength="20"
value="<?php if (isset($_POST['nama_depan'])) echo
$_POST['nama_depan']; ?>" /></p>
<p>Nama Belakang: <input type="text"
name="nama_belakang" size="15" maxlength="40"
value="<?php if (isset($_POST['nama_belakang'])) echo
$_POST['nama_belakang']; ?>" /></p>
<p>Alamat Email: <input type="text"
name="email" size="20" maxlength="80"
value="<?php if (isset($_POST['email'])) echo
$_POST['email']; ?>" />
</p>
<p>Password: <input type="password"
name="pass1" size="10" maxlength="20"
/></p>
<p>Konfirmasi Password: <input
type="password" name="pass2" size="10"
maxlength="20" /></p>
<p><input type="submit"
name="submit" value="Registrasi" /></p>
<input type="hidden"
name="disubmit" value="TRUE" />
</form>
<?php
include ('kaki.html');
?>
|
Gambar 7.7 User baru
melakukan registrasi.
Gambar 7.8 User baru
telah terdaftar di dalam database.
7.6
Menghitung Banyak Rekaman
Fungsi lain yang
akan didiskusikan adalah mysqli_num_rows(). Fungsi ini menghasilkan jumlah
baris yang dibacak oleh query SELECT, dengan sintaksis berikut:
$jum
= mysqli_num_rows($r);
1. Buka lihat_user.php pada editor teks atau IDE Anda.
2. Tepat sebelum kondisional if ($r), tambahkan baris ini (Skript 7.6).
$jum = mysqli_num_rows($r);
Baris ini akan menugaskan banyak
baris yang dihasilkan oleh query kepada variabel $jum.
SKRIPT 7.6
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<?php # Skript 7.6 - lihat_user.php
// Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal = 'Melihat Semua User';
include ('kepala.html');
// Header halaman:
echo '<h1>Daftar User Yang Terdaftar</h1>';
require_once ('mysqli_connect.php'); // Koneksi ke db.
// Melakukan query:
$q = "SELECT CONCAT(nama_belakang, ', ', nama_depan)
AS nama,
DATE_FORMAT(tanggal_registrasi, '%M %d, %Y') AS dr FROM
pengguna
ORDER BY tanggal_registrasi ASC";
$r = @mysqli_query ($dbc, $q); // Menjalankan query.
// Menghitung banyak
baris yang dihasilkan query:
$jum =
mysqli_num_rows($r);
if ($jum > 0) { //
Jika OK, tampilkan semua rekaman.
// Menampilkan berapa banyak user:
echo "<p>Ada sebanyak $jum user
yang telah terdaftar.</p>\n";
// Kepala tabel.
echo '<table
align="center" cellspacing="3" cellpadding="3"
width="75%">
<tr><td align="left"><b>Nama</b></td><tdalign="left">
<b>Tanggal
Daftar</b></td></tr>';
// Menampilkan
semua rekaman:
while ($baris =
mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo
'<tr><td align="left">' .
$baris['nama']
. '</td><td align="left">'
. $baris['dr']
. '</td></tr>';
}
echo
'</table>'; // Tutup tabel.
mysqli_free_result ($r); // Membebaskan resource
} else { // Jika tidak ada rekaman yang dihasilkan.
echo '<p
class="error">Tidak ada user yang telah terdaftar.</p>';
} // Akhir dari if ($r) IF.
mysqli_close($dbc); // Tutup koneksi database
include ('kaki.html');
?>
|
Gambar 7.9 Banyak user
telah ditampilkan.
3. Ubah kondisional $r menjadi:
if ($jum > 0) {
4. Tepat sebelum menciptakan tabel HTML, tampilkan jumlah user yang telah
terdaftar.
// Menampilkan berapa
banyak user:
echo "<p>Ada
sebanyak $jum user yang telah terdaftar.</p>\n";
5. Ubah bagian else dari kondisional utama.
} else { // Jika tidak
ada rekaman yang dihasilkan.
echo '<p class="error">Tidak
ada user yang telah terdaftar.</p>';
6. Simpan file dengan nama lihat_user.php, tempatkan pada direktori Web,
dan uji dengan browser Web Anda (Gambar 7.9).
7.7
Memperbarui Rekaman dengan PHP
Teknik terakhir
yang akan didiskusikan pada bab ini adalah bagaimana memperbarui
rekaman-rekaman database melalui sebuah skript PHP. Untuk melakukannya,
diperlukan sebuah query UPDATE. Keberhasilan ekskusi dapat diverifikasi dengan
fungsi PHP mysqli_affected_rows().
1. Ciptakan sebuah skript PHP baru pada editor teks atau IDE Anda (Skript
7.7).
<?php # Skript 7.7 -
password.php
// Halaman ini dipakai
oleh user untuk mengubah passwordnya.
$judul_hal = 'Ubah
password Anda';
include ('kepala.html');
2. Awali kondisional utama.
if
(isset($_POST['disubmit'])) {
SKRIPT 7.7
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<?php # Skript 7.7 - password.php
// Halaman ini dipakai oleh user untuk mengubah
passwordnya.
$judul_hal = 'Ubah password Anda';
include ('kepala.html');
// Memeriksa apakah form telah dikirim:
if (isset($_POST['disubmit'])) {
require_once
('mysqli_connect.php');
// Koneksi ke db.
$arrayError =
array(); // Menginisialisasi array error.
// Memeriksa
alamat email:
if (empty($_POST['email']))
{
$arrayError[]
= 'Anda lupa memasukkan alamat email.';
} else {
$e =
mysqli_real_escape_string($dbc, trim($_POST['email']));
}
// Check for the
current password:
if
(empty($_POST['pass'])) {
$arrayError[]
= 'Anda lupa memasukkan password.';
} else {
$p =
mysqli_real_escape_string($dbc, trim($_POST['pass']));
}
// Memeriksa
password baru dan mencocokkan
// dengan
password konfirmasi:
if
(!empty($_POST['pass1'])) {
if
($_POST['pass1'] != $_POST['pass2']) {
$arrayError[] = 'Password baru Anda tidak cocok dengan password
konfirmasi.';
} else {
$np =
mysqli_real_escape_string($dbc, trim($_POST['pass1']));
}
} else {
$arrayError[]
= 'Anda lupa memasukkan password baru.';
}
if
(empty($arrayError)) { // Jika semuanya OK.
// Memeriksa
apakah user memasukkan kombinasi
// pasangan alamat email/password yang
tepat:
$q =
"SELECT id_user FROM pengguna
WHERE (email='$e' AND pass=SHA1('$p')
)";
$r =
@mysqli_query($dbc, $q);
$jum =
@mysqli_num_rows($r);
if ($jum == 1)
{ // Cocok.
// Membaca
id_user:
$baris =
mysqli_fetch_array($r, MYSQLI_NUM);
//
Melakukan query UPDATE:
$q =
"UPDATE pengguna SET
pass=SHA1('$np')
WHERE id_user=$baris[0]";
$r =
@mysqli_query($dbc, $q);
if
(mysqli_affected_rows($dbc) ==1) { // Jika OK.
//
Tampilkan pesan.
echo
'<h1>Terimakasih!</h1>
<p>Password Anda telah diperbarui.</p><p><br
/></p>';
} else { //
Jika ada masalah.
// Pesan
umum:
echo
'<h1>Error Sistem</h1>
<p class="error">Password Anda tidak dapat diperbarui.
Maaf.</p>';
// Pesan
Debugging:
echo
'<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $q .
'</p>';
}
//
Mencantumkan file kaki dan keluar dari skript.
include
('kaki.html');
exit();
} else { // Kombinasi email/password
tak-valid
echo
'<h1>Error!</h1>
<p
class="error">Alamat email dan password tidak cocok.</p>';
}
} else { //
Melaporkan arrayError.
echo
'<h1>Error!</h1>
<p
class="error">Berikut adalah error yang terjadi:<br />';
foreach
($arrayError as $psn) { // Menampilkan tiap error.
echo "
- $psn<br />\n";
}
echo
'</p><p>Silahkan coba lagi.</p><p><br
/></p>';
} // Akhir dari
if (empty($arrayError)) IF.
mysqli_close($dbc); // Menutup koneksi database.
} // Akhir dari kondisional utama.
?>
<h1>Ubah Password Anda</h1>
<form
action="password.php" method="post">
<p>Alamat
Email: <input type="text" name="email"
size="20" maxlength="80"
value="<?php if (isset($_POST['email'])) echo $_POST['email'];
?>" /> </p>
<p>Password Sekarang: <input
type="password" name="pass" size="10"
maxlength="20" /></p>
<p>Password Baru: <input
type="password" name="pass1" size="10" maxlength="20"/></p>
<p>Konfirmasi Password Baru:
<input type="password" name="pass2"
size="10" maxlength="20" /></p>
<p><input type="submit" name="submit"
value="Change Password" /></p>
<input
type="hidden" name="disubmit" value="TRUE"
/>
</form>
<?php
include ('kaki.html');
?>
|
3. Cantumkan koneksi database dan ciptakan sebuah array untuk menyimpan
error.
require_once
('mysqli_connect.php');
// Koneksi ke db.
$arrayError = array(); //
Menginisialisasi array error.
4. Validasi alamat email dan bidang password.
// Memeriksa alamat
email:
if (empty($_POST['email'])) {
$arrayError[] = 'Anda lupa memasukkan
alamat email.';
} else {
$e = mysqli_real_escape_string($dbc,
trim($_POST['email']));
}
// Check for the current password:
if (empty($_POST['pass'])) {
$arrayError[] = 'Anda lupa memasukkan
password.';
} else {
$p = mysqli_real_escape_string($dbc,
trim($_POST['pass']));
}
5. Validasi password baru.
// Memeriksa password
baru dan mencocokkan
// dengan password
konfirmasi:
if (!empty($_POST['pass1'])) {
if ($_POST['pass1'] != $_POST['pass2']) {
$arrayError[] = 'Password baru Anda
tidak cocok dengan password konfirmasi.';
} else {
$np = mysqli_real_escape_string($dbc,
trim($_POST['pass1']));
}
} else {
$arrayError[] = 'Anda lupa memasukkan
password baru.';
}
6. Jika semua pemeriksaan dilewati, baca ID user.
if (empty($arrayError)) {
// Jika semuanya OK.
// Memeriksa apakah user memasukkan
kombinasi
// pasangan
alamat email/password yang tepat:
$q = "SELECT id_user FROM pengguna
WHERE (email='$e' AND
pass=SHA1('$p') )";
$r = @mysqli_query($dbc, $q);
$jum = @mysqli_num_rows($r);
if ($jum == 1) { // Cocok.
// Membaca id_user:
$baris
= mysqli_fetch_array($r, MYSQLI_NUM);
7. Perbarui database.
// Melakukan query
UPDATE:
$q = "UPDATE
pengguna SET
pass=SHA1('$np')
WHERE id_user=$baris[0]";
$r = @mysqli_query($dbc,
$q);
8. Periksa hasil query.
if
(mysqli_affected_rows($dbc) ==1) { // Jika OK.
// Tampilkan pesan.
echo '<h1>Terimakasih!</h1>
<p>Password Anda telah
diperbarui.</p><p><br /></p>';
} else { // Jika ada
masalah.
// Pesan umum:
echo '<h1>Error Sistem</h1>
<p
class="error">Password Anda tidak dapat diperbarui.
Maaf.</p>';
// Pesan Debugging:
echo '<p>' . mysqli_error($dbc) .
'<br /><br />Query: ' . $q . '</p>';
}
9. Cantumkan file kaki dan hentikan skript.
// Mencantumkan file kaki
dan keluar dari skript.
include ('kaki.html');
exit();
10. Sempurnakan kondisional if ($jum == 1).
} else { // Kombinasi
email/password tak-valid
echo '<h1>Error!</h1>
<p
class="error">Alamat email dan password tidak cocok.</p>';
}
11. Tampilkan tiap pesan error validasi.
} else { // Melaporkan
arrayError.
echo '<h1>Error!</h1>
<p
class="error">Berikut adalah error yang terjadi:<br />';
foreach ($arrayError as $psn) { //
Menampilkan tiap error.
echo " - $psn<br />\n";
}
echo '</p><p>Silahkan coba
lagi.</p><p><br /></p>';
} // Akhir dari if
(empty($arrayError)) IF.
12. Tutup koneksi database dan kode PHP.
mysqli_close($dbc);
// Menutup koneksi database.
} // Akhir dari
kondisional utama.
?>
13. Tampilkan form.
<h1>Ubah Password Anda</h1>
<form
action="password.php" method="post">
<p>Alamat Email: <input type="text"
name="email" size="20" maxlength="80"
value="<?php if (isset($_POST['email'])) echo $_POST['email'];
?>" /> </p>
<p>Password Sekarang: <input type="password"
name="pass" size="10" maxlength="20"
/></p>
<p>Password Baru: <input type="password"
name="pass1" size="10"
maxlength="20"/></p>
<p>Konfirmasi Password Baru: <input
type="password" name="pass2" size="10" maxlength="20" /></p>
<p><input type="submit" name="submit"
value="Change Password" /></p>
<input
type="hidden" name="disubmit" value="TRUE" />
</form>
Gambar 7.10 User mengisi
form untuk mengubah password.
Gambar 7.11 Pesan
konfirmasi bahwa password telah diperbarui.
Gambar 7.12 Pesan yang
menyatakan ketidak-sesuaian pasangan email/password.
14. Cantumkan file kaki.
<?php
include ('kaki.html');
?>
15. Simpan file dengan nama password.php, tempatkan pada direktori Web Anda,
dan uji dengan browser Web Anda (Gambar 7.10, Gambar 7.11, dan Gambar 7.12).
No comments:
Post a Comment