Professional Documents
Culture Documents
Variabel Siap Pakai Pada PHP
Variabel Siap Pakai Pada PHP
Selain variabel yang kita tentukan sendiri, PHP menyediakan variabel yang berisi data-data yang bisa kita pakai. Variabel tersebut berisi data-data terkait server dan data yang tersimpan di browser user yang dikirimkan saat request. Untuk mengakses data tersebut, caranya tinggal memanggilnya dengan perintah: $_SERVER['VARIABLE']; Dan inilah variabel-variabelnya beserta fungsinya masing-masing: PHP_SELF Nama file yang digunakan oleh script, relative kepada domain root. Contohnya, $_SERVER['PHP_SELF'] dalam script dengan alamat http://example.com/test.php/foo.bar akan menghasilkan /test.php/foo.bar. SERVER_ADDR IP Address server dimana script tersebut dijalankan. SERVER_NAME Nama server tempat dijalankan script PHP. SERVER_PROTOCOL Informasi Protokol yang dipergunakan untuk request, contoh: HTTP/1.0'; REQUEST_METHOD Metode rquest yang dipergunakan untuk mengakses; contoh: GET, HEAD, POST, PUT. REQUEST_TIME Waktu dimulainya request. Ada sejak PHP 5.1.0. It is float with microseconds since PHP 5.4.0. QUERY_STRING Query string, jika ada DOCUMENT_ROOT The document root directory under which the current script is executing, as defined in the servers configuration file. HTTP_ACCEPT Contents of the Accept: header from the current request, if there is one. HTTP_ACCEPT_CHARSET Contents of the Accept-Charset: header from the current request, if there is one. Example: iso-8859-1,*,utf8'. HTTP_ACCEPT_ENCODING Contents of the Accept-Encoding: header from the current request, if there is one. Example: gzip. HTTP_ACCEPT_LANGUAGE Contents of the Accept-Language: header from the current request, if there is one. Example: en. HTTP_CONNECTION Contents of the Connection: header from the current request, if there is one. Example: Keep-Alive. HTTP_HOST Contents of the Host: header from the current request, if there is one. HTTP_REFERER The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
HTTP_USER_AGENT Contents of the User-Agent: header from the current request, if there is one. This is a string denoting the user agent being which is accessing the page. A typical example is: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Among other things, you can use this value with get_browser() to tailor your pages output to the capabilities of the user agent. HTTPS Set to a non-empty value if the script was queried through the HTTPS protocol. Note: Note that when using ISAPI with IIS, the value will be off if the request was not made through the HTTPS protocol. REMOTE_ADDR The IP address from which the user is viewing the current page. REMOTE_HOST The Host name from which the user is viewing the current page. The reverse dns lookup is based off the REMOTE_ADDR of the user. Note: Your web server must be configured to create this variable. For example in Apache youll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr(). REMOTE_PORT The port being used on the users machine to communicate with the web server. SCRIPT_FILENAME The absolute pathname of the currently executing script. Note: If a script is executed with the CLI, as a relative path, such as file.php or ../file.php, $_SERVER['SCRIPT_FILENAME'] will contain the relative path specified by the user. SERVER_ADMIN The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file. If the script is running on a virtual host, this will be the value defined for that virtual host. SERVER_PORT The port on the server machine being used by the web server for communication. For default setups, this will be 80'; using SSL, for instance, will change this to whatever your defined secure HTTP port is. SERVER_SIGNATURE String containing the server version and virtual host name which are added to server-generated pages, if enabled. PATH_TRANSLATED Filesystem- (not document root-) based path to the current script, after the server has done any virtual-toreal mapping. Note: As of PHP 4.3.2, PATH_TRANSLATED is no longer set implicitly under the Apache 2 SAPI in contrast to the situation in Apache 1, where its set to the same value as the SCRIPT_FILENAME server variable when its not populated by Apache. This change was made to comply with the CGI specification that PATH_TRANSLATED should only exist if PATH_INFO is defined. Apache 2 users may use AcceptPathInfo = On inside httpd.conf to define PATH_INFO. SCRIPT_NAME Contains the current scripts path. This is useful for pages which need to point to themselves. The __FILE__ constant contains the full path and filename of the current (i.e. included) file. REQUEST_URI The URI which was given in order to access this page; for instance, /index.html. PHP_AUTH_DIGEST When doing Digest HTTP authentication this variable is set to the Authorization header sent by the client (which you should then use to make the appropriate validation). PHP_AUTH_USER
When doing HTTP authentication this variable is set to the username provided by the user. PHP_AUTH_PW When doing HTTP authentication this variable is set to the password provided by the user . AUTH_TYPE When doing HTTP authenticated this variable is set to the authentication type. PATH_INFO Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, then $_SERVER['PATH_INFO'] would contain /some/stuff. ORIG_PATH_INFO Original version of PATH_INFO before processed by PHP. Anda bisa mencobanya satu per satu untuk mengetahui seperti apa cara kerjanya. Maaf, belum sempat nerjemahin satu per satu.
Sumber : http://simasdap.blogspot.com/2012/06/variabel-siap-pakai-pada-php.html#ixzz2JGCqA6Zt
Nah, jika kita mengubah variabel $nama, misalnya seperti ini: <pre name="code" class="php"><!--?php<br /--> $nama = "Bejo Paijo";<br> if ($nama == "Lutvi Avandi") {<br> echo "Lutvi Keren";<br> } else {<br> echo "Kamu jelek";<br> }<br> ?><br> <!--?pre--><p></p> <p>Maka yang muncul adalah tulisan Kamu Jelek. Script akan melewatkan perintah echo Lutvi Keren karena saat dideteksi menggunakan if, isi variabelnya bukan Lutvi Avandi.</p> <p>Selain dua opsi IF, kita bisa memberikan lebih dari 2 opsi. Misalnya seperti ini:</p> <pre name="code" class="php"><!--?php<br /--> $nama = "Lutvi Avandi";<br> if ($nama == "Lutvi Avandi") {<br> echo "Lutvi Keren";<br> } elseif ($nama == "Bejo Paijo") {<br> echo "Bejo Macho";<br> } else {<br> echo "Kamu jelek";<br> }<br> ?><br> <!--?pre--> Dari kode diatas, kita bisa mengenali bahwa, pertama variable $nama diisi nilai. Lalu dengan IF kita cek nilainya. Kalau isinya "Lutvi Avandi", maka tampilkan tulisan Lutvi Keren. Kalau bukan, cek lagi apakah isinya "Bejo Paijo"? Kalau ya, tampilkan tulisan Bejo Macho. Kalau bukan juga, maka tampilkan tulisan "Kamu Jelek". Kode elseif bisa anda ulang-ulang sebanyak apapun. Seperti ini misalnya: <pre name="code" class="php"><!--?php<br /--> $nomor = 5;<br> if ($nomor == 1) {<br> echo 'Satu';<br> } elseif ($nomor == 2) {<br> echo 'Dua';<br> } elseif ($nomor == 3) {<br> echo 'Tiga';<br> } elseif ($nomor == 4) {<br> echo 'Empat';<br> } elseif ($nomor == 5) {<br> echo 'Lima';<br> } else {<br> echo 'Maaf, saya cuma bisa ngitung sampai lima doang';<br> }<br> ?><br> <!--?pre-->
Sumber : http://simasdap.blogspot.com/2012/06/manipulasi-alur-perintah-php.html#ixzz2JGDOp83N
fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam suatu fungsi rekursif terdapat pemanggilan terhadap dirinya sendiri. Penasaran? Dalam tutorial kali ini, saya akan menyajikan beberapa contoh sederhana penerapan fungsi rekursif di bahasa pemrograman PHP. Pada akhir tutorial, akan dicontohkan penggunaan fungsi rekursif dalam menampilkan menu bertingkat yang diambil dari database MySQL. Fungsi rekursif biasanya digunakan untuk menyelesaikan permasalahan yang memiliki keteraturan pola dalam prosesnya, contohnya dalam menyelesaikan soal menampilkan deret bilangan. Salah satu kelebihan penggunaan fungsi rekursif adalah secara penulisan code program akan lebih singkat dan efektif. Namun kekurangannya tidak terlalu efektif secara performa dan waktu eksekusi program karena fungsi rekursif membutuhkan resources memory yang lebih besar. Dan jika tidak hati-hati dalam mendefinisikan proses di dalam fungsi rekursif, seringkali menghasilkan proses yang tidak pernah berhenti (infinitive process).
Jika dilihat dari keteraturan pola dalam menghitung nilai faktorial suatu bilangan, maka dapat diselesaikan dengan menggunakan fungsi biasa maupun fungsi rekursif. Perhatikan dan bandingkan kedua program berikut ini dimana program pertama tanpa rekursif dan program kedua dengan rekursif.
faktorial-1.php
1. 2. 3. <?php
4. 5. 6.
7. 8. 9. function faktorial($n=1) {
33.
Pada program di atas, proses menghitung nilai faktorial dilakukan dengan menggunakan perulangan. Sedangkan pada program di bawah ini, proses perhitungan dengan menggunakan fungsi rekursif. Di dalam fungsi terdapat pemanggilan fungsi diri sendiri dengan parameter ($n-1) yang dikalikan dengan $n.
faktorial-2.php
1. 2. 3. <?php
4. 5. 6.
7. 8. 9. function faktorial($n=1) {
15.
Pada kedua contoh di atas mungkin tidak terlalu menonjol mengenai manfaat fungsi rekursif. Pada contoh yang lebih kompleks, misalnya melakukan penelusuran suatu graph atau tree, fungsi rekursif akan lebih tepat digunakan dibanding fungsi biasa.
Kolom
Tipe Data
Keterangan
kd_menu
int(5)
Kode Menu
nm_menu
varchar(50)
link
varchar(50)
kd_parent
int(5)
Kode menu yang menjadi induknya. Menu yang paling atas diatur induk-nya 0.
Jika tabel sudah dibuat, isikan dengan beberapa contoh data. Bagi yang ga mau repot, saya sudah menyediakan perintah SQL untuk membuat tabel dan mengisi contoh datanya. Tinggal dijalankan di mysql client Anda. Langkah #2. Buat fungsi rekursif dan jalankan.
Pada Program di bawah ini, akan dilakukan pengambilan data secara rekursif dari tabel menu yang sudah dibuat sebelumnya. Selanjutnya data akan ditampilkan dalam bentuk unordered-list (ul) di HTML.
Code block
1. 2. 3. <?php
4. 5. 6. #koneksi mysql
7. 8. 9. mysql_connect("localhost","root","");
54.
64. 65. $strmenu .= sprintf("<a href='%s' title='%s'>%s</a>", $row['link'], $row['nm_menu'], $row['nm_menu']); 66.
Berikut ini kurang lebih tampilan akhir jika program di atas dijalankan.
Referensi
http://id.wikipedia.org/wiki/Faktorial
http://id.wikipedia.org/wiki/Rekursi
Sumber : http://simasdap.blogspot.com/2012/06/fungsi-rekursif-dan-penerapannya-di-php.html#ixzz2JGDjH3FB
Membuat Auto Wrap Content pada Tabel dengan FPDF dan PHP
Semalem saya dapet pertanyaan dari salah satu pengunjung website ini terkait dengan tutorial membuat laporan PDF dengan FPDF yang pernah saya posting. Dia sudah mencobanya namun saat isi data pada suatu kolom melebihi lebar dari kolom tersebut, maka tulisannya akan kepotong alias ga keliatan. Saya juga sering mendapatkan pertanyaan serupa baik dari beberapa mahasiswa, pengunjung website achmatim.net, kawankawan di facebook maupun follower di twitter. Sehingga saya mencoba untuk membuat contoh program PHP sederhana mengenai membuat auto wrap content pada tabel ini. Bagi Anda yang belum pernah menggunakan library FPDF sebaiknya mencoba tutorial dasarnya terlebih dahulu sebelum mencoba tutorial ini. Dan untuk menyederhanakan tutorial, data yang ditampilkan diambil dari sebuah array. Anda dapat memodifikasinya dengan mudah jika ingin dikoneksikan dengan sebuah database.Contoh Program PHP pada tutorial ini menggunakan library FPDF versi 1.7 yang dapat Anda download di situs resminya.
fpdf-table-auto-wrapping.php
1. 2. 3. <?php
4. 5. 6.
7. 8. 9. /**
39.
67.
68. 69.
115. 116. $this->SetX($left); $this->Cell(0, 10, 'LAPORAN DATA KARYAWAN', 0, 1,'C'); 117.
126.
183.
211.
212. } 213.
298. 299. }
300.
328.
385.
412. 413. //If the height h would cause an overflow, add a new page immediately 414.
433. 434. //Computes the number of lines a MultiCell of width w will take 435.
444.
499.
556.
598. 599. 'alamat' Jakarta', 600. => 'Jalan Ciledug Raya No 99, Petukangan Utara, Jakarta Selatan 12260, DKI
619. 620. 'alamat' => 'Komplek Japos RT 002/015 Kelurahan Peninggilan, Kec. Ciledug,
Tangerang', 621.
640. 641. 'alamat' 642. => 'Jl. Raya Caplin, Kec. Ciledug, Tangerang, Banten',
664. 665. 'filename' => '', //nama file penyimpanan, kosongkan jika output ke browser 666.
667. 668. 'destinationfile' => '', //I=inline browser (default), F=local file, D=download
669.
670. 671. 'paper_size'=>'F4', //paper size: F4, A3, A4, A5, Letter, Legal 672.
Baris 8. Menyertakan library FPDF. Pada tutorial ini, menggunakan library FPDF versi 1.7 dan diletakkan di folder /fpdf17 Baris 10-197. Mendefinisikan class FPDF_AutoWrapTable yang merupakan turunan dari class FPDF. Baris 11-17. Mendeklarasikan variabel $data berisi data yang akan ditampilkan dan $options berisi beberapa opsi tampilan PDF seperti ukuran kertas dan orientasi kertas.
Baris 19-23. Konstruktor dari class yang menangkap 2 parameter yaitu $data dan $options Baris 34-40. Mengatur header / judul laporan, termasuk ukuran font (baris 35 dan 38) Baris 43-54. Mengatur judul tabel (kolom-kolom tabel) termasuk teks judul, lebar kolom dan perataan kolom. Baris 57-70. Menampilkan data tabel dengan memanggil fungsi Row(). Pada baris 58 diatur lebar untuk setiap kolom dan pada baris 59 diatur perataan untuk setiap kolom. Baris 75-93. Fungsi untuk menggenerate output PDF. Baris 200-222. Setting data yang akan ditampilkan. Jika ingin dikoneksikan dengan database, ganti baris ini dengan perintah untuk mengambil data. Baris 232-233. Pembentukan object class FPDF_AutoWrapTable dan pemanggilan fungsi untuk menggenerate file PDF. Hasil dari program tersebut kurang lebih sebagai berikut:
Klik disini untuk mendownload contoh program diatas beserta library FPDF versi 1.7
Code block
1. 2. 3. <?php
4. 5. 6.
7. 8. 9. /**
19. 20. */
21.
49.
50. 51.
);
108.
115. 116. $this->SetX($left); $this->Cell(0, 10, 'LAPORAN DATA KARYAWAN', 0, 1,'C'); 117.
136.
193.
252.
280.
339.
385. 386. //Put the position to the right of the cell 387.
394.
412. 413. //If the height h would cause an overflow, add a new page immediately 414.
433. 434. //Computes the number of lines a MultiCell of width w will take 435.
453.
508.
509. } 510.
565.
583. 584. /* contoh penggunaan dengan data diambil dari database mysql 585.
592. 593. 594. * 2. buatlah tabel 'pegawai' dengan field: nip, nama, alamat, email dan website
595. 596. 597. * 3. isikan beberapa contoh data ke tabel pegawai tersebut.
625. 626. $query = "SELECT nip, nama, alamat, email, website FROM pegawai ORDER BY nama"; 627.
649. 650. 'filename' => '', //nama file penyimpanan, kosongkan jika output ke browser 651.
652.
653. 'destinationfile' => '', //I=inline browser (default), F=local file, D=download 654.
655. 656. 'paper_size'=>'F4', //paper size: F4, A3, A4, A5, Letter, Legal 657.
Referensi Tutorial
Step by Step PHP Membuat Laporan PDF dengan FPDF Dokumentasi FPDF Table with Multicells
Sumber : http://simasdap.blogspot.com/2012/06/membuat-auto-wrap-content-pada-tabel.html#ixzz2JGE1Qqy0
Membuat Sistem Login Multi User Dengan Penggunaan Sessions Dalam PHP
Pada kesempatan kali ini saya akan mencoba kembali menulis tutorial mengenai PHP, dan kali ini yang akan kita bahas adalah bagaimana caranya membuat sistem login multi user dalam penggunaan SESSIONS yang tersimpan. Mungkin masih ada yang bertanya, Apa itu Sessions...?Pengertian menurut saya mengenai Sessions adalah informasi Website yang tersimpan di Server yang terkait dengan Browser yang kita gunakan, dan sessions ini banyak di gunakan dalam proses Login dan Logout pada Applikasi Website.
Lalu informasi seperti apakah yang tersimpan itu...? Tergantung dari si pembuat applikasi tersebut, informasi seperti apakah yang ingin di simpan nya, dan biasanya ini di gunakan untuk menyimpan informasi username, kata sandi dan informasi-informasi lain yang di perlukanya untuk mengakses website tersebut. Langsung menuju praktek nya...! Dalam contoh ini saya akan membuat sebuah applikasi website yang memiliki 3 golongan user dengan hak akses yang berbeda untuk login ke website tersebut, dan satu di antaranya memiliki akses sebagai Admin website. Mari kita buat sebuah database nya terlebih dahulu, misalkan bernama login_user
Setelah database baru bernama login_user di buat, kemudian buatlah sebuah table pada database tersebut, misalkan bernama tab_user dan nama-nama kolom nya adalah user_id, username, password,user_nama, dan user_akses. Silahkan gunakan phpMyAdmin untuk membuat nya, dan jangan lupa untuk kolom user_id gunakan sebagai INDEXS database dengan jenis PRIMARY, dan jenis kolom nya dibuat INT dengan penerapanAUTO_INCREMENT supaya nomor urut nya otomatis pada saat menambahkan user baru. Untuk membedakan hak akses user...! Pada kolom user_akses dibuat dengan type ENUM dengan isian nilainya misalkan"gratis","premium","admin" hal ini dimaksudkan untuk membedakan hak akses user tersebut saat login ke website, dan nantinya akan kita simpan pada sessions. Jika masih bingung dengan pembuatan table database di atas, silahkan copy kan struktur table database di bawah ini, kemudian paste pada database bernama login_user yang telah anda buat pada phpMyAdmin. Untuk phpMyAdmin dengan InnoDB:
CREATE TABLE IF NOT EXISTS `tab_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, `user_nama` varchar(50) NOT NULL, `user_akses` enum('gratis','premium','admin') NOT NULL DEFAULT 'gratis', UNIQUE KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--- Table structure for table `tab_user` -CREATE TABLE `tab_user` ( `user_id` int(11) NOT NULL auto_increment, `username` varchar(50) collate latin1_general_ci NOT NULL, `password` varchar(50) collate latin1_general_ci NOT NULL, `user_nama` varchar(50) collate latin1_general_ci NOT NULL, `user_akses` enum('gratis','premium','admin') collate latin1_general_ci NOT NULL default 'gratis', PRIMARY KEY (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;
Kemudian setelah selesai membuat struktur database dan kolom-kolom nya, insert kan beberapa contoh user pada database tersebut, misalkan seperti contoh di bawah ini:
user_id username password user_nama user_akses Andi 1 andi 1234 gratis Doang Toto 2 toto 1234 premium Kuncoro Calim 3 calim 1234 admin Weh 4 widia 1234 Widia gratis
Yatin
Jika masih bingung untuk membuat contoh user nya, silahkan masukan 4 data user di bawah ini kepada struktur tabel tab_user yang telah di buat:
--- Dumping data untuk tabel `tab_user` -INSERT INTO `tab_user` (`user_id`, `username`, `password`, `user_nama`, `user_akses`) VALUES (1, 'andi', '1234', 'Andi Doang', 'gratis'), (2, 'toto', '1234', 'Toto Kuncoro', 'premium'), (3, 'calim', '1234', 'Calim Weh', 'admin'), (4, 'widia', '1234', 'Widia Yatin', 'gratis');
Sekarang kita saat nya membuat script php untuk table 'tab_user' yang telah di buat pada database tersebut, dimulai dari pertama user login menggunakan form login, dan proses penyimpanan sessions apabila user tersebut memiliki akses dan sudah ada pada database tersebut. Untuk pembuatan applikasi nya, pertama-tama buatlah sebuah script PHP sebagai koneksi ke MYSQLterlebih dahulu, yang nantinya akan kita include kan ke script php untuk pemrosesan login user, kurang lebih seperti ini : koneksi.php
<?php $server = "localhost"; $username = "root"; $password = "passwordya"; $database = "login_user"; // Koneksi dan memilih database di server mysql_connect($server,$username,$password) or die("Koneksi gagal"); mysql_select_db($database) or die("Database tidak bisa dibuka"); ?>
Kemudian buat lah sebuah formulir untuk login user nya, misalkan pada form.php
<form name='login' action='proses.php' method='post'> <table> <tr> <td>Username</td> <td>:</td> <td><input type='text' name='username' value='username' /></td> </tr> <tr> <td>Password</td> <td>:</td> <td><input type='password' name='password' value='password' /></td> </tr> </table>
<?php include "koneksi.php"; $username = $_POST['username']; $password = $_POST['password']; $login = mysql_query("SELECT * FROM tab_user WHERE username='$username' AND password='$password'"); $hasil = mysql_num_rows($login); $r = mysql_fetch_array($login); if ($hasil > 0) { session_start(); session_register("user_id"); session_register("username"); session_register("password"); session_register("user_akses"); $_SESSION[user_id] = $r[user_id]; $_SESSION[username] = $r[username]; $_SESSION[password] = $r[password]; $_SESSION[user_akses] = $r[user_akses]; header('location:index.php'); } else{ echo "LOGIN GAGAL! <br> <a href='index.php'><< Kembali</a>"; } ?>
Proses di atas, jika user terdapat pada database, maka akan menyimpan 4 sessions yaitu user_id,username, password, dan user_akses. kemudian mengarah kanya kepada script index.php dan jika user tidak ada pada database, maka akan menghasil kan string LOGIN GAGAL! Coba anda perhatikan SESSIONS yang di register pada script di atas, bahwa kolom user_nama tidak di register kan pada sessions, padahal kolom user_nama di buat pada database di atas...! Sengaja saya buat demikian, karena untuk pembuatan applikasi website tentunya memerlukan detail user yang lebih lengkap, seperti alamat user, email user, nomor hp dan sebagai nya, dan jika kita register kan semua pada sessions, maka proses exsekusi script akan menjadi tambah berat untuk loading data nya. Untuk menghindari kekurangan di atas, maka di gunakan query_mysql untuk memproses pengambilan data-data yang lain pada database, seperti user_nama, dan data-data user lainya apabila ada dan di perlukan untuk applikasi tersebut, lihat pada script index.php. index.php
if (empty($_SESSION['username']) AND empty($_SESSION['password'])){include"form.php";} else{ ?> <!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"> <head> <title>Login Multi User!</title> </head> <body> <?php $sql = mysql_query("SELECT * FROM tab_user WHERE user_id = '$_SESSION[user_id]'"); while ($data = mysql_fetch_array($sql)) { $user_nama = $data['user_nama']; } ?> <h2>Selamat Datang <?php echo "$user_nama"; ?>!</h2> <?php if ($_SESSION[user_akses] == "gratis") { echo "Kamu login sebagai user Gratis! <a href='logout.php' title='Keluar!'>Keluar</a>"; } if ($_SESSION[user_akses] == "premium"){echo "Kamu login sebagai user Premium! <a href='logout.php' title='Keluar!'>Keluar</a>";} if ($_SESSION[user_akses] == "admin"){echo "Kamu login sebagai user Admin! <a href='logout.php' title='Keluar!'>Keluar</a>";} if ($_SESSION[user_akses] == ""){echo "Kamu tidak memiliki akses kesini!";} ?> </body> </html> <?php } ?>
Untuk menghapus SESSIONS yang tersimpan gunakan fungsi perintah session_destroy() Lihat pada script logout.php di bawah ini: logout.php
<?php session_start(); session_destroy(); echo "<script>document.write('Kamu sudah keluar dari halaman member!'); window.location = 'index.php'</script>"; ?>
Sumber : http://simasdap.blogspot.com/2012/09/membuat-sistem-login-multi-user-dengan.html#ixzz2JGE945PK
1.Warning: mysql_fetch_array(): supplied argument is not 2.a valid MySQL result resource in ....
atau
1.Warning: mysql_num_rows(): supplied argument is not 2.a valid MySQL result resource in ...
Penyebab: Error di atas disebabkan ada query SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya kurang tanda petik untuk menyatakan string dll. Selain itu bisa juga terjadi karena nama field dan tabel yang salah penulisannya. Solusi: Coba cek kembali statement query SQL Anda. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses debugging query SQL (mengetahui letak kesalahannya), Anda bisa menambahkan
die(mysql_error()) pada perintah mysql_query() nya. Contoh: 1.$query = "....."; 2.mysql_query($query) or die(mysql_error()); 3.. 4..
statement atau silakan baca kembali teknik debugging script php mysql. Bunyi Error:
1.Warning: session_start() [function.session-start]: 2.Cannot send session cookie - headers already sent by 3.(output started at ... ) in ... on line ...
atau
1.Warning: session_start() [function.session-start]: 2.Cannot send session cache limiter - headers already sent 3.(output started at ...) in ... on line ...
Penyebab: Error di atas biasanya terjadi pada penggunaan session. Sewaktu memberikan perintah session_start(), terdapat baris perintah di atasnya yang menampilkan string atau kode html ke browser. Sebagai contoh, perhatikan script berikut ini:
1.<?php 2.include "header.php"; 3.session_start(); 4.?> Meskipun sebelum session_start() tidak ada echo atau kode html, namun error akan tetap
muncul apabila isi dari script header.php terdapat echo atau kode html juga, misalnya header.php
1.Warning: Cannot modify header information headers already sent by 2.(output started at ...) in ...
Penyebab: Peringatan di atas biasanya muncul ketika Anda melakukan redirecting menggunakan perintah
1.header("Location: ..."); Seharusnya, sebelum perintah header("Location: ...") tidak boleh ada string apapun
yang ditampilkan di browser, meskipun itu kode HTML (sama seperti penyebab error
session_start() sebelumnya). Sebagai contoh perhatikan script berikut ini: 1.<?php 2.echo "<p>Hallo Apa kabar?</p>"; 3.header("Location: test.php"); 4.?> Pada script di atas, sebelum perintah header() terdapat string yang ditampilkan ke browser. Inilah
di yang mengakibatkan muncul peringatan tsb. Lantas bagaimana dengan script berikut ini?
1.<?php 2.$a = 10; 3.if ($a < 0) echo "Nilai A negatif"; 4.else header("Location: test.php"); 5.?>
Kira-kira muncul Warning nya gak ya? Jika Anda coba, maka tidak muncul Warning nya meskipun sebelum header() terdapat string yang ditampilkan ke browser. Mengapa demikian? ya.. meskipun di situ terdapat perintah untuk menampilkan string ke browser, namun perintah tersebut tidak pernah
$a nya positif.
header("Location: ...") tidak ada kode HTML atau echo apapun. Jika Anda mengincludekan suatu script di atas header("Location: ...") pastikan dalam script yang diincludekan tersebut tidak ada kode HTML atau echo.
Pastikan sebelum perintah Bunyi Error:
1.Warning: mysql_connect() [function.mysql-connect]: 2.Access denied for user root@'localhost (using password: YES) in ...
Penyebab: Error di atas disebabkan karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama user atau password yang salah. Solusi: Pastikan username dan password koneksi ke MySQL Anda sudah benar ketika menggunakan perintah
1.Parse error: syntax error, unexpected T_STRING, 2.expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or } in ...
Penyebab: Penyebab pastinya, saya kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang menggunakan OOP. Solusi: Coba upgrade versi PHP Anda, atau gunakan PHP dengan versi yang lebih tinggi. Bunyi Error:
1.<?php 2.$a = 5; 3.if ($a > 0) $status = "A lebih besar dari 0" 4.else ($a < 0) $status = "A lebih kecil dari 0" 5.else $status = "A sama dengan 0" 6.?>
Contoh di atas terdapat kesalahan yaitu setiap akhir statement tidak diberikan tanda titik koma (;), dan pada
else ($a < 0) kurang IF, seharusnya 1.<?php 2.$a = 5; 3.if ($a > 0) $status = "A lebih besar dari 0";
bagian
4.else if ($a < 0) $status = "A lebih kecil dari 0"; 5.else $status = "A sama dengan 0"; 6.?>
Solusi: Pastikan struktur statement yang Anda gunakan berbentuk seperti ini
1.<?php 2.if (syarat1) statement1; 3.else if (syarat2) statement2; 4.else if (syarat3) statement3; 5.. 6.. 7.else statementX; 8.?>
atau
01.<?php 02.if (syarat1) 03.{ 04.statement; 05.statement; 06.. 07.. 08.} 09.else if (syarat2) 10.{ 11.statement; 12.statement; 13.. 14.. 15.} 16.. 17.. 18.else 19.{ 20.statement; 21.statement; 22.. 23.. 24.} 25.?>
Bunyi Error:
1.<?php 2.function jumlah($a, $b) 3.{ 4.return $a + $b; 5.} 6. 7.echo jumlah(9, 10); // akan menghasilkan 19 8.?>
Bunyi Error:
1.<?php 2.if ($a > 1) 3.{ 4.echo "Nilai A lebih dari 1"; 5.?>
atau
<?php dan <?. Contohnya 01.<?php 02.if (syarat) 03.{ 04.statement1; 05.statement2; 06.?> 07. 08.<? 09.statement3; 10.statement4; 11.} 12.?>
PHP Perhatikan contoh script di atas, bahwa pada blok statement IF oleh si programmer dipecah menjadi 2 blok,
<? saja. Nah... terkadang <?php, sehingga untuk blok kedua tidak dianggap sebagai script, dan.. akibatnya statement IF nya dianggap tidak ada tanda } penutup.
namun perhatikan bahwa untuk blok kedua, tanda pembukanya menggunakan suatu server hanya membolehkan tanda pembuka script PHP menggunakan Solusi: Pastikan tanda kurung kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang Anda hadapi sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP), konsistenkan penulisan tanda pembukanya menggunakan Bunyi Error:
3.?>
atau
1.<?php 2.if ($a > 0) 3.{ 4..... 5.} 6.?> $a langsung diberikan statement pengecekan IF, padahal $a ini tidak ada sebelumnya. Nah... di beberapa versi PHP, akan muncul peringatan 1.Notice: Undefined variable: a Namun, bila nilai $a ini sudah didefinisikan sebelumnya misalnya 1.<?php 2.$a = 10; 3.if ($a > 0) 4.{ 5..... 6.} 7.?>
Jika kita perhatikan script di atas, variabel nilai maka peringatan di atas tidak akan muncul lagi. Peringatan yang hampir sama juga bisa muncul untuk contoh berikut ini
1.<?php 2.if ($_GET['test'] == 0) 3.{ 4..... 5.} 6.?> yang dikarenakan nilai $_GET['test'] belum terdefinisi sebelumnya atau belum ada nilainya
(belum ada request GET untuk parameter 'test'). Solusi: Sebenarnya peringatan di atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau proses yang terjadi di dalamnya. Namun, jika Anda ingin menghilangkan peringatan tersebut caranya adalah dengan memodifikasi parameter
1.error_reporting = ...
pada file konfigurasi php.ini Tambahkanlah nilai "&
1.max_execution_time = ...
Tambahlah nilainya, misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi
1.max_execution_time = 9999
Selanjutnya, simpan kembali php.ini nya, lalu restart Apachenya. Kalau perlu, lakukan analisis algoritma pada script Anda apabila dirasa tidak efisien sehingga mengakibatkan running time yang lama. Bunyi Error: Bukan Error sih, tapi kegagalan dalam proses upload file ketika Anda membuat script upload file. Penyebab: Kegagalan dalam proses upload file itu disebabkan oleh ukuran file yang terlalu besar melebihi batas maksimum yang diperbolehkan oleh PHP sesuai di file php.ini. Solusi: Anda dapat mengubah batas maksimum file size untuk upload ini dengan mengubah parameter
1.upload_max_filesize = ...
dan
1.post_max_size = ...
pada file php.ini Berikut ini contoh pengubahan batas maksimum upload file hingga 80 Mb.
1.upload_max_filesize = 80M
dan
1.post_max_size = 80M
Jika sudah melakukan pengubahan, lakukan restart Apache nya. Oya, jangan lupa pula untuk menambah komponen input
Sumber : http://simasdap.blogspot.com/2012/09/beberapa-error-di-php-penyebabnya-dan.html#ixzz2JGEHxrRp
Perintah include kita pakai untuk memanggil file lain untuk dieksekusi di file pemanggilnya. Seperti biasa, kita buat contoh aja yuk. Pertama kita buat file yang akan dipanggil, sebut saja namanya data.php. Isinya seperti ini: <!--?php $anak = array( array(nama =-->'Bejo', alamat => 'Surabaya', hp => '7837487397493'), array(nama =>'Paijo', alamat => 'Malang', hp => '0897483743434'), array(nama =>'Panjul', alamat => 'Jakarta', hp => '3435364364645'), array(nama =>'Pinah', alamat => 'Medan', hp => '65464565646'), array(nama =>'Mintul', alamat => 'Samarinda', hp => '045264743775') ); ?> Yup, itu adalah array dari pelajaran kita sebelumnya.. hehehe.. Oke, kemudian di file kedua, kita sebut saja namanya list.php kita buat seperti ini: <!--?php include('data.php'); foreach ($anak as $item) { echo 'Nama: '.$item[nama]. 'Alamat: '.$item[alamat].' HP: '.$item[hp].'<br/-->'; } ?> Jika kita menjalankan list.php maka kita akan mendapatkan hasil yang persis seperti artikel sebelumnya. Bedanya dengan cara ini, kita bisa memanfaatkan data.php untuk file-file lain. Sehingga jika suatu saat data-
nya perlu dirubah, kita hanya perlu mengubah file data.php saja dan efeknya akan dipakai di semua file yang mengandung include data.php Saya sendiri lebih sering memakai ini untuk memasukkan header dan footer suatu web sehingga saya cuma perlu memanggilnya saja untuk page-page baru yang lain. INCLUDE_ONCE Seperti namanya, ini persis sebagaimana fungsi include. Tapi include_once kita pakai untuk memanggil file hanya sekali saja. Dengan cara ini, kita bisa mencegah file terpanggil lebih dari sekali. Biasanya kita pakai include_once untuk memanggil file yang mengandung fungsi-fungsi yang kita bangun sendiri atau memanggil file yang berisi koneksi ke database. Sudah cukup mudah dipahami kan? Selamat mencoba sendiri.
Sumber : http://simasdap.blogspot.com/2012/06/menggabungkan-beberapa-file-dalam-php.html#ixzz2JGENWBnf