[]

php uzmanı bill gates'ler...

şimdi,

bir login.php sayfamız var. 25 kadar sayfayı da görüntüleyebilmek için kullanıcının sisteme giriş yapmış olması gerekiyor. buraya kadar güzel...

birinci sayfa: giris.php
ikinci sayfa: index.php
üçüncü sayfa: index2.php
.
.
.

(bu sayfaların her birinin içinde metinler, resimler, sunumlar, formmail'ler vs. var ve giris.php'den başlayanın index25.php'ye kadar yolu var...)

şimdi kullanıcı giriş yapmamış olsun ve giris.php'ye erişsin. sistem diyecek ki "oops, dur bakalım hemen login.php'ye git; giriş yap bebeğim" o da tamam... yaptı ve login.php kodlarında yer alan header ("Location: giris.php "); ile giris.php'ye yönlendirildi başarılı giriş yaptığı taktirde...

Lakin; bir kimse direkt index25.php'ye girmek istedi. Ama o da ne? Giriş yapmamış... Sistem direkt olarak login.php'ye yönlendirdi. Süper... Kullanıcı giriş yaptı ama o da ne?!!? 25 sayfa öncesine yani giris.php'ye yönlendirildi...

Not: Acemiyim. Hatta php bilmiyorum. Bir kaç gün önce siz değerli bilgi abidesi ekşi duyuru arkadaşlarıma php programlamayı öğrenmek konusunda bana yardımcı bir kitap önermenizi istemiştim. (git: 265120)

Not: İnternette yaptığım acemi çaplı araştırmada, user-session; referer vs. gibi anahtar bilgilere ulaştım. Henüz ne olduklarını ve nasıl kullanacağımı öğrenemediğimden; bu işi başaramadım...

Not: İsteyen arkadaşlarla derme çatma kodlarımı paylaşabilirim.

Soru: login.php'yi öyle bir düzenleme yapmalıyım ki (artık user-session mudur referer midir nedir onlarla...); kullanıcı en baştaki sayfaya değil de direkt erişmek istediği sayfayı açsın...

teşekkür ettim şimdiden. güzel haftalar bu güzide hafta başında...

 
en basit şekilde yönlendirme kodunu şöyle yapabilirsin.
misalen

index25.php'de şöyle bir şey olur
***
if($girisyapmamis)
header("Location: login.php?ref=index25.php");
****



login.php'de de şöyle bi şey olur
***
if($ref)
header("Location: " . $ref);
else
header("Location: giris.php");
  • lord esseginziki  (20.06.11 12:24:05) 
if($girisyapmamis) olayını açalım.

Her sayfada session ve cookie kontrolü yapiyorez.

Kullanıcı girdikten sonra da session ve cookie atiyorez.

if(session ve cookie yoksa) header ("Location:loginol.php");

örn session atama (login.php):

session_start();
if (!isset($_SESSION['test'])) {header("Location:index1...25.php")}

//sonra mysql'den kontrol..
if($_POST["username"] === $username) {
$_SESSION['test'] = 31;
} else {
header("Location:login.php?sifre=yanlis");
}
örn session kontrolü (index1....25.php):

session_start();
if (!isset($_SESSION['test'])) {
header('Location: login.php');
}


incele:frozenade.wordpress.com
  • Sir.Fitih  (20.06.11 12:52:12 ~ 12:52:42) 
@Sir.Fitih
sayfa için teşekkür okudum.

@lord esseginziki ve @Sir.Fitih

Lakin; olmadı, olamadı yapamadım. Şimdi login.php bizim insanların kullanıcı adları ve şifreleri vs.'yi kabul edip etmediğimiz yer.

kişi form.php'yi açmak istedi. (sozlesme.php'yi de açmak isteyebilirdi sonuçta; bununla ilgili ne sormak istediğimi az sonra anlayacaksınız :)

eğer cookie varsa, session başlamışsa hali hazırda; (bunu şöyle soruyoruz);

session_start();
if (isset($_SESSION['user'])) {

header ("Location:" form.php);
}

login.php; database'ye göre sordu. soru I: yukarıdaki kod şu anlama gelmiyor mu? -kullanıcının oturumu varsa; başlamışsa vs. sen bu adamı form.php lokasyonuna gönder...

peki; adam direkt sozlesme.php'yi açmak istedi. login.php yukarıdaki şekilde kontrol ediyor adamın oturumunun başlayıp başlamadığını. yani adamın oturumu başladıysa yine mi form.php ye göndermiş olacak? konu hakkında özürlülüğümü bağışlayın ama bu kısmı anlamadım.

gelelim diğerlerine;

benim login.php'im şöyle; (// leri kendi yorumlarımı katmak için kullandım, normalde öyle yazılmıyor olabilir. :))


<?php
//php koduna başladık//
//önce includes/config.php gerekli. gelsin o bir bakalım//
require_once('includes/config.php');
//includes/functions.php'de sayfa boyunca varlığını göstersin//
include('includes/functions.php');
//oturum inceleme başlasın/
session_start();
//adam oturum açtıysa//
if (isset($_SESSION['user'])) {
//adam bizim şifreli sayfamız (aslında sayfalarımız)dan biri olan form.php'ye gitsin//
header ("Location:" form.php);
}

//mysql veritabanından veritabanı kontakları ve kontaklar table'larını alalım//
mysql_select_db($database_contacts, $contacts);
//sayfanın başlığı da login//
$pagetitle = Login;

