veritabanına kayıt ve listeleme işlemlerinde session kullanımı...?

Başlatan lsari86, 26 Haziran 2012 - 13:00:47

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

lsari86

herkese merhabalar,
arkadaslar kendi notlarımı tutabilmek için php ile basit bir kayıt ve listeleme dosyaları oluşturdum.(bknz:1 - 2)
Ancak burada soyle bir sorun var; oluşturduğum kayıt ve listele.php dosyalarını browserdan isimleri ile doğrudan çağırınca benden herhangi bir kullanıcı adı ve parola istemeden doğrudan geliyor.
Benim istedigim ise bu sayfalara yetkisiz erişimi kısıtlamak.
Bunu için internetten konuyu araştırınca login ve session işlemleri ile bu duruma çözüm bulunacağını gördüm.
Bende internette buldugum örneklere bakarak aşağıdaki login.php ve giris.php dosyalarını oluşturdum.
Sizinde gördüğünüz gibi login sayfası ile veri tabanınn bağlanıp kullanıcılar tablosunda gerekli kontrolleri tamamlayınca giriş php sayfasına dusuyorum.
Ve tek basına(login.php sayfasından login olmadan) browserdan giris.php dosyasını cagırsam bile beni login.php sayfasına geri gonderiyor.
İŞte benim amacım kayıt ve listele.php dosyalarını da bu sekilde kullanabilmek.
Bu konuda kodalrı nasıl duzenleme gerektigini bilmiyorum bana yardımcı olabilr misniz?
Kolaylıklar.

login.php

<!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>
<meta http-equiv="Content-Language" content="tr" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
</head>

<body>

<table bordercolor="orange" border="2" width="100px" height="100px" cellspacing="1" cellpadding="1" align="center" >
<form id="login.php" name="login.php" method="post" action="giris.php">

<tr>
<td>user_name</td>
<td><input type="text" name="user_name" id="user_name" /></td>
</tr>
<tr>
<td>password</td>
<td><input type="text" name="password" id="password" /></td>
</tr>
<tr>

<td colspan="2"><center><input type="submit" name="giris.php" value="GİRİŞ" /></center></td>

</tr>



</form>
</table>


</body>

</html>


---------------------------------------------------
giris.php

<?php ob_start (); 
session_start();
?>


<?php
include ("baglan.php");

$user_name=$_POST["user_name"];
$password=$_POST["password"];

if ((
$user_name=="") and ($password=="")){
header ("location:login.php");
}else{

$sorgu=mysql_query ("SELECT * FROM  kullanicilar WHERE kullanici_adi='$user_name' and parola='$password'");

if (
mysql_num_rows ($sorgu)>0) {
$oturum=$_SESSION["kullanici"]=$user_name;
echo 
"HOŞGELDİN $oturum";
}else{
echo 
"KULLANICI ADI VE PAROLA HATALI";
}
}
?>


------------------------------------------------------------------------------
kayit.php


<?php
include ("baglan.php");

$baslik=$_POST["baslik"];

$metin=$_POST["metin"];


$kayit="INSERT INTO yazilar (baslik,tarih,metin) VALUES ('$baslik', NOW(),'$metin') ";
mysql_query ($kayit) or die ("KAYIT HATASI ASLANIM....!");

echo 
"VERİLER EKLENDİ GİT DB DEN KONTROL ET";

mysql_close ();

?>


------------------------------------------------
listele.php

<?php

include ("baglan.php");

$sorgu=mysql_query ("SELECT * FROM yazilar ORDER BY id DESC");

while (
$verigetir=mysql_fetch_array ($sorgu)) {

$baslik=$verigetir['baslik'];
$tarih=$verigetir['tarih'];
$metin=$verigetir['metin'];

echo 
"<table align=\"center\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\"  heigth=\"600\" border=\"1\" bordercolor=\"red\">
<tr>
<td>BAŞLIK</td>
<td>
$baslik</td>
</tr>

<tr>
<td>TARİH</td>
<td>
$tarih</td>
</tr>
<tr>
<td>YAZI</td>
<td>
$metin</td>
</tr>
</table>

<table align=\"center\" width=\"800\" cellspacing=\"0\" cellpadding=\"0\"  heigth=\"10\" border=\"1\" bordercolor=\"teal\">
<tr><td></td></tr>
</table>"
;

}


?>


------------------------------------------------

yazi.php

<!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>
<meta http-equiv="Content-Language" content="tr" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>yazi.php</title>
</head>

<body>
<table bordercolor="blue" border="2" width="200px" height="200px" cellspacing="1" cellpadding="1" align="center" >

<form id="yazi.php" name="yazi.php" method="post" action="kayit.php">
<tr>
<td>BAŞLIK</td>
<td><input type="text" name="baslik" id="baslik" /></td>
</tr>

<tr>
<td>YAZI</td>
<td><textarea name="metin" style="width: 400px; height: 400px"></textarea></td>
   
</tr>
<tr>

<td colspan="2"><center><input type="submit" name="kaydet" value="KAYDET" /></center></td>

</tr>

</form>
</table>
</body>

</html>







alquirel

Basitçe, her PHP dosyanızın başında oturumu başlattıktan sonra, tanımladığınız bir oturum olup olmadığını kontrol eden bir kod parçası ile bu işi halledebilirsiniz. (tabii ki login.php dosyanızın başına eklemeyin bunu)

Örnek olarak :


<?php
session_start
();
if ( !isset( 
$_SESSION["kullanici"] ) ) {
   
header"location:login.php" );
}


Bir de veritabanına kayıt işleminde kullanıcıdan gelen bilgiyi doğrudan veritabanına kaydetmeyin.
Öncelikle tırnak işareti gibi, kayıt işleminde hataya yol açabilecek karışıklıkları addslashes veya mysql_escape_string gibi fonksiyonlarla giderin.
Muhtemel HTML etiketlerini de strip_tags fonksiyonuyla ortadan kaldırın.