Login session pada PHP
/**
*diadopsi dari artikel Sony Arianto Kurniawan
*berjudul Membuat Sistem Login dengan Menggunakan Session pada PHP, MySQL dan Apache
*edited by samsonasik
**/
Sebenarnya, membuat sistem login dengan session di php tidaklah sesulit yang dibayangkan,pertama, kita buat dulu database, misal dengan nama tutorial, lalu, kita buat table login di dalamnya, yang field-field-nya adalah username dan password.
nah, ini script untuk pas waktu loginnya, simpan dengan nama index.php : <form name=”form1″ method=”post” action=”loginsinggah.php”>
<table width=”200″ border=”0″>
<tr>
<td colspan=”2″><div align=”center”>Halaman Login </div></td>
</tr>
<tr>
<td>Username</td>
<td><input type=”text” name=”username”></td>
</tr>
<tr>
<td>Password</td>
<td><input type=”password” name=”password”></td>
</tr>
<tr>
<td><input type=”submit” name=”Submit” value=”Login”></td>
<td> </td>
</tr>
</table>
</form>
berikut sintax loginsinggah.php (digunakan untuk cek apakah username dan password sudah dimasukkan dengan benar, jika benar, maka akan menuju halaman utama, jika tidak akan kembali ke halaman login) :
<?
session_start();$server = “localhost”; //ganti sesuai server Anda
$username = “root”; //ganti sesuai username Anda
$password = “”; //ganti sesuai password Anda
$db_name = “tutorial”; //ganti sesuatu nama database Anda
$db = mysql_connect($server,$username,$password) or DIE(“koneksi ke database gagal !!”);
mysql_select_db($db_name) or DIE(“nama database tersebut tidak ada !!”);
$login = mysql_query(“select * from login where (username = ‘” . $_POST['username'] . “‘) and (password = ‘” . md5($_POST['password']) . “‘)”,$db);
$rowcount = mysql_num_rows($login);
if ($rowcount == 1) {
$_SESSION['username'] = $_POST['username'];
header(“Location: halaman_utama.php”);
}
else
{
header(“Location:./index.php”);
}
?>
setelah itu, kita buat halaman utama(halaman_utama.php), jika user tidak login dulu,maka akan redirect ke halaman login, berikut syntax-nya :
<?
session_start();
if (!isset($_SESSION['username'])){
header(“Location:./index.php”);
}
echo”anda sukses login”;
?>
untuk keluar dari halaman utama, kita buat link untuk logout yang mengarah ke logout.php, berikut syntax logout.php :
<? session_start();
unset($_SESSION['username']);
session_destroy();
header(“Location: ./index.php”);
?>
****************************************************************
selamat mencoba
Bisa saja mas, read file pakai fopen , kemudian di split2 mana data yg sesuai
, misal username setelah #username, password setelah #password, tapi sebaiknya file txt nya disimpan di tempat yg aman.Gimana neh tidak dapat masuk dengan browser IE 6 Ke atas winXP Sp 2, Tapi di win2000 sp 4 atau mozila is ok…
kok aneh..? web servernya pakai apa? kalau pakai IIS, di WinXP ga bisa otomatis ada, harus di install manual…
trims bro kemarin aku ga dong sekarang mendingan
makasih ya atas pencerahannya
Ok makasih mas atas informasinya
Ada yang tau cara buat session id otomatis yang random selalu berubah setiap login session id nya berubah.
pakai fungsi session_regenerate_id() aja, contoh :
<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo “Old Session: $old_sessionid”;
echo “New Session: $new_sessionid”;
?>
Referensi : PHP Manual
FUNGSI SESSION_REGENERATE untuk apa??
baca php manual !
mas session di php saya itu selalu reset….jd gak bisa buat login administrator joomla / mambo, kira2 kenapa ya?
ada caranya deh, coba buka :
https://ebackgroundcheck.kpf.ca/IEHowToEnableSessionCookie.htm
klo mo encrypt pass gimana caranya?
ada banyak cara, bisa pakai function crypt, misalkan :
<?php $hash = crypt($password); ?>
atau cara lain, misalnya, md5 :
<?php $hash = md5($password); ?>
dan lain-lain
aku mo nanya
gimana cara membuat session yang benar? saya sudah coba menggunakan
kenapa pas saya ngambil pake
echo (“$nama”);
tidak mau muncul??
saya sudah banyak baca diinternet kayak gituan, tapi hasilnya nihil!!
mohon bimbingannya
kalo bisa cepat bales lewat email saya
kalo single sign on gimana pak ? untuk level yg berbeda / hak akses yg berbeda
ya, berarti tinggal tambahin aja satu sesi lain, misalkan sesilevel, if sesilevel tertentu, menampilkan menu tertentu.
semoga dpt dimengerti
Mau nanya y, klo cara menggunakan fungsi session bagaimana?
mohon djawab lewat email saya..
kok submitnya pake textfield sih…?? ngaco ah
kalau mau belajar jangan copy paste atuh, tapi diketik ulang lagi, kalau copy paste pasti banyak salahnya, soalnya konversi tanda kutip( ‘ ‘ ) di wordpress dialihkan menjadi ” , miring, jelas jadi semacam textfield, karena browser tidak mengenal type inputan, jadi dianggap textfield, coba deh ketik ulang !!!
Setuju sekali dengan diatas…
oh ya sya mo ikutan coba ach…. thx bro..
$db pada pengecekan username & password pada syntac ligonsinggah.php untuk apa ya…?
itu untuk pendeklarasian fungsi mysql_connect,sebenarnya bisa sih tidak dideklarasikan, hanya sebagai penanda aja kok
mas..klo databasenya pake odbc gimana ya script phpnya untuk loginsinggah.php???
Thanks
pakai odbc_connect , bisa baca manual php nya di http://id2.php.net/odbc_connect
mas saya udah bikin login pake session tapi tiap ganti halaman atau refresh sessionnya selalu reset atau destroy, browser saya udah accept cookie tapi lom bisa kenapa ya???
mungkin lupa kasih <? session_start(); ?>
metode belajar yang bagus, akan saya coba dirumah
bagaimana kalau pada bagian session_destroyer(); terdapat kesalahan yang berbunyi “call to undefined function” ? mohon pencerahannya !!
session_destroy() kale, bukan session_destroyer(), heu..heu..heu…
hehehehe… bener tuh kata mas samson… kalo niat belajar php jangan asal copas (copy paste) tp coba tulis ulang lagi… & kalo nulis ulang dibaca yg teliti, salah satu huruf aja udah beda artinya… hehehe cuma saran aja sih…
mau tanya.. saya sedang buat aplikasi..
bila kita mau comment namun tetapi harus login pd aplikasi..
dan saat masuk kita langsung berada di hlm forum untuk comment..
gmn yach caranya?? trus ada istilahnya ga??
ya tinggal dicocokin aja toh? punya sesi atau tidak, jika tidak punya sesi, misalnya, tidak ditampilkan halaman untuk commentnya.
senang berkunjung kemari!!
Tolon donk ku di ajarin buat Login pake database juga upload dan download gambar dengan php…
Makasih sebelumnya….
uwda download tutorial di internet, stlah dicoba kagak bisa e!!
yg mana ?
mas mau tanyak, kok saya udah ikutin cara pas di halaman utama ga keluar apa-apa ya?
terus kalo kita langsung ketik di browser ..?halaman_utama.php dia langsung masuk yah? gak kembali ke halama login..
mohon pencerahan..
coba debug dulu, misal dengan cara di print:
<php session_start(); echo"<pre>"; print_r($_SESSSION); ?>kalau terdapat isi session yg dimaksud, berarti sesi tersebut sebenarnya telah terdaftar, jika tidak, berarti coba cek lagi codingya, debug di beberapa tempat yg harusnya menampilkan sesuatu. Lihat juga code programnya, jika mas SangPerusak copy paste dari tutorial ini, mungkin ga akan jalan karena tanda kutip miring yg nampil harusnya diganti tanda kutip biasa, atau mungkin juga sebab lain.
Cobain donk script buatan saya, nih http://www.mediafire.com/download.php?lr2egmhwg1z
mas ini kok sudah saya coba tidak mau masuk….
dia ga bisa masuk ke halaman utama…
udah bener blm script utk engine nya…
udah dunks, coba debug dulu, baca deh : http://samsonasik.wordpress.com/2009/03/27/debugging-techniques/
Mau tanya, kalo script login php dengan oracle gimana, ya??
tinggal nge-rubah script koneksi nya aja
trimakasih mas abdul tentang sriptnya,,,
sangat bermanfaat,,,
mas,,misal klo kita ngambil isi dari file(jenis extention ny bebas) pake php, terus dijadikan sessionnya gimana y..??
Gan, session punya ane kok sering rubah tanpa sebab jadi nama database ya? itu kenapa?
mungkin sedang buka aplikasi lain yg nama sesi nya sama ? coba debug dulu ..
mas kalo misalkan tiap user dapat login dan masuk ke page yang berbeda… misal user admin masuk ke page admin… kalo selain itu masuk ke page user… itu sepeti apa mas? atau ada rekomendasi tutorialnya? hatur nuhun
ya di tablenya buat aja satu kolom lagi, misal kolom role, jadi jika role nya admin, dia masuk halaman admin, jika role user dia masuk halaman user, kita bisa tambahkan sesi lain misalnya $_SESSION['sesirole'] isi dengan value kolom role td, jadi bisa dijadikan patokan kalau nge-klik atau langsung nembak di URL, bisa dicocokin dengan sesirole tersebut, semoga berhasil
mas…saya mau tanya…gimana caranya nampilin data yang ada dalam database tapi mengambil dari session…jai saat kita login pada status member…maka pada saat setelah login,pada halaman yang di tuju,nama member tersebut muncul pada jtextfield..???mohon penxerahnnya ya mas…d email ajh..thnks…^_^
udah dibls ke email
mas gmana cara memperpendek session id, misalx yg tdx 26 karkter d cookie jd 5 tw 7 karakter. Udh coba2, jg pakai substr, tp gk bsa jg. Mohon Pencerahanx..
bisa diperpendek dengan mengisi session_id dengan setelah hasil substring
seperti berikut :
wahh.. Thx mas, sama mas saya jg bikinx egitu, tp tetep di cookiesx panjang..
wahh.. Thx mas, sama mas saya jg bikinx begitu, tp tetep di cookiesx panjang..
coba direset jg COOKIE-nya ? bisa ga ?
setcookie('PHPSESSID', session_id() , time() + 3600 * 24);ok reset cookies, tp itu seblm/sesudah mereset session_id() mas?
tak coba dulu..
tp klo gk salah nih mas, pengisian value session id (mereset session_id()), yg session_id($sessid) bukanx sebelum session_start() mas? bingung..
sesudah donk
, diletakkan dipaling atas 
session_start() itu untuk mengawali semuanya
coba aja habis itu buat script javascript :
alert(document.cookie);
nah, cek deh, cocokin isi cookie dengan session_id, salah satunya kudu ada yg bener :d
saya contohin yg di atas itu PHPSESSID itu sama dengan cookie di browser saya, kalau di mas whypotter mungkin beda, misal XAMPPSESSID , ya tinggal diganti aja
thx mas, udh bsa..
tp, pas dpasangin utk URL, “sid” masih pjg mas utk yg p’tamakali dbuka, tp pas reload yg ke-2 bru pendek mas, gmna tuh mas?
Sebenarx fungsi dr session id apa sih mas? Problemx, pas dpasangin utk Link, reload ke-2 gk muncul lg “sid” nya..?
Gimana juga bikin Form Login yg aman, kyk d fb tuh klo udh login, url na ada “fbb=blablabla&refid=blablaba” ?
yah, sebelum dipasang dipendekin dulu berarti
. session id hanya digunakan untuk mengindikasikan bahwa halaman itu pernah diakses oleh client dan belum hilang jejaknya ( selama belum dihapus atau habis jangka waktunya ).
.
Jadi gini : ketika suatu client ( dalam hal ini browser ) mengakses halaman web aplikasi ( dengan atau tanpa login ) , maka server akan menyimpan session id sebagai tanda bahwa client pernah mengakses halaman tersebut. Nah, client akan menyimpan si session id ini di dalam cookie
. Kalau mas whypotter ingin membuat autentikasi terhadap suatu halaman, maka perlu membuat identifikasi interaksi lagi dengan session yang lain, misal $_SESSION['user']. Untuk url, ya tinggal kita simpan aja di hidden variable atau url yang diescape, dan ketika login tinggal dibawa lagi tuh hidden variable
hahahaaa.., msh bingung mas
Hidden Variable contohx gmana yah mas? Trus klo login dbawa lagi, emang sblmx dsmpan dmana?
masih sedikit awam mas..
hehehe
secara fisik, session di php disimpan di file di sisi server secara otomatis. kita tinggal panggil aja session yg pernah kita simpan, tak perlu passing session di url
misal sesudah masuk halaman login.
ow.., gt mas.., hehehee…, sok ngerti..
jd setiap session yg kt buat, misal $_SESSION ['user'], $_SESSION['pass'],…, $_SESSION['n'], disimpan d server, jd tinggal panggil aj tiap2 variable yg akan dbutuhkan. bener gk mas?
Jd, bgusan & cepat mana m’gunakan Session or Cookie mas?
Saya jg ad dpt dr Web tetangga, cara bikin Visitor Counter Harian :
tp gk muncul mas, yg tampil “visitor hari ini : ” udah gitu doank.., salah dmana ya mas?
ow.., gt mas.., hehehee…, sok ngerti..
jd setiap session yg kt buat, misal $_SESSION ['user'], $_SESSION['pass'],…, $_SESSION['n'], disimpan d server, jd tinggal panggil aj tiap2 variable yg akan dbutuhkan. bener gk mas?
Jd, bgusan & cepat mana m’gunakan Session or Cookie mas?
Saya jg ad dpt dr Web tetangga, cara bikin Visitor Counter Harian :
$time = 60*60*24;
session_set_cookie_params($time);
session_save_path(“./tempo”);
start_session();
if ($_SESSION['saklar'] != “on”) {
$_SESSION['saklar'] = “on”;
//baca file data counter
$con = @fopen(“data-counter.txt”,”r”);
$counter = @fread($con, filesize(“data-counter.txt”));
@fclose($con);
$counter++;
//catat kembali ke file data
$con = fopen(“data-counter.txt”,”w”);
fwrite($con, $counter);
fclose($con);
}
echo “visitor hari ini : “.$counter;
tp gk muncul mas, yg tampil “visitor hari ini : ” udah gitu doank.., salah dmana ya mas?
kasih aja di paling atas :
Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\testing\checklogin.php:2) in C:\xampp\htdocs\testing\checklogin.php on line 32
Bro..kenapa kuar eror gi…ada header sy salah ka
itu menandakan tidak boleh ada tag html sebelum header, atau whitespace sebelum header. coba trim dulu deh tuh kode program
Kalau mau buat login dengan 3 session misal id, username dan password kira-kira gimana ya scriptnya??
tinggal di isi aja seperti $_SESSION['somethingname'] = ‘somevalue’, contoh :
mas saya punya 4 user
1. user biasa
2. admin
3. guru
4. siswa
aq bgg buat session loginnya..
mohon bantuan buat skripsi mas..
mas saya punya 4 user
1. user biasa
2. admin
3. guru
4. siswa
aq bgg buat session loginnya..
mohon bantuan buat skripsi mas..
yah, buat saja privilege masing2 user dengan role admin, guru, siswa, atau user biasa. Jika (misalnya) setelah dicocokkan dengan database, si user yg diinput mempunyai role admin, ya kita beri dia session admin, nah, ketika session admin, dia berhak atas modul apa saja, seperti itu
numpang tanya dong..
kl misalnya ada 4 halaman nih, halaman login, halaman1, halaman2 ma halaman3.
gmn buat sessionna agar di halaman1-3 tetep jadi session??
sebenerna masih agak ga ngerti tentang session ni, terutama implemen-na..
mohon bantuanna,, thx
kalau di php, asalkan session sudah terbentuk, kita bisa panggil sesi itu di halaman1, 2, maupun 3, dengan kasih di awal sourcecode :
mas minta bantuannya dong,,pleace,bantuin bikin codingan untuk rental mobil menggunakan session,,,ini saya lagi bnyak bnget tugas dikampus jadi kekurangan wktunya tuk ngerjain,,lagian agak kurang paham,menggenai session,,ini sangatlah penting bagi saya,mohon bantuannya,jika disuruh bayar saya sanggup bayarinnya,tapi jgn trlalu mahal,,,,,,terima kasih
mas minta bantuannya dong,,pleace,bantuin bikin codingan untuk rental mobil menggunakan session,,,ini saya lagi bnyak bnget tugas dikampus jadi kekurangan wktunya tuk ngerjain,,lagian agak kurang paham,menggenai session,,ini sangatlah penting bagi saya,mohon bantuannya,jika disuruh bayar saya sanggup bayarinnya,tapi jgn trlalu mahal .tolong jika sudah dibikin kirimin hasilnya via email :eenyurmaida@yahoo.com.jika berkesempatan mau mmbantu,,,,,,terima kasih
mas pleace ,,bantuin dung,,sbntar lagi UAS,trus skrg tgsnya numpuk,,,,,terima kasih
mas saya udah coba scriptnya di windows pake xampp bisa jalan, nah kalau saya coba di ubuntu pake lampp kok ga jalan ya, knapa ya mas? Kira 2x file php.ini nya harus di rubah ga
coba cek di php.ini, cari session.save_path , terus isi secara explisit tujuan file untuk menyimpan file2 session-nya, misalnya sebagai berikut :
Pastikan directory tujuan bersifat writable agar bisa ditulisi.
.
Selamat mencoba
mas..saya mau tanya..saya bikin web,menggunakan session untuk login..isi file session nya :
yg jadi masalah,waktu saya testing di PC saya,ga masalah…lancar jaya..tapi waktu saya masukkin di server internal kantor,muncul masalah..setelah login,paling lama 30 detik tiba2 logout otomatis..jadi ketika saya sedang aktif di dalam web nya,tiba2 di direct ke halaman index dan muncul keterangan “Anda Belum Login” seperti pada coding di atas..
di PC saya pakai xampp 1.7.3 dengan PHP 5.3.1 dan Apache 2.2.14..kalo server kantor saya pakai appserv 2.4.2 dengan versi PHP 4.3.9 dan Apache 1.3.3
untuk memulai session saya pakai session_start()..variabel session nya sendiri pakai $_SESSION['nama_variabel']..kira2 kenapa ya..apa karena perbedaan web server..??karena sebelumnya saya bikin web,dengan coding login-sesion yg serupa tapi tidak ada masalah…
Makasih mas atas bantuannya
silakan cek lifetime session-nya dan ganti dengan time yg diinginkan. Sebagai referensi biaa baca artikel berikut
http://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session/
Ternyata masalah di webserver nya mas…waktu saya coba di komputer lokal,pake XAMPP 1.7.3 itu lancar…tapi server kantor saya masih pake appserv yg lama,entah knapa bermasalah…bisa saya simpulkan,session nya itu jd ngaco ketika saya klik link yg menyertakan method GET (pengiriman variabel melalui link cth : ?id=$id)..sampai sekarang masih bermasalah,dan ga ngerti cara ngakalinnya..secara logic,coding nya gda masalah harusnya..
kok… logoutnya g bisa2.. ??? setelah nyampe hal index masih bisa di back
session destroy nya uda ada belum..??jgn lupa di tiap halaman yg membutuhkan login untuk mengakses nya,disertakan session cek seperti :
session_start();
if (empty($_SESSION[nama_user]) OR empty($_SESSION[pass]))
{
header(“location:index.php?ket=Anda Belum Login!!”);
}
semoga membantu
Ya silakan coba ganti web containernya
, saya menganjurkan pakai zend server
misalkan pas saya login, masuk ke halaman AAA. trus saya logout ke halaman login lagi. Berhasil.
terus saya langsung ketikkan di urlnya halaman AAA, teryata bisa masuk. saya kepinginnya, pas langsung ngakses halaman AAA, dilariinnya ke halaman login dulu.
hehehe, nah itu gimana???
kalo kaya gitu mas, di awal halaman AAA nya di ‘include’ file session, yg biasa nya isi nya untuk cek apakah variabel session login nya uda terisi atau belum..kalau udah, maka user punya hak akses untuk browsing di website itu, kalo belum diarahkan ke halaman login agar user login terlebih dahulu..biasanya mengarahkan nya pakai syntax header(location:”URL”).. semoga membantu
tau script akses ga seperti apa ?
mantap mas tutornya…
tanya pak, saya membuat sebuah form, bentuknya seperti ini :
Anda dapat Request kendaraan minimal 1 jam sebelum jam keberangkatan.
tanggal pemesanan
Lokasi berangkat
Lokasi akhir
Jam berangkat
Jam tiba
saya ingin membuat form tsb diberikan ketentuan user dapat request kendaraan minimal 1 jam sebelum jam keberangkatan (sesuai jam dikomputer user), jadi bila user mengisi form permintaan jam 09.00 pagi tetapi dikomputer user sudah jam 08.30 akan ada pemberitahuan “jam permintaan tidak sesuai”. Pertanyaannya: bagaimana cara menyesuaikan form tersebut dengan kondisi jam yg ada dikomputer user? terimakasih banyak:)
tinggal dicek aja :
date_default_timezone_set ('Asia/Jakarta'); $aturan = new DateTime(date('Y-m-d 09:00:00')); $input = new DateTime(date('Y-m-d H:i:s')); if ($aturan->diff($input)->h > 0 && (int) date('H') < 9 ) { echo 'OK'; } else { echo 'NOT OK'; }mas saya mau tanya masalah session, saya kan bkin form login user sama admin, nah waktu user login sessionnya berubah jadi nama user, tapi waktu admin login, sessionnya berubah jadi nama admin, jadi user musti login lagi untuk akses web, gimana caranya waktu user dan admin sama” login tapi salah satu dari mereka ga perlu login lagi untuk masuk ke web, mohon pencerahannya
kasih remember me :p
mas mau tanya, kenapa waktu masukkan username dan password selalu gagal, padahal pwd dan username sudah ada pada database dan semuanya sudah sesuai, juga sudah ada session_start(); kira-kira salahnya dimana y? terima kasih
coba di echo dulu hasil hash nya.
Assalamualaikum,,
mau tnya nh,,kalo sya mau logout dan ketika di back ga bsa balik ke halaman sebelumnya (sprti kita logout di facebook trus ketika di back ga bsa otomatis masuk ke facebook sya lagi)..
itu caranya gmna yaa??
tlong berbagi infonya yaa..
trima kasih
wa’alaikumsalam…, harusnya, kalau unset session nya berhasil, terus halaman yg harus login ada pengecekan session, harusnya bisa. praktekin deh tutorialnya
Mas saya mau tanya, katakanlah saya punya 3 web dimana yang mebuat 3 org yg berbeda pula, nah Session yang didaftarkan 3 web tsb mempunyai nama yg sama yaitu $_SESSION=”Admin”, yg jd persoalan ketika session di destroy dgn cara logout, semua halaman 3 web tersebut serentak ikut logout… bagaimana cara mengatasinya???
Terima kasih
Blasan bisa ke moehac.gaoel@gmail.com
Mas, saya coba coding sessionnya, tapi setiap kali memasukkan username dan password, baik salah ataupun benar, selalu dianggap salah…
Jadi selalu di bawa ke halaman awal lagi…
Itu errornya di mana ya mas???
coba dicek di echo dulu hasil passing $_POST username dan hash passwordnya sebelum dicocokin dgn db.
Mas mohon dibalas
Mas saya mau tanya, katakanlah saya punya 3 web dimana yang mebuat 3 org yg berbeda pula, nah Session yang didaftarkan 3 web tsb mempunyai nama yg sama yaitu $_SESSION=”Admin”, yg jd persoalan ketika session di destroy dgn cara logout, semua halaman 3 web tersebut serentak ikut logout… bagaimana cara mengatasinya???
Terima kasih
1. buat virtual host untuk tiap aplikasi.
2. buat ‘namespace’ per session aplikasi, misal $_SESSION['aplikasi1'], $_SESSION['aplikasi2'], dst.
mohon maaf sebelumnya
ini loginnya untuk all user apa untuk single user saja?
trima kasih
seleksi dr database, kalau isinya row banyak, ya bisa macem2 yg bisa masuk, gantian,coba aja.
hello, J’ai quarante-cinq ans .
Je me nomme Faye.
Je suis responsable d’atelier … Je suis plutôt d’un caractère réservé.