//mysql'a sorduruyoruz - adamın e-postası ve şifresi post metodu ile gelirse logincheck yapalım kullanıcı mail ve kullanıcı şifre kısımlarından//
if ($_POST['email'] && $_POST['password']) {
record_set('logincheck',"SELECT * FROM users WHERE user_email = '".addslashes($_POST['email'])."' AND user_password = '".addslashes($_POST['password'])."'");

//eğer vatandaş bilgileri doğru girerse yani 1 olursa//
if ($totalRows_logincheck==1) {
$_SESSION['user'] = addslashes($_POST['email']);
//burayı salladım! girmek istediği sayfaya girsin diye...//
header ("Location:" .$ref);

//eğer bilgilerden biri tutmazsa yani yanlışsa - katakulli ile giriş yapılamadı tekrar deneyin isterseniz :P mesajı gelsin. ve bu arada bu adam login.php'de şansını bir daha denesin...//
if ($totalRows_logincheck < 1) {
redirect('Katakulli ile giriş yapılamadı. Tekrar deneyin isterseniz...:P',"login.php");
}

}

//kodun sonu//
?>

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

benim sayfalarımdan rastgele seçtiğim sozlesme.php kodu da şu şekilde;

<?php
//işte config,php'siz olmaz; sc-includes.php'siz olmaz...) o dosyaları da paylaşırım isterseniz....//
require_once('includes/config.php'); ?><?php require_once('includes/config.php');
include('includes/sc-includes.php');
//oturum başlat//
session_start();
//eğer yanlışsa bilgileri veya giriş yapmamışsa aşağıdaki mesajı ver ve ref.li yönlendirme yap//
if ($totalRows_logincheck < 1) {
redirect('Katakulli ile Giriş yapılmamış',"login.php?ref=sozlesme.php");
}




?>


-----

login.php'nin php kodlarında sallamamdan ötürü yanlışım olacak ki şu hatayı alıyorum:


Parse error: syntax error, unexpected $end in /home/content/y/a/b/yabostanci/html/frenchkiss/101/u1d1/login.php on line 67


yani referanslı yönlendirmeyi yapamadım. :S
  • reducto  (20.06.11 13:56:26) 
sorunu tam olarak anlamadım. şimdi kullanıcı adını ve şifresini yazdı "giriş" e tıkladı şifre doğruysa index.php'yi açması gerekmiyor mu? şöyle yapalım.

login.php: bir form oluştur verileri checklogin.php ye yollasın.

checklogin.php: gelen verileri veritabanı ile karşılaştır doğruysa session oluştur.

yani= session_start();
$_SESSION['isim']=$formdan gelen kullanıcı adı.

header("Location:index.php");//index e yolla.

bi de index.php nin başına kod ekleyelim adam direk index.php yazarsa(oopps) uyarısı alsın.

index.php:

session_start();

if (!isset($_SESSION['isim'])){

header("Location:login.php");
}
else {
buralar sitenin kodları artık..

yanlış anlamış ve yanlış cevap vermiş olabilirim, sen bana sor tekrar.
  • karaden  (20.06.11 14:08:09) 
@karaden;

öncelikle cevap için teşekkürler.

şimdi benim hali hazırda bir login.php'm var. çalışıyor maşallah. nasıl çalıştığını da anlamadım ama bir şekilde çalışıyor. veritabanında kayıtlı kullanıcı adı ve şifreni girersen seni giriş sayfası olan form.php'ye yönlendiriyor.

lakin; form.php sadece ilk sayfa. devamı var. hemde index25.php'ye kadar. zira bir kullanıcı direkt http:/www.abc.com/index12.php yazdığında; login.php sayfası çıkıyor... burada problem yok. lakin şifresini ve kullanıcı adını doğru girdiğinde ilk sayfa olan form.php'ye gidiyor. kodlar yukarıda ayrıca. daha fazlasına ihtiyaç varsa; bana yardımcı olabilmen için elimden gelen yardımı yaparım :)
  • reducto  (20.06.11 16:07:14) 
örneklerle session vol I.

Kullanıcı login.php'de ve login olmak istiyor..

session_start();
//Once bi bakalim kullanıcı giriş yapmış mı ?

if(isset($_SESSION["user"]) && isset($_SESSION["pass"]) header("Location: index.php"); // Giriş yapanı index.php'ye yollamaca
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_SPECIAL_CHARS);
$pass = filter_input(INPUT_POST, 'pass', FILTER_SANITIZE_SPECIAL_CHARS);
$refer = filter_input(INPUT_GET, 'refer', FILTER_SANITIZE_SPECIAL_CHARS);

$mysql_username = "fitih"; //ornek mysql'den çekilmiş user.
if(kullanicivarmi($username)) {

if(varsasifresibumu($sifre)) {
//O zaman buyur kralından bi session.
$_SESSION["user"]=$username;
$_SESSION["pass"]=$pass;
//Sonra devam edelim form.php'ye yada nerden geldiysen oraya..

if($refer) {header("Location: $refer.php")}
else {header("Location: index.php")}

} else {
echo "Kullanıcı adı veya şifre yanlış";
}
} else {
echo "Kullanıcı adı veya şifre yanlış";
}

Sonra herhangi bi sayfa için session kontrolü yapalim:
//index.php

session_start();

if(!isset($_SESSION["user"]) || !isset($_SESSION["pass"])) {header("Location: login.php?refer=".$_SERVER["SCRIPT_FILENAME"]); //Giris yapmamis ve login'e yolladik ayrıca giriş yapıp tekrar bu sayfaya dönsün diye de refer atadık.}



olayın özü detayıyla bu kadar. Zor birşey değil mantığı da çok basit. Verdiğim incelemedeki scriptleri iyice bi anlamaya çalış.
  • Sir.Fitih  (20.06.11 18:40:01 ~ 18:41:33) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.