Membuat Halaman Error 404/403 untuk Website dengan PHP Auto-Mailer
() translation by (you can also view the original English article)
Halaman error (error page) website mungkin salah satu bagian yang sering diabaikan dari kebanyakan situs web yang ada. Halaman error ini tidak hanya penting tetapi sebenarnya hal ini memberi Anda kesempatan untuk bersenang-senang sedikit. Meskipun banyak web developer mengandalkan log server untuk mengawasi mereka yang masuk ke error page, saya akan mengambil pendekatan yang berbeda dengan menggunakanPHP generated email. Selain itu, kami akan sedikit meningkatkan desain, menambahkan navigasi dasar dan link ke sitemap situs web tersebut.
Tentang Error Page



Error page yang paling umum - adalah di mana kemungkinan besar Anda terbiasa- dengan "404 Not Found page". Lebih banyak orang menemukan jenis halaman error seperti ini daripada yang lain. Pesan error umum lainnya yang mungkin Anda temui adalah 500 Internal Server Error, 400 Bad Request atau 403 Forbidden. Ingin tahu untuk apa nomor-nomor itu? Itu hanya merujuk pada kode HTTP.



Halaman error standar cukup membosankan (seperti yang Anda lihat di atas) dan tidak menawarkan tujuaan lain kepada pengunjung selain memberi tahu mereka bahwa ada kesalahan yang membosankan. Karena alasan ini, menjadi ide yang bagus untuk menyediakan halaman khusus untuk error paling umum yang ditemukan. Tutorial ini hanya akan mencakup dua: "404 Not Found" dan "403 Forbidden".
Periksa custom error page support
Pertama, periksa untuk memastikan penyedia hosting Anda memungkinkan Anda untuk menggunakan error page Anda sendiri. Hampir semuanya melakukannya, dan sebagian besar dari mereka bahkan menyediakan area konfigurasi dalam control panel Anda untuk membantu Anda membuat halaman tersebut dengan cepat. Dalam tutorial ini kita akan mengkonfigurasi server web Apache (yang paling umum). Ini lebih mudah dari yang Anda kira.
Konfigurasikan .htaccess
Selanjutnya, sambungkan ke server Anda melalui FTP atau control panel dan navigasikan ke directory root document (biasanya www atau public_html) yang berisi file situs web Anda. Kami akan mencari file .htaccess. Terkadang disembunyikan (hidden) jadi pastikan Anda melihat semua file termasuk yang tersembunyi. Jika server Anda tidak memilikinya, Anda dapat membuatnya menggunakan text editor apa pun. Pastikan Anda membuat cadangan file .htaccess jika server Anda sudah memilikinya.
Tambahkan baris berikut ke file .htaccess Anda:
1 |
ErrorDocument 404 /error/404.php |
2 |
ErrorDocument 403 /error/403.php |
Babak pertama (ErrorDocument 404) memberi tahu server bahwa kita akan menentukan lokasi document 404 error. Babak kedua menentukan lokasi sebenarnya dari document error tersebut. Dalam hal ini kita akan meletakkannya di direktori "error" dan memanggil mereka masing-masing 404.php dan 403.php.
Sekarang simpan file .htaccess dan unggah ke document root directory.
Mendesain Custom Error Pages
Yang terbaik adalah tetap dengan desain yang sama seperti yang sudah digunakan situs web Anda sehingga Anda tidak membingungkan pengunjung dan berisiko kehilangan mereka. Anda juga harus menyertakan elemen-elemen bermanfaat seperti pesan error yang sopan, suggested link, fitur pencarian, atau link ke sitemap Anda. Fitur-fitur ini akan tergantung pada tingkat konten yang disediakan situs web Anda dan apa yang Anda rasakan akan sangat membantu.



Seperti yang Anda lihat di bawah, halaman 404 Not Found untuk Nettuts+ telah menyatakan error tersebut dan menekankan fitur pencarian dengan memasukkannya ke dalam body di bawah pesan error. Anda dapat mengambil langkah ini lebih jauh dengan memasukkan daftar pendek link ke halaman-halaman yang mungkin mendorong pengunjung untuk terus menjelajahi lebih banyak situs Anda (tetap sederhana dan singkat) - atau bahkan gambar lucu (setiap orang suka tertawa kan? ). Untuk situs web kecil, mungkin merupakan ide bagus untuk menyertakan sitemap yang juga terlihat.



