session ile oturum açtırdım.. oturumu normalde açıyo.. ama başka sayfaya geçince login olmadınız diyor.. bidaha login oluyom.. başka sayfaya giirince yanı şey bidaha giriyo... bende
guvenlik.php dosyası yaptım.. onda hata veryo
-----------------------------------------------------------------------
<?
session_start();
mysql_connect("localhost","root") || die ("Hata 1");
mysql_select_db("ercan") || die ("Hata 2");
$tablo = "SELECT * FROM sifre WHERE sifre='$_session[$msql_sifre]'";
Notice: Undefined variable: msql_sifre in c:\easyphp\www\deneme\guvenlik.php on line 7
Notice: Undefined variable: _session in c:\easyphp\www\deneme\guvenlik.php on line 7
Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\deneme\guvenlik.php:7) in c:\easyphp\www\deneme\guvenlik.php on line 12
yanlız, bu kodda bir de mantık hatası var. $msql_sifre yazılan yerde, bir sabit olmalı ve,
$_SESSION['msql_sifre']
seklinde olmalıdır. SESSION, GET, PUT gibi global degiskenler büyük harftir.
Notice: Undefined variable: msql_sifre in c:\easyphp\www\deneme\guvenlik.php on line 7
Notice: Undefined variable: _session in c:\easyphp\www\deneme\guvenlik.php on line 7
Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp\www\deneme\guvenlik.php:7) in c:\easyphp\www\deneme\guvenlik.php on line 12
bu hatayı veriyooo
ama apachetriadı kurdum.. hata vermiyo çok güzel çalışıyo.....
önceleri.....
$tablo="INSERT INTO sahika VALUES ('$veriler[1]','$veriler[2]','$veriler[3]')"; bu eklemede aynı hata veriyodu (üstteki hata gibi) (easy php de veriyodu)(apachetirada bu hatayıda vermiyo )
programların başına
error_reporting (E_ALL ^ E_NOTICE);
ekleyerek notice uyarılarını kapatabilirsin.
notice, özellikle session kullanan yerlerde sıkıntı cıkarır.
ekrana bisiy cıktıktan sonra da sessionm baslatılmaz. bu yüzden, yukardaki satırla notice leri kapatmak gerekir.
apache triadda calısmasının nedeni, muhtemelen onda standart bu ayarın var olmasıdır.
oturum acmak icin ne yapacagını da aksam yazarım.slm.
Burda tamamen, nasıl login oldurulur, olunur ve sifreli sayfalar nasıl yapılır onu anlatacagım.
sayfanın iciriğinin ne olduğu önemli değil. ister listeleme yapsın ister başka şeyler.
bidefa, şifreli olacak her sayfanın başına şunları yazacaksınız:
bu yukardaki kod, eğer login olunmamissa, loginform dosyasına yönlendirir.
loginform ise, kullaniciadi ve sifre soran basit bir formdur. özel bir kodu yoktur (htmldir.) :
bir de login.php var. asıl login yapan, yani kullanıcıyı iceri alan kod burda:
<?
function checkpass($kullaniciadi, $sifre) {
// burda databaseden alacak ve karsılastıracak
// ........................$sql="select sifre from kullanicilar where kullaniciadi='$kullaniciadi'
// .......................burayı da istedigin gibi yazarsin..
// ......................
ha bir de şu var, post ile alınan tüm veri, güvenlik amacıyla, ayrıca bi işleme tabi tutlması lazım.
yukardaki kodlarda bu işlem yok. şuanda önemli olan olayı anlamak olduğu icin, ayrıntıya girmedim.
yukardaki kodlar da calısır, ancak site tam güvenli olmaz, sql injection a acık olur. ilerde onu da bahsederim.
senin gonderdigin kodlardan, giris.php ve guvenlik.php asagidaki gibi olacak
duzeltemelr sunlar,
giris.phpde, sadece session_register("msql_sifre"); demek yetmez,
session_register("msql_sifre");
$_SESSION['msql_sifre']=$msql_sifre;
hatta 2. satır olduktan sonra, ilk satır olmayabilir.
guvenlik.phpde de,
$tablo = "SELECT * FROM sifre WHERE sifre='".$_SESSION['msql_sifre']."'";
olacak. SESSION icine, tırnaklı yazmalısın. ona tırnak yazınca da, nokta ile birlestirmek gerekiyor.
ayrıca, guvenlikde her seferinde dbye baglanmana gerek yok.
sadece session ile control edebilirsin...