Berikut adalah sesuatu yang saya kumpulkan untuk tutorial ini yang dapat Anda gunakan untuk situs web Anda juga (termasuk dalam unduhan di atas). Ini sangat sederhana sehingga Anda dapat memasukkan konten-konten di atas langsung ke template situs web yang ada. Seperti yang Anda lihat, saya berusaha memasukkan sedikit unsur humor sambil juga menyatakan error dengan sopan dan memasukkan beberapa opsi untuk membantu pengunjung menemukan apa yang mereka cari atau melanjutkan menjelajahi situs web.



Anda akan melihat bahwa halaman tidak menentukan kode error HTTP di body halaman. Sebagai gantinya saya memilih untuk hanya menggunakan kode error pada title halaman. Alasan untuk ini adalah untuk menjaga segala halnya sesederhana dan semudah mungkin. Kebanyakan orang tidak peduli apa arti 404 atau 403, mereka ingin tahu apa yang terjadi dalam bahasa Inggris. Bagi orang yang menginginkan kode error, masih tersedia melalui title-nya.
Jika Anda ingin melihat beberapa benar-benar desain 404 besar kunjungi:
- http://www.smashingmagazine.com/2009/01/29/404-error-pages-reloaded-2/
- http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/
- http://www.smashingmagazine.com/2007/07/25/wanted-your-404-error-pages/
- http://blogof.francescomugnai.com/2008/08/the-100-most-funny-and-unusual-404-error-pages/
Auto-Mailer PHP dan mengapa kita akan menggunakan Email pemberitahuan
Ini adalah bagian dari tutorial di mana beberapa guru web mungkin berdebat. Anda dapat menggunakan log server web Anda untuk memeriksa halaman error dan banyak lagi. Mengapa saya memilih email notification?
- Saya tidak ingin untuk login ke server saya setiap hari dan menggali melalui semua yang ekstra informasi.
- Saya tersedia melalui email hampir sepanjang hari, cara tercepat untuk menghubungi saya adalah email (atau twitter). Dengan pemikiran ini, saya ingin tahu tentang error 404 dan 403 cukup cepat sehingga email adalah yang terbaik.
- Semakin banyak orang yang memulai memiliki situs web, sementara kebanyakan dari mereka hampir tidak tahu apa-apa tentang web hosting, apalagi log server. Orang-orang ini hanya akan menjalankan situs kecil; jadi email itu ideal.
- Diberitahu segera memungkinkan saya untuk mengambil tindakan dengan cepat jika situs web saya "harvested" (template ThemeForest), jika seseorang mencoba mengakses sesuatu yang dibatasi berulang kali atau jika saya memiliki link yang rusak di suatu tempat.
Jadi dengan semua yang dikatakan, mari kita lanjutkan dengan kode kita!
Kodenya
Pertama, kami akan membuat file bernama error-mailer.php yang akan digunakan untuk mengumpulkan informasi tentang pengunjung kami dan mengirimkan email. Setelah Anda membuat file tersebut, kami akan mulai dengan menentukan pengaturan email dan email kami.
1 |
<?php
|
2 |
|
3 |
# The email address to send to
|
4 |
$to_email = 'YOUR-EMAIL@DOMAIN.com'; |
5 |
|
6 |
# The subject of the email, currently set as 404 Not Found Error or 403 Forbidden Error
|
7 |
$email_subject = $error_code.' Error'; |
8 |
|
9 |
# The email address you want the error to appear from
|
10 |
$from_email = 'FROM-EMAIL@DOMAIN.COM'; |
11 |
|
12 |
# Who or where you want the error to appear from
|
13 |
$from_name = 'YourDomainName.com'; |
Kemudian kami akan mengumpulkan informasi tentang pengunjung kami seperti alamat IP, URI yang diminta, User Agent, dll. Kode berikut akan mengumpulkan informasi itu.
1 |
# Gather visitor information
|
2 |
$ip = getenv ("REMOTE_ADDR"); // IP Address |
3 |
$server_name = getenv ("SERVER_NAME"); // Server Name |
4 |
$request_uri = getenv ("REQUEST_URI"); // Requested URI |
5 |
$http_ref = getenv ("HTTP_REFERER"); // HTTP Referer |
6 |
$http_agent = getenv ("HTTP_USER_AGENT"); // User Agent |
7 |
$error_date = date("D M j Y g:i:s a T"); // Error Date |
Sekarang kita akan menulis script untuk mengirim informasi melalui email kepada kami dengan rincian yang ditentukan sebelumnya.
1 |
# Send the email notification
|
2 |
require_once('phpMailer/class.phpmailer.php'); |
3 |
$mail = new PHPMailer(); |
4 |
|
5 |
$mail->From = $from_email; |
6 |
$mail->FromName = $from_name; |
7 |
$mail->Subject = $email_subject; |
8 |
$mail->AddAddress($to_email); |
9 |
$mail->Body = |
10 |
"There was a ".$error_code." error on the ".$server_name." domain". |
11 |
"\n\nDetails\n----------------------------------------------------------------------". |
12 |
"\nWhen: ".$error_date. |
13 |
"\n(Who) IP Address: ".$ip. |
14 |
"\n(What) Tried to Access: http://".$server_name.$request_uri. |
15 |
"\n(From where) HTTP Referer: ".$http_ref. |
16 |
"\n\nUser Agent: ".$http_agent; |
17 |
|
18 |
$mail->Send(); |
19 |
|
20 |
?>
|
Kami menggunakan class phpMailer untuk melakukan ini seperti yang ditunjukkan oleh Jeffrey melalui blog ThemeForest untuk membuat contact form dari AJAX yang bagus. Versi class phpMailer ini untuk PHP 5/6 jadi jika server Anda menjalankan PHP 4 Anda harus menggunakan versi yang sesuai dengan mengunduhnya di sini.
Halaman Error 404.php dan 403.php
Hal terakhir yang perlu kita lakukan adalah menyesuaikan halaman kesalahan kami merancang sebelumnya dengan mengirimkan header yang tepat dan menetapkan variabel $error_code dengan memasukkan kode berikut pada permulaan setiap halaman masing-masing (dipisahkan oleh---).
1 |
<?php
|
2 |
|
3 |
header("HTTP/1.0 404 Not Found"); |
4 |
$error_code = '404 Not Found'; // Specify the error code |
5 |
require_once('error-mailer.php'); // Include the error mailer script |
6 |
|
7 |
?>
|
8 |
------- |
9 |
<?php
|
10 |
|
11 |
header("HTTP/1.0 403 Forbidden"); |
12 |
$error_code = '403 Forbidden'; // Specify the error code |
13 |
require_once('error-mailer.php'); // Include the error mailer script |
14 |
|
15 |
?>
|
Apa yang kami lakukan di sini adalah mengatur header HTTP yang benar untuk me-return 404 Not Found dan 403 Forbidden. Ketika mesin pencari secara tidak sengaja mendarat di halaman ini, kami ingin memastikan bahwa mereka tahu apa jenis halaman itu, ketimbang berpikir bahwa itu adalah halaman web normal bernama 404.php atau 403.php.
Kemudian kami menentukan kode error yang akan digunakan dalam script mailer dan memasukkan script mailer tersebut sehingga dapat melakukan tugasnya. Dengan cara ini jika kami membuat perubahan pada script mailer, kami hanya perlu mengedit satu file ketimbang dua atau lebih (jika Anda menyiapkan halaman error custom tambahan).
Kesimpulan
Itu dia! Halaman error custom Anda sendiri yang ramah mesin pencari, dan memberi tahu Anda melalui email ketika Anda memiliki pengunjung serta semua informasi yang Anda butuhkan untuk memperbaiki masalah. Beberapa hal terakhir yang perlu dipertimbangkan:
- Internet Explorer membutuhkan halaman error yang setidaknya berukuran 512 byes (jika Anda menggunakan file contoh ini Anda akan baik-baik saja)
- Situs web dengan lalu lintas tinggi berpotensi menghasilkan BANYAK email, jadi pastikan Anda menyiapkan semacam filter email untuk pemberitahuan error ini sehingga tidak membanjiri kotak masuk Anda. Saya menggunakan Gmail jadi saya cukup memiliki pengaturan label dan filter untuk email-email ini.